From 94851c8b82abb4b6ba1702a0d1427d9bdcfbbed1 Mon Sep 17 00:00:00 2001 From: CCTVcalc Date: Thu, 23 Apr 2026 08:51:14 +0300 Subject: [PATCH] before remake add chat window --- i18n-2.xlsm | Bin 83478 -> 90800 bytes index.html | 3 +- package-lock.json | 6347 +++++++++-------- package.json | 8 +- public/logos/GoogleDrive.webp | Bin 0 -> 9086 bytes public/logos/Telegram.png | Bin 0 -> 197144 bytes public/logos/YandexDisk.png | Bin 0 -> 124041 bytes public/telegram-web-app.js | 3352 +++++++++ src/App.vue | 65 +- .../Consent_to_Personal_Data_Processing_en.md | 109 +- .../Consent_to_Personal_Data_Processing_ru.md | 27 +- src/assets/docs/Privacy-Policy_en.md | 224 +- src/assets/docs/Privacy-Policy_ru.md | 64 +- src/assets/docs/Subscription_guide_en.md | 67 +- src/assets/docs/Subscription_guide_ru.md | 61 +- src/assets/docs/Terms_of_use_en.md | 241 +- src/assets/docs/Terms_of_use_ru.md | 126 +- src/boot/axios.ts | 3 +- src/boot/telegram-boot.ts | 5 +- src/components/BaseLogo.vue | 12 +- src/components/BaseLogoSvg.vue | 2 +- src/components/MarkdownViewver.vue | 14 +- src/components/accountHelper.vue | 15 +- src/components/companyBlock.vue | 2 +- src/components/meshBackground.vue | 106 - src/components/pnAccountBlockName.vue | 10 +- src/components/pnActionBar.vue | 56 +- src/components/pnAutoAvatar.vue | 3 - src/components/pnBottomSheetDialog.vue | 25 +- src/components/pnChatTypeItem.vue | 4 +- src/components/pnCutterLongText.vue | 3 - src/components/pnGlassBtn.vue | 1 + src/components/pnItemBtmDialog.vue | 2 +- src/components/pnListSelector.vue | 31 +- src/components/pnMagicOverlay.vue | 2 +- src/components/pnOnboardBtn.vue | 13 +- src/components/pnPageCard.vue | 25 +- src/components/pnPageWrapper.vue | 4 +- src/components/pnShadowScroll.vue | 165 +- src/components/pnSimpleScrollDialog.vue | 12 +- src/components/pnSmallDialog.vue | 13 +- src/components/pnTabs.vue | 3 +- src/components/pnUserListItemBody.vue | 3 - src/components/projectBlock.vue | 12 +- .../subscribe/pnSubscribePeriods.vue | 4 +- .../subscribe/subscribeChangeRenew.vue | 9 +- src/components/subscribe/subscribeUpgrade.vue | 4 +- src/components/userBlock.vue | 22 +- src/composables/useCopyToClipboard.ts | 23 + src/composables/useInputRules.ts | 6 +- src/composables/useNotify.ts | 22 - src/css/app.scss | 171 +- src/css/quasar.variables.scss | 47 +- src/i18n/en-US/index.ts | 2 +- src/i18n/ru-RU/index.ts | 2 +- src/layouts/MainLayout.vue | 7 - src/pages/AccountPage.vue | 12 +- src/pages/ChatPage.vue | 2 +- src/pages/CompanyEditPage.vue | 11 +- src/pages/CompanyMaskPage.vue | 6 +- src/pages/LoginPage.vue | 36 +- src/pages/ProjectPage.vue | 3 +- src/pages/ProjectsPage.vue | 28 +- src/pages/TelegramOnlyPage.vue | 1 - .../ChangeAuthMethodPage.vue} | 0 .../ChangeEmailPage.vue} | 29 +- .../ChangePasswordPage.vue} | 0 src/pages/account/SettingsPage.vue | 5 +- src/pages/account/StoragePage.vue | 298 + src/pages/account/SubscribePage.vue | 114 +- src/pages/account/TariffsInfoPage.vue | 4 +- .../ProjectPageBackup.vue} | 124 +- src/pages/project-page/ProjectPageChats.vue | 362 +- .../project-page/ProjectPageCompanies.vue | 46 +- src/pages/project-page/ProjectPageHeader.vue | 9 +- src/pages/project-page/ProjectPageUsers.vue | 9 +- src/router/index.ts | 10 +- src/router/routes.ts | 21 +- src/stores/auth.ts | 19 +- src/stores/chats.ts | 12 +- src/stores/projects.ts | 1 - src/stores/settings.ts | 2 +- src/stores/storages.ts | 29 + src/types/Env.ts | 17 + src/types/FileLink.ts | 4 +- src/types/Storage.ts | 14 + src/utils/chats.ts | 6 +- src/utils/colors.ts | 2 +- src/utils/files-functions.ts | 197 +- ~$i18n-2.xlsm | Bin 0 -> 165 bytes 90 files changed, 8833 insertions(+), 4159 deletions(-) create mode 100644 public/logos/GoogleDrive.webp create mode 100644 public/logos/Telegram.png create mode 100644 public/logos/YandexDisk.png create mode 100644 public/telegram-web-app.js delete mode 100644 src/components/meshBackground.vue create mode 100644 src/composables/useCopyToClipboard.ts delete mode 100644 src/composables/useNotify.ts rename src/pages/{AccountChangeAuthMethodPage.vue => account/ChangeAuthMethodPage.vue} (100%) rename src/pages/{AccountChangeEmailPage.vue => account/ChangeEmailPage.vue} (88%) rename src/pages/{AccountChangePasswordPage.vue => account/ChangePasswordPage.vue} (100%) create mode 100644 src/pages/account/StoragePage.vue rename src/pages/{account/BackupPage.vue => project-page/ProjectPageBackup.vue} (78%) create mode 100644 src/stores/storages.ts create mode 100644 src/types/Env.ts create mode 100644 src/types/Storage.ts create mode 100644 ~$i18n-2.xlsm diff --git a/i18n-2.xlsm b/i18n-2.xlsm index 36c86b3e7894b4f0047d4b34811ed9de290f2ecd..5da4b4e737fe7309ad3ac055dc9747694cb80986 100644 GIT binary patch delta 82367 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
Av0dFfGAy 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 - + + diff --git a/package-lock.json b/package-lock.json index d99e204..41b92f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,12 +10,12 @@ "hasInstallScript": true, "dependencies": { "@quasar/cli": "^2.5.0", - "@quasar/extras": "^1.17.0", - "@quasar/vite-plugin": "^1.10.0", + "@quasar/extras": "^1.18.0", + "@quasar/vite-plugin": "^1.11.0", "axios": "^1.2.1", "browser-image-compression": "^2.0.2", "pinia": "^2.0.11", - "quasar": "^2.18.6", + "quasar": "^2.19.3", "sass-embedded": "^1.97.2", "vue": "^3.5.27", "vue-i18n": "^9.2.2", @@ -24,7 +24,7 @@ "devDependencies": { "@eslint/js": "^9.14.0", "@intlify/unplugin-vue-i18n": "^2.0.0", - "@quasar/app-vite": "^2.4.0", + "@quasar/app-vite": "^2.6.0", "@quasar/quasar-app-extension-qmarkdown": "^2.0.5", "@twa-dev/types": "^8.0.2", "@types/node": "^20.17.30", @@ -47,15 +47,15 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" @@ -80,12 +80,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", - "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "license": "MIT", "dependencies": { - "@babel/types": "^7.28.6" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -95,9 +95,9 @@ } }, "node_modules/@babel/types": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", - "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", @@ -108,15 +108,46 @@ } }, "node_modules/@bufbuild/protobuf": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.10.2.tgz", - "integrity": "sha512-uFsRXwIGyu+r6AMdz+XijIIZJYpoWeYzILt5yZ2d3mCjQrWUTVpVD9WL/jZAbvp+Ed04rOhrsk7FiTcEDseB5A==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.11.0.tgz", + "integrity": "sha512-sBXGT13cpmPR5BMgHE6UEEfEaShh5Ror6rfN3yEK5si7QVrtZg8LEPQb0VVhiLRUslD2yLnXtnRzG035J/mZXQ==", "license": "(Apache-2.0 AND BSD-3-Clause)" }, + "node_modules/@emnapi/core": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.2.tgz", + "integrity": "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.2.tgz", + "integrity": "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz", - "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", + "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", "cpu": [ "ppc64" ], @@ -130,9 +161,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz", - "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", "cpu": [ "arm" ], @@ -146,9 +177,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz", - "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", "cpu": [ "arm64" ], @@ -162,9 +193,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz", - "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", "cpu": [ "x64" ], @@ -178,9 +209,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz", - "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", + "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", "cpu": [ "arm64" ], @@ -194,9 +225,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz", - "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", "cpu": [ "x64" ], @@ -210,9 +241,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz", - "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", "cpu": [ "arm64" ], @@ -226,9 +257,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz", - "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", "cpu": [ "x64" ], @@ -242,9 +273,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz", - "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", "cpu": [ "arm" ], @@ -258,9 +289,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz", - "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", "cpu": [ "arm64" ], @@ -274,9 +305,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz", - "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", "cpu": [ "ia32" ], @@ -290,9 +321,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz", - "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", "cpu": [ "loong64" ], @@ -306,9 +337,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz", - "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", "cpu": [ "mips64el" ], @@ -322,9 +353,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz", - "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", "cpu": [ "ppc64" ], @@ -338,9 +369,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz", - "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", "cpu": [ "riscv64" ], @@ -354,9 +385,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz", - "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", "cpu": [ "s390x" ], @@ -370,9 +401,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz", - "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", "cpu": [ "x64" ], @@ -386,9 +417,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz", - "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", "cpu": [ "arm64" ], @@ -402,9 +433,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz", - "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", "cpu": [ "x64" ], @@ -418,9 +449,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz", - "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", "cpu": [ "arm64" ], @@ -434,9 +465,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz", - "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", "cpu": [ "x64" ], @@ -450,13 +481,12 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", - "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -467,9 +497,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz", - "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", "cpu": [ "x64" ], @@ -483,9 +513,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz", - "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", "cpu": [ "arm64" ], @@ -499,9 +529,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz", - "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", "cpu": [ "ia32" ], @@ -515,9 +545,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz", - "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", "cpu": [ "x64" ], @@ -550,9 +580,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", "engines": { @@ -560,24 +590,31 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", - "minimatch": "^3.1.2" + "minimatch": "^3.1.5" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/config-array/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", "dependencies": { @@ -586,9 +623,9 @@ } }, "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -625,20 +662,20 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", - "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "^6.12.4", + "ajv": "^6.14.0", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", - "minimatch": "^3.1.2", + "minimatch": "^3.1.5", "strip-json-comments": "^3.1.1" }, "engines": { @@ -648,10 +685,17 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", "dependencies": { @@ -673,9 +717,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -686,9 +730,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.39.2", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", - "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", "dev": true, "license": "MIT", "engines": { @@ -733,33 +777,19 @@ } }, "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" + "@humanwhocodes/retry": "^0.4.0" }, "engines": { "node": ">=18.18.0" } }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -788,18 +818,146 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@inquirer/ansi": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.5.tgz", + "integrity": "sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + } + }, + "node_modules/@inquirer/checkbox": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.1.3.tgz", + "integrity": "sha512-+G7I8CT+EHv/hasNfUl3P37DVoMoZfpA+2FXmM54dA8MxYle1YqucxbacxHalw1iAFSdKNEDTGNV7F+j1Ldqcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.5", + "@inquirer/core": "^11.1.8", + "@inquirer/figures": "^2.0.5", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/confirm": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.11.tgz", + "integrity": "sha512-pTpHjg0iEIRMYV/7oCZUMf27/383E6Wyhfc/MY+AVQGEoUobffIYWOK9YLP2XFRGz/9i6WlTQh1CkFVIo2Y7XA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.8", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "11.1.8", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.1.8.tgz", + "integrity": "sha512-/u+yJk2pOKNDOh1ZgdUH2RQaRx6OOH4I0uwL95qPvTFTIL38YBsuSC4r1yXBB3Q6JvNqFFc202gk0Ew79rrcjA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.5", + "@inquirer/figures": "^2.0.5", + "@inquirer/type": "^4.0.5", + "cli-width": "^4.1.0", + "fast-wrap-ansi": "^0.2.0", + "mute-stream": "^3.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/editor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.1.0.tgz", + "integrity": "sha512-6wlkYl65Qfayy48gPCfU4D7li6KCAGN79mLXa/tYHZH99OfZ820yY+HA+DgE88r8YwwgeuY6PQgNqMeK6LuMmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.8", + "@inquirer/external-editor": "^3.0.0", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/expand": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.0.12.tgz", + "integrity": "sha512-vOfrB33b7YIZfDauXS8vNNz2Z86FozTZLIt7e+7/dCaPJ1RXZsHCuI9TlcERzEUq57vkM+UdnBgxP0rFd23JYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.8", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "node_modules/@inquirer/external-editor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", - "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-3.0.0.tgz", + "integrity": "sha512-lDSwMgg+M5rq6JKBYaJwSX6T9e/HK2qqZ1oxmOwn4AQoJE5D+7TumsxLGC02PWS//rkIVqbZv3XA3ejsc9FYvg==", "dev": true, "license": "MIT", "dependencies": { "chardet": "^2.1.1", - "iconv-lite": "^0.7.0" + "iconv-lite": "^0.7.2" }, "engines": { - "node": ">=18" + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" }, "peerDependencies": { "@types/node": ">=18" @@ -828,13 +986,197 @@ } }, "node_modules/@inquirer/figures": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.9.tgz", - "integrity": "sha512-BXvGj0ehzrngHTPTDqUoDT3NXL8U0RxUk2zJm2A66RhCEIWdtU1v6GuUqNAgArW4PQ9CinqIWyHdQgdwOj06zQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.5.tgz", + "integrity": "sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + } + }, + "node_modules/@inquirer/input": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.0.11.tgz", + "integrity": "sha512-twUWidn4ocPO8qi6fRM7tNWt7W1FOnOZqQ+/+PsfLUacMR5rFLDPK9ql0nBPwxi0oELbo8T5NhRs8B2+qQEqFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.8", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/number": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.0.11.tgz", + "integrity": "sha512-Vscmim9TCksQsfjPtka/JwPUcbLhqWYrgfPf1cHrCm24X/F2joFwnageD50yMKsaX14oNGOyKf/RNXAFkNjWpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.8", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/password": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.0.11.tgz", + "integrity": "sha512-9KZFeRaNHIcejtPb0wN4ddFc7EvobVoAFa049eS3LrDZFxI8O7xUXiITEOinBzkZFAIwY5V4yzQae/QfO9cbbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.5", + "@inquirer/core": "^11.1.8", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/prompts": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.4.1.tgz", + "integrity": "sha512-AH5xPQ997K7e0F0vulPlteIHke2awMkFi8F0dBemrDfmvtPmHJo82mdHbONC4F/t8d1NHwrbI5cGVI+RbLWdoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^5.1.3", + "@inquirer/confirm": "^6.0.11", + "@inquirer/editor": "^5.1.0", + "@inquirer/expand": "^5.0.12", + "@inquirer/input": "^5.0.11", + "@inquirer/number": "^4.0.11", + "@inquirer/password": "^5.0.11", + "@inquirer/rawlist": "^5.2.7", + "@inquirer/search": "^4.1.7", + "@inquirer/select": "^5.1.3" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/rawlist": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.2.7.tgz", + "integrity": "sha512-AqRMiD9+uE1lskDPrdqHwrV/EUmxKEBLX44SR7uxK3vD2413AmVfE5EQaPeNzYf5Pq5SitHJDYUFVF0poIr09w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.8", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/search": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.1.7.tgz", + "integrity": "sha512-1y7+0N65AWk5RdlXH/Kn13txf3IjIQ7OEfhCEkDTU+h5wKMLq8DUF3P6z+/kLSxDGDtQT1dRBWEUC3o/VvImsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.8", + "@inquirer/figures": "^2.0.5", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/select": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.1.3.tgz", + "integrity": "sha512-zYyqWgGQi3NhBcNq4Isc5rB3oEdQEh1Q/EcAnOW0FK4MpnXWkvSBYgA4cYrTM4A9UB573omouZbnL9JJ74Mq3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.5", + "@inquirer/core": "^11.1.8", + "@inquirer/figures": "^2.0.5", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/type": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.5.tgz", + "integrity": "sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@intlify/bundle-utils": { @@ -969,104 +1311,15 @@ "node": ">=12" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "devOptional": true, "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { @@ -1079,20 +1332,10 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "devOptional": true, "license": "MIT", "dependencies": { @@ -1107,9 +1350,9 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "devOptional": true, "license": "MIT", "dependencies": { @@ -1117,6 +1360,37 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.3.tgz", + "integrity": "sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, + "node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1155,10 +1429,19 @@ "node": ">= 8" } }, + "node_modules/@oxc-project/types": { + "version": "0.124.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.124.0.tgz", + "integrity": "sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, "node_modules/@parcel/watcher": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.4.tgz", - "integrity": "sha512-WYa2tUVV5HiArWPB3ydlOc4R2ivq0IDrlqhMi3l7mVsFEXNcTfxYFPIHXHXIh/ca/y/V5N4E1zecyxdIBjYnkQ==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", + "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", "hasInstallScript": true, "license": "MIT", "optional": true, @@ -1176,25 +1459,25 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.4", - "@parcel/watcher-darwin-arm64": "2.5.4", - "@parcel/watcher-darwin-x64": "2.5.4", - "@parcel/watcher-freebsd-x64": "2.5.4", - "@parcel/watcher-linux-arm-glibc": "2.5.4", - "@parcel/watcher-linux-arm-musl": "2.5.4", - "@parcel/watcher-linux-arm64-glibc": "2.5.4", - "@parcel/watcher-linux-arm64-musl": "2.5.4", - "@parcel/watcher-linux-x64-glibc": "2.5.4", - "@parcel/watcher-linux-x64-musl": "2.5.4", - "@parcel/watcher-win32-arm64": "2.5.4", - "@parcel/watcher-win32-ia32": "2.5.4", - "@parcel/watcher-win32-x64": "2.5.4" + "@parcel/watcher-android-arm64": "2.5.6", + "@parcel/watcher-darwin-arm64": "2.5.6", + "@parcel/watcher-darwin-x64": "2.5.6", + "@parcel/watcher-freebsd-x64": "2.5.6", + "@parcel/watcher-linux-arm-glibc": "2.5.6", + "@parcel/watcher-linux-arm-musl": "2.5.6", + "@parcel/watcher-linux-arm64-glibc": "2.5.6", + "@parcel/watcher-linux-arm64-musl": "2.5.6", + "@parcel/watcher-linux-x64-glibc": "2.5.6", + "@parcel/watcher-linux-x64-musl": "2.5.6", + "@parcel/watcher-win32-arm64": "2.5.6", + "@parcel/watcher-win32-ia32": "2.5.6", + "@parcel/watcher-win32-x64": "2.5.6" } }, "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.4.tgz", - "integrity": "sha512-hoh0vx4v+b3BNI7Cjoy2/B0ARqcwVNrzN/n7DLq9ZB4I3lrsvhrkCViJyfTj/Qi5xM9YFiH4AmHGK6pgH1ss7g==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", + "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", "cpu": [ "arm64" ], @@ -1212,9 +1495,9 @@ } }, "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.4.tgz", - "integrity": "sha512-kphKy377pZiWpAOyTgQYPE5/XEKVMaj6VUjKT5VkNyUJlr2qZAn8gIc7CPzx+kbhvqHDT9d7EqdOqRXT6vk0zw==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", + "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", "cpu": [ "arm64" ], @@ -1232,9 +1515,9 @@ } }, "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.4.tgz", - "integrity": "sha512-UKaQFhCtNJW1A9YyVz3Ju7ydf6QgrpNQfRZ35wNKUhTQ3dxJ/3MULXN5JN/0Z80V/KUBDGa3RZaKq1EQT2a2gg==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", + "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", "cpu": [ "x64" ], @@ -1252,9 +1535,9 @@ } }, "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.4.tgz", - "integrity": "sha512-Dib0Wv3Ow/m2/ttvLdeI2DBXloO7t3Z0oCp4bAb2aqyqOjKPPGrg10pMJJAQ7tt8P4V2rwYwywkDhUia/FgS+Q==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", + "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", "cpu": [ "x64" ], @@ -1272,9 +1555,9 @@ } }, "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.4.tgz", - "integrity": "sha512-I5Vb769pdf7Q7Sf4KNy8Pogl/URRCKu9ImMmnVKYayhynuyGYMzuI4UOWnegQNa2sGpsPSbzDsqbHNMyeyPCgw==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", + "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", "cpu": [ "arm" ], @@ -1292,9 +1575,9 @@ } }, "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.4.tgz", - "integrity": "sha512-kGO8RPvVrcAotV4QcWh8kZuHr9bXi9a3bSZw7kFarYR0+fGliU7hd/zevhjw8fnvIKG3J9EO5G6sXNGCSNMYPQ==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", + "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", "cpu": [ "arm" ], @@ -1312,9 +1595,9 @@ } }, "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.4.tgz", - "integrity": "sha512-KU75aooXhqGFY2W5/p8DYYHt4hrjHZod8AhcGAmhzPn/etTa+lYCDB2b1sJy3sWJ8ahFVTdy+EbqSBvMx3iFlw==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", + "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", "cpu": [ "arm64" ], @@ -1332,9 +1615,9 @@ } }, "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.4.tgz", - "integrity": "sha512-Qx8uNiIekVutnzbVdrgSanM+cbpDD3boB1f8vMtnuG5Zau4/bdDbXyKwIn0ToqFhIuob73bcxV9NwRm04/hzHQ==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", + "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", "cpu": [ "arm64" ], @@ -1352,9 +1635,9 @@ } }, "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.4.tgz", - "integrity": "sha512-UYBQvhYmgAv61LNUn24qGQdjtycFBKSK3EXr72DbJqX9aaLbtCOO8+1SkKhD/GNiJ97ExgcHBrukcYhVjrnogA==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", + "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", "cpu": [ "x64" ], @@ -1372,9 +1655,9 @@ } }, "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.4.tgz", - "integrity": "sha512-YoRWCVgxv8akZrMhdyVi6/TyoeeMkQ0PGGOf2E4omODrvd1wxniXP+DBynKoHryStks7l+fDAMUBRzqNHrVOpg==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", + "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", "cpu": [ "x64" ], @@ -1392,9 +1675,9 @@ } }, "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.4.tgz", - "integrity": "sha512-iby+D/YNXWkiQNYcIhg8P5hSjzXEHaQrk2SLrWOUD7VeC4Ohu0WQvmV+HDJokZVJ2UjJ4AGXW3bx7Lls9Ln4TQ==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", + "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", "cpu": [ "arm64" ], @@ -1412,9 +1695,9 @@ } }, "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.4.tgz", - "integrity": "sha512-vQN+KIReG0a2ZDpVv8cgddlf67J8hk1WfZMMP7sMeZmJRSmEax5xNDNWKdgqSe2brOKTQQAs3aCCUal2qBHAyg==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", + "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", "cpu": [ "ia32" ], @@ -1432,9 +1715,9 @@ } }, "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.4.tgz", - "integrity": "sha512-3A6efb6BOKwyw7yk9ro2vus2YTt2nvcd56AuzxdMiVOxL9umDyN5PKkKfZ/gZ9row41SjVmTVQNWQhaRRGpOKw==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", + "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", "cpu": [ "x64" ], @@ -1451,6 +1734,165 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/@peculiar/asn1-cms": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.6.1.tgz", + "integrity": "sha512-vdG4fBF6Lkirkcl53q6eOdn3XYKt+kJTG59edgRZORlg/3atWWEReRCx5rYE1ZzTTX6vLK5zDMjHh7vbrcXGtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "@peculiar/asn1-x509-attr": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-csr": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.6.1.tgz", + "integrity": "sha512-WRWnKfIocHyzFYQTka8O/tXCiBquAPSrRjXbOkHbO4qdmS6loffCEGs+rby6WxxGdJCuunnhS2duHURhjyio6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-ecc": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.6.1.tgz", + "integrity": "sha512-+Vqw8WFxrtDIN5ehUdvlN2m73exS2JVG0UAyfVB31gIfor3zWEAQPD+K9ydCxaj3MLen9k0JhKpu9LqviuCE1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pfx": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.6.1.tgz", + "integrity": "sha512-nB5jVQy3MAAWvq0KY0R2JUZG8bO/bTLpnwyOzXyEh/e54ynGTatAR+csOnXkkVD9AFZ2uL8Z7EV918+qB1qDvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.6.1", + "@peculiar/asn1-pkcs8": "^2.6.1", + "@peculiar/asn1-rsa": "^2.6.1", + "@peculiar/asn1-schema": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pkcs8": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.6.1.tgz", + "integrity": "sha512-JB5iQ9Izn5yGMw3ZG4Nw3Xn/hb/G38GYF3lf7WmJb8JZUydhVGEjK/ZlFSWhnlB7K/4oqEs8HnfFIKklhR58Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pkcs9": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.6.1.tgz", + "integrity": "sha512-5EV8nZoMSxeWmcxWmmcolg22ojZRgJg+Y9MX2fnE2bGRo5KQLqV5IL9kdSQDZxlHz95tHvIq9F//bvL1OeNILw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.6.1", + "@peculiar/asn1-pfx": "^2.6.1", + "@peculiar/asn1-pkcs8": "^2.6.1", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "@peculiar/asn1-x509-attr": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-rsa": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.6.1.tgz", + "integrity": "sha512-1nVMEh46SElUt5CB3RUTV4EG/z7iYc7EoaDY5ECwganibQPkZ/Y2eMsTKB/LeyrUJ+W/tKoD9WUqIy8vB+CEdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-schema": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.6.0.tgz", + "integrity": "sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-x509": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.6.1.tgz", + "integrity": "sha512-O9jT5F1A2+t3r7C4VT7LYGXqkGLK7Kj1xFpz7U0isPrubwU5PbDoyYtx6MiGst29yq7pXN5vZbQFKRCP+lLZlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-x509-attr": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.6.1.tgz", + "integrity": "sha512-tlW6cxoHwgcQghnJwv3YS+9OO1737zgPogZ+CgWRUK4roEwIPzRH4JEiG770xe5HX2ATfCpmX60gurfWIF9dcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/x509": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-1.14.3.tgz", + "integrity": "sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-csr": "^2.6.0", + "@peculiar/asn1-ecc": "^2.6.0", + "@peculiar/asn1-pkcs9": "^2.6.0", + "@peculiar/asn1-rsa": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "pvtsutils": "^1.3.6", + "reflect-metadata": "^0.2.2", + "tslib": "^2.8.1", + "tsyringe": "^4.10.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -1490,9 +1932,9 @@ "license": "ISC" }, "node_modules/@pnpm/npm-conf": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", - "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-3.0.2.tgz", + "integrity": "sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==", "license": "MIT", "dependencies": { "@pnpm/config.env-replace": "^1.1.0", @@ -1504,55 +1946,55 @@ } }, "node_modules/@quasar/app-vite": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@quasar/app-vite/-/app-vite-2.4.0.tgz", - "integrity": "sha512-nfdcfERQ1bdUFsgXfYexgUAGBrsRHuzlik5p58cKGpYXiwUZZN6mJhN8VxU/zGT0GYHHiNIZlb67N+R52NYd6Q==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@quasar/app-vite/-/app-vite-2.6.0.tgz", + "integrity": "sha512-531nyqZLJOikKwaCGaN5jLDC37ieX9MBdKxHHxhuII9cfo/GG1pJLISoCVMNK7vpa+BgmSFpKgNe7uU5EyDCdg==", "dev": true, "license": "MIT", "dependencies": { - "@quasar/render-ssr-error": "^1.0.3", - "@quasar/ssl-certificate": "^1.0.0", - "@quasar/vite-plugin": "^1.10.0", - "@types/chrome": "^0.0.262", + "@quasar/render-ssr-error": "1.0.4", + "@quasar/ssl-certificate": "2.0.0", + "@quasar/vite-plugin": "^1.11.0", + "@types/chrome": "^0.1.38", "@types/compression": "^1.7.5", "@types/cordova": "^11.0.3", - "@types/express": "^4.17.21", - "@vitejs/plugin-vue": "^6.0.1", + "@types/express": "^5.0.6", + "@vitejs/plugin-vue": "^6.0.5", "archiver": "^7.0.1", - "chokidar": "^3.6.0", - "ci-info": "^4.0.0", + "chokidar": "^5.0.0", + "ci-info": "^4.4.0", "compression": "^1.7.5", - "confbox": "^0.1.8", + "confbox": "^0.2.4", "cross-spawn": "^7.0.6", - "dot-prop": "9.0.0", - "dotenv": "^16.4.5", - "dotenv-expand": "^11.0.6", + "dot-prop": "10.1.0", + "dotenv": "^17.3.1", + "dotenv-expand": "^12.0.3", "elementtree": "0.1.7", - "esbuild": "^0.25.0", - "express": "^4.21.2", - "fs-extra": "^11.2.0", + "esbuild": "^0.27.4", + "express": "^4.0.0", + "fs-extra": "^11.3.4", "html-minifier-terser": "^7.2.0", - "inquirer": "^9.3.7", - "isbinaryfile": "^5.0.4", + "inquirer": "^13.3.2", + "isbinaryfile": "^5.0.2", "kolorist": "^1.8.0", - "lodash": "^4.17.21", + "lodash": "^4.18.1", "minimist": "^1.2.8", - "mlly": "^1.7.4", - "open": "^10.1.0", - "rollup-plugin-visualizer": "^5.13.1", - "sass-embedded": "^1.83.0", - "semver": "^7.6.3", - "serialize-javascript": "^6.0.2", + "mlly": "^1.8.2", + "open": "^11.0.0", + "rollup-plugin-visualizer": "^7.0.1", + "sass-embedded": "^1.98.0", + "semver": "^7.7.4", + "serialize-javascript": "^7.0.4", "tinyglobby": "^0.2.10", - "ts-essentials": "^9.4.2", - "vite": "^7.0.3", + "ts-essentials": "^10.1.1", + "vite": "^8.0.1", "webpack-merge": "^6.0.1" }, "bin": { "quasar": "bin/quasar.js" }, "engines": { - "node": "^30 || ^28 || ^26 || ^24 || ^22 || ^20", + "node": "^30 || ^28 || ^26 || ^24 || ^22", "npm": ">= 6.14.12", "yarn": ">= 1.17.3" }, @@ -1562,18 +2004,22 @@ }, "peerDependencies": { "@electron/packager": ">= 18", + "@quasar/extras": "^1.17.0", "electron-builder": ">= 22", "pinia": "^2.0.0 || ^3.0.0", "quasar": "^2.16.0", "typescript": ">= 5.4", "vue": "^3.2.29", - "vue-router": "^4.0.12", + "vue-router": "^4.0.12 || ^5.0.0", "workbox-build": ">= 6" }, "peerDependenciesMeta": { "@electron/packager": { "optional": true }, + "@quasar/extras": { + "optional": true + }, "electron-builder": { "optional": true }, @@ -1591,548 +2037,6 @@ } } }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/aix-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", - "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/android-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", - "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/android-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", - "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/android-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", - "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", - "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/darwin-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", - "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", - "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", - "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/linux-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", - "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/linux-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", - "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/linux-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", - "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/linux-loong64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", - "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", - "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", - "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", - "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/linux-s390x": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", - "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/linux-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", - "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", - "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", - "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", - "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", - "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/sunos-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", - "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/win32-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", - "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/win32-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", - "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/@esbuild/win32-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", - "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@quasar/app-vite/node_modules/vite": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", - "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.27.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "lightningcss": "^1.21.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/@quasar/app-vite/node_modules/vite/node_modules/esbuild": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", - "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.2", - "@esbuild/android-arm": "0.27.2", - "@esbuild/android-arm64": "0.27.2", - "@esbuild/android-x64": "0.27.2", - "@esbuild/darwin-arm64": "0.27.2", - "@esbuild/darwin-x64": "0.27.2", - "@esbuild/freebsd-arm64": "0.27.2", - "@esbuild/freebsd-x64": "0.27.2", - "@esbuild/linux-arm": "0.27.2", - "@esbuild/linux-arm64": "0.27.2", - "@esbuild/linux-ia32": "0.27.2", - "@esbuild/linux-loong64": "0.27.2", - "@esbuild/linux-mips64el": "0.27.2", - "@esbuild/linux-ppc64": "0.27.2", - "@esbuild/linux-riscv64": "0.27.2", - "@esbuild/linux-s390x": "0.27.2", - "@esbuild/linux-x64": "0.27.2", - "@esbuild/netbsd-arm64": "0.27.2", - "@esbuild/netbsd-x64": "0.27.2", - "@esbuild/openbsd-arm64": "0.27.2", - "@esbuild/openbsd-x64": "0.27.2", - "@esbuild/openharmony-arm64": "0.27.2", - "@esbuild/sunos-x64": "0.27.2", - "@esbuild/win32-arm64": "0.27.2", - "@esbuild/win32-ia32": "0.27.2", - "@esbuild/win32-x64": "0.27.2" - } - }, "node_modules/@quasar/cli": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@quasar/cli/-/cli-2.5.0.tgz", @@ -2167,6 +2071,76 @@ "url": "https://donate.quasar.dev" } }, + "node_modules/@quasar/cli/node_modules/@quasar/ssl-certificate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@quasar/ssl-certificate/-/ssl-certificate-1.0.0.tgz", + "integrity": "sha512-RhZF7rO76T7Ywer1/5lCe7xl3CIiXxSAH1xgwOj0wcHTityDxJqIN/5YIj6BxMvlFw8XkJDoB1udEQafoVFA4g==", + "license": "MIT", + "dependencies": { + "fs-extra": "^11.1.1", + "selfsigned": "^2.1.1" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "type": "github", + "url": "https://donate.quasar.dev" + } + }, + "node_modules/@quasar/cli/node_modules/@types/express": { + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "^1" + } + }, + "node_modules/@quasar/cli/node_modules/@types/express-serve-static-core": { + "version": "4.19.8", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@quasar/cli/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@quasar/cli/node_modules/@types/serve-static": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" + } + }, "node_modules/@quasar/cli/node_modules/bundle-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", @@ -2216,6 +2190,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@quasar/cli/node_modules/http-proxy-middleware": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, "node_modules/@quasar/cli/node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -2252,6 +2250,30 @@ "node": ">=8" } }, + "node_modules/@quasar/cli/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@quasar/cli/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@quasar/cli/node_modules/open": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", @@ -2308,6 +2330,19 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/@quasar/cli/node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "license": "MIT", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@quasar/cli/node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -2324,9 +2359,9 @@ } }, "node_modules/@quasar/extras": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@quasar/extras/-/extras-1.17.0.tgz", - "integrity": "sha512-KqAHdSJfIDauiR1nJ8rqHWT0diqD0QradZKoVIZJAilHAvgwyPIY7MbyR2z4RIMkUIMUSqBZcbshMpEw+9A30w==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/@quasar/extras/-/extras-1.18.0.tgz", + "integrity": "sha512-hIqqw56sKGujWA3sTIT1ItlVglD+eA3hAWDVxY4qjA4/BSgYJDHk6ymJCbsDPIJFT7DJsG/F3A67vELXbBAIvA==", "license": "MIT", "funding": { "type": "github", @@ -2393,9 +2428,9 @@ } }, "node_modules/@quasar/render-ssr-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@quasar/render-ssr-error/-/render-ssr-error-1.0.3.tgz", - "integrity": "sha512-A8RF99q6/sOSe1Ighnh5syEIbliD3qUYEJd2HyfFyBPSMF+WYGXon5dmzg4nUoK662NgOggInevkDyBDJcZugg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@quasar/render-ssr-error/-/render-ssr-error-1.0.4.tgz", + "integrity": "sha512-pkP0uvhLHu2LWk9NbMwBjs37j1pdImXDz5hS9SX14QSqKZKepsfbre7Z28/GTwL6CrHcr+k9UTYorbpQGTI7EA==", "dev": true, "license": "MIT", "dependencies": { @@ -2410,13 +2445,14 @@ } }, "node_modules/@quasar/ssl-certificate": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@quasar/ssl-certificate/-/ssl-certificate-1.0.0.tgz", - "integrity": "sha512-RhZF7rO76T7Ywer1/5lCe7xl3CIiXxSAH1xgwOj0wcHTityDxJqIN/5YIj6BxMvlFw8XkJDoB1udEQafoVFA4g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@quasar/ssl-certificate/-/ssl-certificate-2.0.0.tgz", + "integrity": "sha512-serxn3NXqolzYLqHeBy9s8hAF0IRmRew361U2jddLFUAlatDEW2XRkINg9ZFtCTFz/SVr9/ZSFpG6ItAk6Cd6w==", + "dev": true, "license": "MIT", "dependencies": { - "fs-extra": "^11.1.1", - "selfsigned": "^2.1.1" + "fs-extra": "^11.2.0", + "selfsigned": "^5.5.0" }, "engines": { "node": ">= 16" @@ -2427,9 +2463,9 @@ } }, "node_modules/@quasar/vite-plugin": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@quasar/vite-plugin/-/vite-plugin-1.10.0.tgz", - "integrity": "sha512-4PJoTclz4ZjAfyqe0+hlkKcFJt0e2NX3Ac3hy8ILqUPdtZ24nCo5/xEHvTxZGBQMKRPwwePbO8CVs4n9EKJEug==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@quasar/vite-plugin/-/vite-plugin-1.11.0.tgz", + "integrity": "sha512-54wCsvuxyMvzrG9t0HauMRL+luA5LEf8yXFPnMkA6q9Hne7k6stw2p8pgFOIPbVFJCuGoYw5VInO5pbpcsI7Ew==", "license": "MIT", "engines": { "node": ">=20" @@ -2441,20 +2477,262 @@ "peerDependencies": { "@vitejs/plugin-vue": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", "quasar": "^2.16.0", - "vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", "vue": "^3.0.0" } }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.15.tgz", + "integrity": "sha512-YYe6aWruPZDtHNpwu7+qAHEMbQ/yRl6atqb/AhznLTnD3UY99Q1jE7ihLSahNWkF4EqRPVC4SiR4O0UkLK02tA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.15.tgz", + "integrity": "sha512-oArR/ig8wNTPYsXL+Mzhs0oxhxfuHRfG7Ikw7jXsw8mYOtk71W0OkF2VEVh699pdmzjPQsTjlD1JIOoHkLP1Fg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.15.tgz", + "integrity": "sha512-YzeVqOqjPYvUbJSWJ4EDL8ahbmsIXQpgL3JVipmN+MX0XnXMeWomLN3Fb+nwCmP/jfyqte5I3XRSm7OfQrbyxw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.15.tgz", + "integrity": "sha512-9Erhx956jeQ0nNTyif1+QWAXDRD38ZNjr//bSHrt6wDwB+QkAfl2q6Mn1k6OBPerznjRmbM10lgRb1Pli4xZPw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.15.tgz", + "integrity": "sha512-cVwk0w8QbZJGTnP/AHQBs5yNwmpgGYStL88t4UIaqcvYJWBfS0s3oqVLZPwsPU6M0zlW4GqjP0Zq5MnAGwFeGA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.15.tgz", + "integrity": "sha512-eBZ/u8iAK9SoHGanqe/jrPnY0JvBN6iXbVOsbO38mbz+ZJsaobExAm1Iu+rxa4S1l2FjG0qEZn4Rc6X8n+9M+w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.15.tgz", + "integrity": "sha512-ZvRYMGrAklV9PEkgt4LQM6MjQX2P58HPAuecwYObY2DhS2t35R0I810bKi0wmaYORt6m/2Sm+Z+nFgb0WhXNcQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.15.tgz", + "integrity": "sha512-VDpgGBzgfg5hLg+uBpCLoFG5kVvEyafmfxGUV0UHLcL5irxAK7PKNeC2MwClgk6ZAiNhmo9FLhRYgvMmedLtnQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.15.tgz", + "integrity": "sha512-y1uXY3qQWCzcPgRJATPSOUP4tCemh4uBdY7e3EZbVwCJTY3gLJWnQABgeUetvED+bt1FQ01OeZwvhLS2bpNrAQ==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.15.tgz", + "integrity": "sha512-023bTPBod7J3Y/4fzAN6QtpkSABR0rigtrwaP+qSEabUh5zf6ELr9Nc7GujaROuPY3uwdSIXWrvhn1KxOvurWA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.15.tgz", + "integrity": "sha512-witB2O0/hU4CgfOOKUoeFgQ4GktPi1eEbAhaLAIpgD6+ZnhcPkUtPsoKKHRzmOoWPZue46IThdSgdo4XneOLYw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.15.tgz", + "integrity": "sha512-UCL68NJ0Ud5zRipXZE9dF5PmirzJE4E4BCIOOssEnM7wLDsxjc6Qb0sGDxTNRTP53I6MZpygyCpY8Aa8sPfKPg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.15.tgz", + "integrity": "sha512-ApLruZq/ig+nhaE7OJm4lDjayUnOHVUa77zGeqnqZ9pn0ovdVbbNPerVibLXDmWeUZXjIYIT8V3xkT58Rm9u5Q==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.9.2", + "@emnapi/runtime": "1.9.2", + "@napi-rs/wasm-runtime": "^1.1.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.15.tgz", + "integrity": "sha512-KmoUoU7HnN+Si5YWJigfTws1jz1bKBYDQKdbLspz0UaqjjFkddHsqorgiW1mxcAj88lYUE6NC/zJNwT+SloqtA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.15.tgz", + "integrity": "sha512-3P2A8L+x75qavWLe/Dll3EYBJLQmtkJN8rfh+U/eR3MqMgL/h98PhYI+JFfXuDPgPeCB7iZAKiqii5vqOvnA0g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.53.tgz", - "integrity": "sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==", + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.2.tgz", + "integrity": "sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==", "license": "MIT" }, "node_modules/@rollup/pluginutils": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", - "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2474,331 +2752,6 @@ } } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.55.3.tgz", - "integrity": "sha512-qyX8+93kK/7R5BEXPC2PjUt0+fS/VO2BVHjEHyIEWiYn88rcRBHmdLgoJjktBltgAf+NY7RfCGB1SoyKS/p9kg==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.55.3.tgz", - "integrity": "sha512-6sHrL42bjt5dHQzJ12Q4vMKfN+kUnZ0atHHnv4V0Wd9JMTk7FDzSY35+7qbz3ypQYMBPANbpGK7JpnWNnhGt8g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.55.3.tgz", - "integrity": "sha512-1ht2SpGIjEl2igJ9AbNpPIKzb1B5goXOcmtD0RFxnwNuMxqkR6AUaaErZz+4o+FKmzxcSNBOLrzsICZVNYa1Rw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.55.3.tgz", - "integrity": "sha512-FYZ4iVunXxtT+CZqQoPVwPhH7549e/Gy7PIRRtq4t5f/vt54pX6eG9ebttRH6QSH7r/zxAFA4EZGlQ0h0FvXiA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.55.3.tgz", - "integrity": "sha512-M/mwDCJ4wLsIgyxv2Lj7Len+UMHd4zAXu4GQ2UaCdksStglWhP61U3uowkaYBQBhVoNpwx5Hputo8eSqM7K82Q==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.55.3.tgz", - "integrity": "sha512-5jZT2c7jBCrMegKYTYTpni8mg8y3uY8gzeq2ndFOANwNuC/xJbVAoGKR9LhMDA0H3nIhvaqUoBEuJoICBudFrA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.55.3.tgz", - "integrity": "sha512-YeGUhkN1oA+iSPzzhEjVPS29YbViOr8s4lSsFaZKLHswgqP911xx25fPOyE9+khmN6W4VeM0aevbDp4kkEoHiA==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.55.3.tgz", - "integrity": "sha512-eo0iOIOvcAlWB3Z3eh8pVM8hZ0oVkK3AjEM9nSrkSug2l15qHzF3TOwT0747omI6+CJJvl7drwZepT+re6Fy/w==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.55.3.tgz", - "integrity": "sha512-DJay3ep76bKUDImmn//W5SvpjRN5LmK/ntWyeJs/dcnwiiHESd3N4uteK9FDLf0S0W8E6Y0sVRXpOCoQclQqNg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.55.3.tgz", - "integrity": "sha512-BKKWQkY2WgJ5MC/ayvIJTHjy0JUGb5efaHCUiG/39sSUvAYRBaO3+/EK0AZT1RF3pSj86O24GLLik9mAYu0IJg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.55.3.tgz", - "integrity": "sha512-Q9nVlWtKAG7ISW80OiZGxTr6rYtyDSkauHUtvkQI6TNOJjFvpj4gcH+KaJihqYInnAzEEUetPQubRwHef4exVg==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.55.3.tgz", - "integrity": "sha512-2H5LmhzrpC4fFRNwknzmmTvvyJPHwESoJgyReXeFoYYuIDfBhP29TEXOkCJE/KxHi27mj7wDUClNq78ue3QEBQ==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.55.3.tgz", - "integrity": "sha512-9S542V0ie9LCTznPYlvaeySwBeIEa7rDBgLHKZ5S9DBgcqdJYburabm8TqiqG6mrdTzfV5uttQRHcbKff9lWtA==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.55.3.tgz", - "integrity": "sha512-ukxw+YH3XXpcezLgbJeasgxyTbdpnNAkrIlFGDl7t+pgCxZ89/6n1a+MxlY7CegU+nDgrgdqDelPRNQ/47zs0g==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.55.3.tgz", - "integrity": "sha512-Iauw9UsTTvlF++FhghFJjqYxyXdggXsOqGpFBylaRopVpcbfyIIsNvkf9oGwfgIcf57z3m8+/oSYTo6HutBFNw==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.55.3.tgz", - "integrity": "sha512-3OqKAHSEQXKdq9mQ4eajqUgNIK27VZPW3I26EP8miIzuKzCJ3aW3oEn2pzF+4/Hj/Moc0YDsOtBgT5bZ56/vcA==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.55.3.tgz", - "integrity": "sha512-0CM8dSVzVIaqMcXIFej8zZrSFLnGrAE8qlNbbHfTw1EEPnFTg1U1ekI0JdzjPyzSfUsHWtodilQQG/RA55berA==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.55.3.tgz", - "integrity": "sha512-+fgJE12FZMIgBaKIAGd45rxf+5ftcycANJRWk8Vz0NnMTM5rADPGuRFTYar+Mqs560xuART7XsX2lSACa1iOmQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.55.3.tgz", - "integrity": "sha512-tMD7NnbAolWPzQlJQJjVFh/fNH3K/KnA7K8gv2dJWCwwnaK6DFCYST1QXYWfu5V0cDwarWC8Sf/cfMHniNq21A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.55.3.tgz", - "integrity": "sha512-u5KsqxOxjEeIbn7bUK1MPM34jrnPwjeqgyin4/N6e/KzXKfpE9Mi0nCxcQjaM9lLmPcHmn/xx1yOjgTMtu1jWQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.55.3.tgz", - "integrity": "sha512-vo54aXwjpTtsAnb3ca7Yxs9t2INZg7QdXN/7yaoG7nPGbOBXYXQY41Km+S1Ov26vzOAzLcAjmMdjyEqS1JkVhw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.55.3.tgz", - "integrity": "sha512-HI+PIVZ+m+9AgpnY3pt6rinUdRYrGHvmVdsNQ4odNqQ/eRF78DVpMR7mOq7nW06QxpczibwBmeQzB68wJ+4W4A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.55.3.tgz", - "integrity": "sha512-vRByotbdMo3Wdi+8oC2nVxtc3RkkFKrGaok+a62AT8lz/YBuQjaVYAS5Zcs3tPzW43Vsf9J0wehJbUY5xRSekA==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.55.3.tgz", - "integrity": "sha512-POZHq7UeuzMJljC5NjKi8vKMFN6/5EOqcX1yGntNLp7rUTpBAXQ1hW8kWPFxYLv07QMcNM75xqVLGPWQq6TKFA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.55.3.tgz", - "integrity": "sha512-aPFONczE4fUFKNXszdvnd2GqKEYQdV5oEsIbKPujJmWlCI9zEsv1Otig8RKK+X9bed9gFUN6LAeN4ZcNuu4zjg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -2837,10 +2790,20 @@ "dev": true, "license": "MIT" }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", "devOptional": true, "license": "MIT", "dependencies": { @@ -2849,9 +2812,9 @@ } }, "node_modules/@types/chrome": { - "version": "0.0.262", - "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.262.tgz", - "integrity": "sha512-TOoj3dqSYE13PD2fRuMQ6X6pggEvL9rRk/yOYOyWE6sfqRWxsJm4VoVm+wr9pkr4Sht/M5t7FFL4vXato8d1gA==", + "version": "0.1.40", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.1.40.tgz", + "integrity": "sha512-UnfyRAe8ORu9HSuTH0EqyOEUin3JrWW9Nl/gDXezNfTUrfIoxw+WRZgKOxGz0t5BnjbfXBnS2eCYfW2PxH1wcA==", "dev": true, "license": "MIT", "dependencies": { @@ -2860,13 +2823,14 @@ } }, "node_modules/@types/compression": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.7.5.tgz", - "integrity": "sha512-AAQvK5pxMpaT+nDvhHrsBhLSYG5yQdtkaJE1WYieSNY2mVFKAgmU4ks65rkZD5oqnGCFLyQpUr1CqI4DmUMyDg==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-kCFuWS0ebDbmxs0AXYn6e2r2nrGAb5KwQhknjSPSPgJcGd8+HVSILlUyFhGqML2gk39HcG7D1ydW9/qpYkN00Q==", "dev": true, "license": "MIT", "dependencies": { - "@types/express": "*" + "@types/express": "*", + "@types/node": "*" } }, "node_modules/@types/connect": { @@ -2914,26 +2878,26 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, "license": "MIT" }, "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "devOptional": true, + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", + "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", + "dev": true, "license": "MIT", "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "^2" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", - "devOptional": true, + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", + "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -2967,22 +2931,22 @@ "license": "MIT" }, "node_modules/@types/http-cache-semantics": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==", "license": "MIT" }, "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", "devOptional": true, "license": "MIT" }, "node_modules/@types/http-proxy": { - "version": "1.17.16", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", - "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", "license": "MIT", "dependencies": { "@types/node": "*" @@ -3006,31 +2970,32 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "devOptional": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "peer": true }, "node_modules/@types/node": { - "version": "20.17.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.30.tgz", - "integrity": "sha512-7zf4YyHA+jvBNfVrk2Gtvs6x7E8V+YDW05bNfG2XkWDJfYRXrTiP/DsB2zSYTaHX0bGIujTBQdMVAhb+j7mwpg==", + "version": "20.19.39", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.39.tgz", + "integrity": "sha512-orrrD74MBUyK8jOAD/r0+lfa1I2MO6I+vAkmAWzMYbCcgrN4lCrmK52gRFQq/JRxfYPfonkr4b0jcY7Olqdqbw==", "license": "MIT", "dependencies": { - "undici-types": "~6.19.2" + "undici-types": "~6.21.0" } }, "node_modules/@types/node-forge": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", - "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", + "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/qs": { - "version": "6.9.18", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", - "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", "devOptional": true, "license": "MIT" }, @@ -3042,26 +3007,24 @@ "license": "MIT" }, "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "devOptional": true, + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, "license": "MIT", "dependencies": { - "@types/mime": "^1", "@types/node": "*" } }, "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "devOptional": true, + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" + "@types/node": "*" } }, "node_modules/@types/telegram-web-app": { @@ -3072,21 +3035,20 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.21.0.tgz", - "integrity": "sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA==", + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.1.tgz", + "integrity": "sha512-eSkwoemjo76bdXl2MYqtxg51HNwUSkWfODUOQ3PaTLZGh9uIWWFZIjyjaJnex7wXDu+TRx+ATsnSxdN9YWfRTQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.21.0", - "@typescript-eslint/type-utils": "8.21.0", - "@typescript-eslint/utils": "8.21.0", - "@typescript-eslint/visitor-keys": "8.21.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.58.1", + "@typescript-eslint/type-utils": "8.58.1", + "@typescript-eslint/utils": "8.58.1", + "@typescript-eslint/visitor-keys": "8.58.1", + "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3096,23 +3058,33 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "@typescript-eslint/parser": "^8.58.1", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.21.0.tgz", - "integrity": "sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA==", + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.1.tgz", + "integrity": "sha512-gGkiNMPqerb2cJSVcruigx9eHBlLG14fSdPdqMoOcBfh+vvn4iCq2C8MzUB89PrxOXk0y3GZ1yIWb9aOzL93bw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.21.0", - "@typescript-eslint/types": "8.21.0", - "@typescript-eslint/typescript-estree": "8.21.0", - "@typescript-eslint/visitor-keys": "8.21.0", - "debug": "^4.3.4" + "@typescript-eslint/scope-manager": "8.58.1", + "@typescript-eslint/types": "8.58.1", + "@typescript-eslint/typescript-estree": "8.58.1", + "@typescript-eslint/visitor-keys": "8.58.1", + "debug": "^4.4.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3122,19 +3094,41 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.1.tgz", + "integrity": "sha512-gfQ8fk6cxhtptek+/8ZIqw8YrRW5048Gug8Ts5IYcMLCw18iUgrZAEY/D7s4hkI0FxEfGakKuPK/XUMPzPxi5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.58.1", + "@typescript-eslint/types": "^8.58.1", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.21.0.tgz", - "integrity": "sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==", + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.1.tgz", + "integrity": "sha512-TPYUEqJK6avLcEjumWsIuTpuYODTTDAtoMdt8ZZa93uWMTX13Nb8L5leSje1NluammvU+oI3QRr5lLXPgihX3w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.21.0", - "@typescript-eslint/visitor-keys": "8.21.0" + "@typescript-eslint/types": "8.58.1", + "@typescript-eslint/visitor-keys": "8.58.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3144,17 +3138,35 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.1.tgz", + "integrity": "sha512-JAr2hOIct2Q+qk3G+8YFfqkqi7sC86uNryT+2i5HzMa2MPjw4qNFvtjnw1IiA1rP7QhNKVe21mSSLaSjwA1Olw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.21.0.tgz", - "integrity": "sha512-95OsL6J2BtzoBxHicoXHxgk3z+9P3BEcQTpBKriqiYzLKnM2DeSqs+sndMKdamU8FosiadQFT3D+BSL9EKnAJQ==", + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.1.tgz", + "integrity": "sha512-HUFxvTJVroT+0rXVJC7eD5zol6ID+Sn5npVPWoFuHGg9Ncq5Q4EYstqR+UOqaNRFXi5TYkpXXkLhoCHe3G0+7w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.21.0", - "@typescript-eslint/utils": "8.21.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.0.0" + "@typescript-eslint/types": "8.58.1", + "@typescript-eslint/typescript-estree": "8.58.1", + "@typescript-eslint/utils": "8.58.1", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3164,14 +3176,14 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.21.0.tgz", - "integrity": "sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==", + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.1.tgz", + "integrity": "sha512-io/dV5Aw5ezwzfPBBWLoT+5QfVtP8O7q4Kftjn5azJ88bYyp/ZMCsyW1lpKK46EXJcaYMZ1JtYj+s/7TdzmQMw==", "dev": true, "license": "MIT", "engines": { @@ -3183,20 +3195,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.21.0.tgz", - "integrity": "sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==", + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.1.tgz", + "integrity": "sha512-w4w7WR7GHOjqqPnvAYbazq+Y5oS68b9CzasGtnd6jIeOIeKUzYzupGTB2T4LTPSv4d+WPeccbxuneTFHYgAAWg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.21.0", - "@typescript-eslint/visitor-keys": "8.21.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.0.0" + "@typescript-eslint/project-service": "8.58.1", + "@typescript-eslint/tsconfig-utils": "8.58.1", + "@typescript-eslint/types": "8.58.1", + "@typescript-eslint/visitor-keys": "8.58.1", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3206,20 +3219,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.21.0.tgz", - "integrity": "sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==", + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.1.tgz", + "integrity": "sha512-Ln8R0tmWC7pTtLOzgJzYTXSCjJ9rDNHAqTaVONF4FEi2qwce8mD9iSOxOpLFFvWp/wBFlew0mjM1L1ihYWfBdQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.21.0", - "@typescript-eslint/types": "8.21.0", - "@typescript-eslint/typescript-estree": "8.21.0" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.58.1", + "@typescript-eslint/types": "8.58.1", + "@typescript-eslint/typescript-estree": "8.58.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3229,19 +3242,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.21.0.tgz", - "integrity": "sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==", + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.1.tgz", + "integrity": "sha512-y+vH7QE8ycjoa0bWciFg7OpFcipUuem1ujhrdLtq1gByKwfbC7bPeKsiny9e0urg93DqwGcHey+bGRKCnF1nZQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.21.0", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/types": "8.58.1", + "eslint-visitor-keys": "^5.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3252,123 +3265,111 @@ } }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/@vitejs/plugin-vue": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.3.tgz", - "integrity": "sha512-TlGPkLFLVOY3T7fZrwdvKpjprR3s4fxRln0ORDo1VQ7HHyxJwTlrjKU3kpVWTlaAjIEuCTokmjkZnr8Tpc925w==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.5.tgz", + "integrity": "sha512-bL3AxKuQySfk1iGcBsQnoRVexTPJq0Z/ixFVM8OhVJAP6ZXXXLtM7NFKWhLl30Kg7uTBqIaPXbh+nuQCuBDedg==", "license": "MIT", "dependencies": { - "@rolldown/pluginutils": "1.0.0-beta.53" + "@rolldown/pluginutils": "1.0.0-rc.2" }, "engines": { "node": "^20.19.0 || >=22.12.0" }, "peerDependencies": { - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", "vue": "^3.2.25" } }, "node_modules/@volar/language-core": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.11.tgz", - "integrity": "sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==", + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.28.tgz", + "integrity": "sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==", "dev": true, "license": "MIT", "dependencies": { - "@volar/source-map": "2.4.11" + "@volar/source-map": "2.4.28" } }, "node_modules/@volar/source-map": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.11.tgz", - "integrity": "sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==", + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.28.tgz", + "integrity": "sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==", "dev": true, "license": "MIT" }, "node_modules/@volar/typescript": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.11.tgz", - "integrity": "sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==", + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.28.tgz", + "integrity": "sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==", "dev": true, "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.11", + "@volar/language-core": "2.4.28", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } }, "node_modules/@vue/compiler-core": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.27.tgz", - "integrity": "sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.32.tgz", + "integrity": "sha512-4x74Tbtqnda8s/NSD6e1Dr5p1c8HdMU5RWSjMSUzb8RTcUQqevDCxVAitcLBKT+ie3o0Dl9crc/S/opJM7qBGQ==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.5", - "@vue/shared": "3.5.27", - "entities": "^7.0.0", + "@babel/parser": "^7.29.2", + "@vue/shared": "3.5.32", + "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, - "node_modules/@vue/compiler-core/node_modules/entities": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.0.tgz", - "integrity": "sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/@vue/compiler-dom": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.27.tgz", - "integrity": "sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.32.tgz", + "integrity": "sha512-ybHAu70NtiEI1fvAUz3oXZqkUYEe5J98GjMDpTGl5iHb0T15wQYLR4wE3h9xfuTNA+Cm2f4czfe8B4s+CCH57Q==", "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.27", - "@vue/shared": "3.5.27" + "@vue/compiler-core": "3.5.32", + "@vue/shared": "3.5.32" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.27.tgz", - "integrity": "sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.32.tgz", + "integrity": "sha512-8UYUYo71cP/0YHMO814TRZlPuUUw3oifHuMR7Wp9SNoRSrxRQnhMLNlCeaODNn6kNTJsjFoQ/kqIj4qGvya4Xg==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.5", - "@vue/compiler-core": "3.5.27", - "@vue/compiler-dom": "3.5.27", - "@vue/compiler-ssr": "3.5.27", - "@vue/shared": "3.5.27", + "@babel/parser": "^7.29.2", + "@vue/compiler-core": "3.5.32", + "@vue/compiler-dom": "3.5.32", + "@vue/compiler-ssr": "3.5.32", + "@vue/shared": "3.5.32", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", - "postcss": "^8.5.6", + "postcss": "^8.5.8", "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.27.tgz", - "integrity": "sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.32.tgz", + "integrity": "sha512-Gp4gTs22T3DgRotZ8aA/6m2jMR+GMztvBXUBEUOYOcST+giyGWJ4WvFd7QLHBkzTxkfOt8IELKNdpzITLbA2rw==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.27", - "@vue/shared": "3.5.27" + "@vue/compiler-dom": "3.5.32", + "@vue/shared": "3.5.32" } }, "node_modules/@vue/compiler-vue2": { @@ -3389,23 +3390,23 @@ "license": "MIT" }, "node_modules/@vue/eslint-config-typescript": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-14.3.0.tgz", - "integrity": "sha512-bOreIxlSC/xsUdhDdKIHb1grwJah+IokNeJ50LqA1StdOHeSPUxSIPNxyKgRx4YdjhyzC6TKtrCf6yYK99x3Uw==", + "version": "14.7.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-14.7.0.tgz", + "integrity": "sha512-iegbMINVc+seZ/QxtzWiOBozctrHiF2WvGedruu2EbLujg9VuU0FQiNcN2z1ycuaoKKpF4m2qzB5HDEMKbxtIg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^8.20.0", + "@typescript-eslint/utils": "^8.56.0", "fast-glob": "^3.3.3", - "typescript-eslint": "^8.20.0", - "vue-eslint-parser": "^9.4.3" + "typescript-eslint": "^8.56.0", + "vue-eslint-parser": "^10.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { - "eslint": "^9.10.0", - "eslint-plugin-vue": "^9.28.0", + "eslint": "^9.10.0 || ^10.0.0", + "eslint-plugin-vue": "^9.28.0 || ^10.0.0", "typescript": ">=4.8.4" }, "peerDependenciesMeta": { @@ -3439,54 +3440,87 @@ } } }, - "node_modules/@vue/reactivity": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.27.tgz", - "integrity": "sha512-vvorxn2KXfJ0nBEnj4GYshSgsyMNFnIQah/wczXlsNXt+ijhugmW+PpJ2cNPe4V6jpnBcs0MhCODKllWG+nvoQ==", + "node_modules/@vue/language-core/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/language-core/node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "dev": true, "license": "MIT", "dependencies": { - "@vue/shared": "3.5.27" + "balanced-match": "^1.0.0" + } + }, + "node_modules/@vue/language-core/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.32.tgz", + "integrity": "sha512-/ORasxSGvZ6MN5gc+uE364SxFdJ0+WqVG0CENXaGW58TOCdrAW76WWaplDtECeS1qphvtBZtR+3/o1g1zL4xPQ==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.32" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.27.tgz", - "integrity": "sha512-fxVuX/fzgzeMPn/CLQecWeDIFNt3gQVhxM0rW02Tvp/YmZfXQgcTXlakq7IMutuZ/+Ogbn+K0oct9J3JZfyk3A==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.32.tgz", + "integrity": "sha512-pDrXCejn4UpFDFmMd27AcJEbHaLemaE5o4pbb7sLk79SRIhc6/t34BQA7SGNgYtbMnvbF/HHOftYBgFJtUoJUQ==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.27", - "@vue/shared": "3.5.27" + "@vue/reactivity": "3.5.32", + "@vue/shared": "3.5.32" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.27.tgz", - "integrity": "sha512-/QnLslQgYqSJ5aUmb5F0z0caZPGHRB8LEAQ1s81vHFM5CBfnun63rxhvE/scVb/j3TbBuoZwkJyiLCkBluMpeg==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.32.tgz", + "integrity": "sha512-1CDVv7tv/IV13V8Nip1k/aaObVbWqRlVCVezTwx3K07p7Vxossp5JU1dcPNhJk3w347gonIUT9jQOGutyJrSVQ==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.27", - "@vue/runtime-core": "3.5.27", - "@vue/shared": "3.5.27", + "@vue/reactivity": "3.5.32", + "@vue/runtime-core": "3.5.32", + "@vue/shared": "3.5.32", "csstype": "^3.2.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.27.tgz", - "integrity": "sha512-qOz/5thjeP1vAFc4+BY3Nr6wxyLhpeQgAE/8dDtKo6a6xdk+L4W46HDZgNmLOBUDEkFXV3G7pRiUqxjX0/2zWA==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.32.tgz", + "integrity": "sha512-IOjm2+JQwRFS7W28HNuJeXQle9KdZbODFY7hFGVtnnghF51ta20EWAZJHX+zLGtsHhaU6uC9BGPV52KVpYryMQ==", "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.27", - "@vue/shared": "3.5.27" + "@vue/compiler-ssr": "3.5.32", + "@vue/shared": "3.5.32" }, "peerDependencies": { - "vue": "3.5.27" + "vue": "3.5.32" } }, "node_modules/@vue/shared": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.27.tgz", - "integrity": "sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.32.tgz", + "integrity": "sha512-ksNyrmRQzWJJ8n3cRDuSF7zNNontuJg1YHnmWRJd2AMu8Ij2bqwiiri2lH5rHtYPZjj4STkNcgcmiQqlOjiYGg==", "license": "MIT" }, "node_modules/@webassemblyjs/ast": { @@ -3717,9 +3751,9 @@ } }, "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "devOptional": true, "license": "MIT", "bin": { @@ -3754,9 +3788,9 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -3790,9 +3824,9 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "peer": true, @@ -3841,6 +3875,47 @@ "string-width": "^4.1.0" } }, + "node_modules/ansi-align/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -3871,12 +3946,15 @@ } }, "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/ansi-styles": { @@ -3910,9 +3988,9 @@ } }, "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -3991,18 +4069,20 @@ "license": "MIT" }, "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -4093,6 +4173,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/asn1js": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.7.tgz", + "integrity": "sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", @@ -4117,9 +4212,9 @@ "license": "MIT" }, "node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "version": "10.4.27", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz", + "integrity": "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==", "dev": true, "funding": [ { @@ -4137,11 +4232,10 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001774", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -4171,37 +4265,137 @@ } }, "node_modules/axios": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", - "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz", + "integrity": "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", - "proxy-from-env": "^1.1.0" + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^2.1.0" } }, "node_modules/b4a": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", - "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/bare-events": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", - "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.0.tgz", + "integrity": "sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==", "dev": true, "license": "Apache-2.0", - "optional": true + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/bare-events": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } + }, + "node_modules/bare-fs": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.0.tgz", + "integrity": "sha512-xzqKsCFxAek9aezYhjJuJRXBIaYlg/0OGDTZp+T8eYmYMlm66cs6cYko02drIyjN2CBbi+I6L7YfXyqpqtKRXA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } + } + }, + "node_modules/bare-os": { + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.8.7.tgz", + "integrity": "sha512-G4Gr1UsGeEy2qtDTZwL7JFLo2wapUarz7iTMcYcMFdS89AIQuBoyjgXZz0Utv7uHs3xA9LckhVbeBi8lEQrC+w==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "bare": ">=1.14.0" + } + }, + "node_modules/bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-os": "^3.0.1" + } + }, + "node_modules/bare-stream": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.12.0.tgz", + "integrity": "sha512-w28i8lkBgREV3rPXGbgK+BO66q+ZpKqRWrZLiCdmmUlLPrQ45CzkvRhN+7lnv00Gpi2zy5naRxnUFAxCECDm9g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "streamx": "^2.25.0", + "teex": "^1.0.1" + }, + "peerDependencies": { + "bare-abort-controller": "*", + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + }, + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, + "node_modules/bare-url": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.0.tgz", + "integrity": "sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-path": "^3.0.0" + } }, "node_modules/base64-js": { "version": "1.5.1", @@ -4224,6 +4418,19 @@ ], "license": "MIT" }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.17", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.17.tgz", + "integrity": "sha512-HdrkN8eVG2CXxeifv/VdJ4A4RSra1DTW8dc/hdxzhGHN8QePs6gKaWM9pHPcpCoxYZJuOZ8drHmbdpLHjCYjLA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/big-integer": { "version": "1.6.52", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", @@ -4256,33 +4463,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/body-parser": { "version": "1.20.4", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", @@ -4316,41 +4496,12 @@ "ms": "2.0.0" } }, - "node_modules/body-parser/node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/body-parser/node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -4380,34 +4531,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/boxen/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" @@ -4416,44 +4543,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/boxen/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/boxen/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/boxen/node_modules/type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", @@ -4466,23 +4555,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/bplist-parser": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", @@ -4496,13 +4568,16 @@ } }, "node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/braces": { @@ -4527,9 +4602,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", "dev": true, "funding": [ { @@ -4547,10 +4622,11 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" @@ -4560,9 +4636,9 @@ } }, "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, "funding": [ { @@ -4581,15 +4657,9 @@ "license": "MIT", "dependencies": { "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "ieee754": "^1.2.1" } }, - "node_modules/buffer-builder": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz", - "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==", - "license": "MIT/X11" - }, "node_modules/buffer-crc32": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", @@ -4632,6 +4702,16 @@ "node": ">= 0.8" } }, + "node_modules/bytestreamjs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", + "integrity": "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/cacheable-lookup": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", @@ -4741,9 +4821,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001735", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001735.tgz", - "integrity": "sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==", + "version": "1.0.30001787", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001787.tgz", + "integrity": "sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==", "dev": true, "funding": [ { @@ -4786,28 +4866,19 @@ "license": "MIT" }, "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", "dev": true, "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "readdirp": "^5.0.0" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 20.19.0" }, "funding": { "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" } }, "node_modules/chrome-trace-event": { @@ -4822,9 +4893,9 @@ } }, "node_modules/ci-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", - "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", "funding": [ { "type": "github", @@ -4861,32 +4932,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cli-width": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", @@ -4898,42 +4943,80 @@ } }, "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", "dev": true, "license": "ISC", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=12" + "node": ">=20" } }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", "dev": true, "license": "MIT", "engines": { @@ -5073,9 +5156,9 @@ "license": "MIT" }, "node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz", + "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", "dev": true, "license": "MIT" }, @@ -5160,18 +5243,18 @@ } }, "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", "license": "MIT" }, "node_modules/core-util-is": { @@ -5182,9 +5265,9 @@ "license": "MIT" }, "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", "license": "MIT", "dependencies": { "object-assign": "^4", @@ -5192,6 +5275,10 @@ }, "engines": { "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/crc-32": { @@ -5343,9 +5430,9 @@ "license": "MIT" }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { @@ -5404,9 +5491,9 @@ "license": "MIT" }, "node_modules/default-browser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", - "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", "dev": true, "license": "MIT", "dependencies": { @@ -5421,9 +5508,9 @@ } }, "node_modules/default-browser-id": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", - "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", "dev": true, "license": "MIT", "engines": { @@ -5433,19 +5520,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", @@ -5536,7 +5610,6 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "license": "Apache-2.0", - "optional": true, "engines": { "node": ">=8" } @@ -5566,25 +5639,25 @@ } }, "node_modules/dot-prop": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-9.0.0.tgz", - "integrity": "sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-10.1.0.tgz", + "integrity": "sha512-MVUtAugQMOff5RnBy2d9N31iG0lNwg1qAoAOn7pOK5wf94WIaE3My2p3uwTQuvS2AcqchkcR3bHByjaM0mmi7Q==", "dev": true, "license": "MIT", "dependencies": { - "type-fest": "^4.18.2" + "type-fest": "^5.0.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "version": "17.4.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.1.tgz", + "integrity": "sha512-k8DaKGP6r1G30Lx8V4+pCsLzKr8vLmV2paqEj1Y55GdAgJuIqpRp5FfajGF8KtwMxCz9qJc6wUIJnm053d/WCw==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -5595,9 +5668,9 @@ } }, "node_modules/dotenv-expand": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", - "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.3.tgz", + "integrity": "sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -5610,6 +5683,19 @@ "url": "https://dotenvx.com" } }, + "node_modules/dotenv-expand/node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -5637,9 +5723,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.88", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.88.tgz", - "integrity": "sha512-K3C2qf1o+bGzbilTDCTBhTQcMS9KW60yTAaTeeXsfvQuTDDwlokLam/AdqlqcSy9u4UainDgsHV23ksXAOgamw==", + "version": "1.5.334", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.334.tgz", + "integrity": "sha512-mgjZAz7Jyx1SRCwEpy9wefDS7GvNPazLthHg8eQMJ76wBdGQQDW33TCrUTvQ4wzpmOrv2zrFoD3oNufMdyMpog==", "dev": true, "license": "ISC" }, @@ -5657,9 +5743,9 @@ } }, "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "license": "MIT" }, "node_modules/emojis-list": { @@ -5682,25 +5768,24 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.18.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", - "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "tapable": "^2.3.0" }, "engines": { "node": ">=10.13.0" } }, "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -5710,9 +5795,9 @@ } }, "node_modules/es-abstract": { - "version": "1.23.9", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", - "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", + "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", "dev": true, "license": "MIT", "dependencies": { @@ -5720,18 +5805,18 @@ "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", + "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.0", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", @@ -5743,21 +5828,24 @@ "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", + "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", + "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.3", + "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.3", + "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", @@ -5766,7 +5854,7 @@ "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" + "which-typed-array": "^1.1.19" }, "engines": { "node": ">= 0.4" @@ -5794,9 +5882,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", "dev": true, "license": "MIT", "peer": true @@ -5860,9 +5948,10 @@ } }, "node_modules/esbuild": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz", - "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", + "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", + "devOptional": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -5872,31 +5961,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.1", - "@esbuild/android-arm": "0.25.1", - "@esbuild/android-arm64": "0.25.1", - "@esbuild/android-x64": "0.25.1", - "@esbuild/darwin-arm64": "0.25.1", - "@esbuild/darwin-x64": "0.25.1", - "@esbuild/freebsd-arm64": "0.25.1", - "@esbuild/freebsd-x64": "0.25.1", - "@esbuild/linux-arm": "0.25.1", - "@esbuild/linux-arm64": "0.25.1", - "@esbuild/linux-ia32": "0.25.1", - "@esbuild/linux-loong64": "0.25.1", - "@esbuild/linux-mips64el": "0.25.1", - "@esbuild/linux-ppc64": "0.25.1", - "@esbuild/linux-riscv64": "0.25.1", - "@esbuild/linux-s390x": "0.25.1", - "@esbuild/linux-x64": "0.25.1", - "@esbuild/netbsd-arm64": "0.25.1", - "@esbuild/netbsd-x64": "0.25.1", - "@esbuild/openbsd-arm64": "0.25.1", - "@esbuild/openbsd-x64": "0.25.1", - "@esbuild/sunos-x64": "0.25.1", - "@esbuild/win32-arm64": "0.25.1", - "@esbuild/win32-ia32": "0.25.1", - "@esbuild/win32-x64": "0.25.1" + "@esbuild/aix-ppc64": "0.27.7", + "@esbuild/android-arm": "0.27.7", + "@esbuild/android-arm64": "0.27.7", + "@esbuild/android-x64": "0.27.7", + "@esbuild/darwin-arm64": "0.27.7", + "@esbuild/darwin-x64": "0.27.7", + "@esbuild/freebsd-arm64": "0.27.7", + "@esbuild/freebsd-x64": "0.27.7", + "@esbuild/linux-arm": "0.27.7", + "@esbuild/linux-arm64": "0.27.7", + "@esbuild/linux-ia32": "0.27.7", + "@esbuild/linux-loong64": "0.27.7", + "@esbuild/linux-mips64el": "0.27.7", + "@esbuild/linux-ppc64": "0.27.7", + "@esbuild/linux-riscv64": "0.27.7", + "@esbuild/linux-s390x": "0.27.7", + "@esbuild/linux-x64": "0.27.7", + "@esbuild/netbsd-arm64": "0.27.7", + "@esbuild/netbsd-x64": "0.27.7", + "@esbuild/openbsd-arm64": "0.27.7", + "@esbuild/openbsd-x64": "0.27.7", + "@esbuild/openharmony-arm64": "0.27.7", + "@esbuild/sunos-x64": "0.27.7", + "@esbuild/win32-arm64": "0.27.7", + "@esbuild/win32-ia32": "0.27.7", + "@esbuild/win32-x64": "0.27.7" } }, "node_modules/escalade": { @@ -5963,25 +6053,25 @@ } }, "node_modules/eslint": { - "version": "9.39.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", - "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", + "@eslint/config-array": "^0.21.2", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.2", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", - "ajv": "^6.12.4", + "ajv": "^6.14.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", @@ -6000,7 +6090,7 @@ "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", + "minimatch": "^3.1.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, @@ -6036,15 +6126,15 @@ } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.10.tgz", + "integrity": "sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==", "dev": true, "license": "MIT", "dependencies": { "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" + "is-core-module": "^2.16.1", + "resolve": "^2.0.0-next.6" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { @@ -6058,9 +6148,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "dev": true, "license": "MIT", "dependencies": { @@ -6086,30 +6176,30 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", "dependencies": { "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", + "eslint-module-utils": "^2.12.1", "hasown": "^2.0.2", - "is-core-module": "^2.15.1", + "is-core-module": "^2.16.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "object.groupby": "^1.0.3", - "object.values": "^1.2.0", + "object.values": "^1.2.1", "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", + "string.prototype.trimend": "^1.0.9", "tsconfig-paths": "^3.15.0" }, "engines": { @@ -6119,10 +6209,17 @@ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, + "node_modules/eslint-plugin-import/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", "dependencies": { @@ -6141,9 +6238,9 @@ } }, "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -6164,9 +6261,9 @@ } }, "node_modules/eslint-plugin-vue": { - "version": "9.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.32.0.tgz", - "integrity": "sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==", + "version": "9.33.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.33.0.tgz", + "integrity": "sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==", "dev": true, "license": "MIT", "dependencies": { @@ -6186,6 +6283,41 @@ "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" } }, + "node_modules/eslint-plugin-vue/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-vue/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/eslint-plugin-vue/node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", @@ -6215,6 +6347,31 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint-plugin-vue/node_modules/vue-eslint-parser": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", + "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, "node_modules/eslint-scope": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", @@ -6245,10 +6402,17 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", "dependencies": { @@ -6269,23 +6433,10 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -6341,9 +6492,9 @@ } }, "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -6427,6 +6578,16 @@ "node": ">=0.8.x" } }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, "node_modules/execa": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", @@ -6462,18 +6623,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/execa/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/execa/node_modules/npm-run-path": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", @@ -6489,21 +6638,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/execa/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/execa/node_modules/path-key": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", @@ -6614,6 +6748,19 @@ "node": ">=8.6.0" } }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -6628,10 +6775,27 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-string-truncated-width": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", + "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-string-width": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", + "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-string-truncated-width": "^3.0.2" + } + }, "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "dev": true, "funding": [ { @@ -6646,10 +6810,20 @@ "license": "BSD-3-Clause", "peer": true }, + "node_modules/fast-wrap-ansi": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.0.tgz", + "integrity": "sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-string-width": "^3.0.2" + } + }, "node_modules/fastq": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", - "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "dev": true, "license": "ISC", "dependencies": { @@ -6660,7 +6834,6 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, "license": "MIT", "engines": { "node": ">=12.0.0" @@ -6700,17 +6873,17 @@ } }, "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "statuses": "2.0.1", + "statuses": "~2.0.2", "unpipe": "~1.0.0" }, "engines": { @@ -6774,16 +6947,16 @@ } }, "node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "funding": [ { "type": "individual", @@ -6817,13 +6990,13 @@ } }, "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -6868,16 +7041,16 @@ } }, "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", "dev": true, "license": "MIT", "engines": { "node": "*" }, "funding": { - "type": "patreon", + "type": "github", "url": "https://github.com/sponsors/rawify" } }, @@ -6925,9 +7098,9 @@ } }, "node_modules/fs-extra": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", - "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -6992,6 +7165,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -7002,6 +7185,19 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-east-asian-width": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", @@ -7073,6 +7269,7 @@ "version": "10.5.0", "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -7091,16 +7288,16 @@ } }, "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/glob-to-regexp": { @@ -7111,6 +7308,39 @@ "license": "BSD-2-Clause", "peer": true }, + "node_modules/glob/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/global-dirs": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", @@ -7127,9 +7357,9 @@ } }, "node_modules/globals": { - "version": "15.14.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", - "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", "dev": true, "license": "MIT", "engines": { @@ -7199,13 +7429,6 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "license": "ISC" }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, "node_modules/has-bigints": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", @@ -7340,26 +7563,43 @@ "node": "^14.13.1 || >=16.0.0" } }, + "node_modules/html-minifier-terser/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", "license": "BSD-2-Clause" }, "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/http-proxy": { @@ -7376,30 +7616,6 @@ "node": ">=8.0.0" } }, - "node_modules/http-proxy-middleware": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", - "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", - "license": "MIT", - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } - } - }, "node_modules/http2-wrapper": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", @@ -7466,9 +7682,9 @@ } }, "node_modules/immutable": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", - "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz", + "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==", "license": "MIT" }, "node_modules/import-fresh": { @@ -7522,27 +7738,30 @@ } }, "node_modules/inquirer": { - "version": "9.3.8", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.3.8.tgz", - "integrity": "sha512-pFGGdaHrmRKMh4WoDDSowddgjT1Vkl90atobmTeSmcPGdYiwikch/m/Ef5wRaiamHejtw0cUUMMerzDUXCci2w==", + "version": "13.4.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-13.4.1.tgz", + "integrity": "sha512-IUopujY77lFiSaLz0fx6FHEOEANz0nAsqv+vQJddnVshi6wdos984qwjb42mZbH3zCJS4f9ioIGDqSPqMMMXjw==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/external-editor": "^1.0.2", - "@inquirer/figures": "^1.0.3", - "ansi-escapes": "^4.3.2", - "cli-width": "^4.1.0", - "mute-stream": "1.0.0", - "ora": "^5.4.1", - "run-async": "^3.0.0", - "rxjs": "^7.8.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.2" + "@inquirer/ansi": "^2.0.5", + "@inquirer/core": "^11.1.8", + "@inquirer/prompts": "^8.4.1", + "@inquirer/type": "^4.0.5", + "mute-stream": "^3.0.0", + "run-async": "^4.0.6", + "rxjs": "^7.8.2" }, "engines": { - "node": ">=18" + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/internal-slot": { @@ -7794,14 +8013,15 @@ } }, "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" }, @@ -7824,6 +8044,19 @@ "node": ">=0.10.0" } }, + "node_modules/is-in-ssh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz", + "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-inside-container": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", @@ -7858,16 +8091,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -7881,10 +8104,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-npm": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", - "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.1.0.tgz", + "integrity": "sha512-O2z4/kNgyjhQwVR1Wpkbfc19JIhggF97NZNCpWTnjH7kVcZMUrnut9XSN7txI7VdyIYk5ZatOq3zvSuWpU8hoA==", "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -8079,19 +8315,6 @@ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "license": "MIT" }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", @@ -8139,9 +8362,9 @@ } }, "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "dev": true, "license": "MIT", "dependencies": { @@ -8164,16 +8387,16 @@ } }, "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true, "license": "MIT" }, "node_modules/isbinaryfile": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.4.tgz", - "integrity": "sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.7.tgz", + "integrity": "sha512-gnWD14Jh3FzS3CPhF0AxNOJ8CxqeblPTADzI38r0wt8ZyQl5edpy75myt08EG2oKvpyiqSqsx+Wkz9vtkbTqYQ==", "dev": true, "license": "MIT", "engines": { @@ -8310,9 +8533,9 @@ } }, "node_modules/jsonc-eslint-parser": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz", - "integrity": "sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.2.tgz", + "integrity": "sha512-1e4qoRgnn448pRuMvKGsFFymUCquZV0mpGgOyIKNgD3JVDTsVJyRBGH/Fm0tBb8WsWGgmB1mDe6/yJMQM37DUA==", "dev": true, "license": "MIT", "dependencies": { @@ -8347,9 +8570,9 @@ } }, "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "license": "MIT", "dependencies": { "universalify": "^2.0.0" @@ -8411,6 +8634,13 @@ "node": ">= 0.6.3" } }, + "node_modules/lazystream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, "node_modules/lazystream/node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", @@ -8458,6 +8688,255 @@ "node": ">= 0.8.0" } }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/linkify-it": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", @@ -8469,14 +8948,18 @@ } }, "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", "dev": true, "license": "MIT", "peer": true, "engines": { "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/loader-utils": { @@ -8511,9 +8994,9 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "dev": true, "license": "MIT" }, @@ -8524,23 +9007,6 @@ "dev": true, "license": "MIT" }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", @@ -8684,16 +9150,6 @@ "uslug": "^1.0.4" } }, - "node_modules/markdown-it-toc-and-anchor/node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, "node_modules/markdown-it/node_modules/entities": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", @@ -8777,9 +9233,9 @@ } }, "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "license": "MIT", "engines": { "node": ">=8.6" @@ -8801,9 +9257,9 @@ } }, "node_modules/mime-db": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz", - "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==", + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -8831,12 +9287,15 @@ } }, "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/mimic-response": { @@ -8852,16 +9311,16 @@ } }, "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.5" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -8877,32 +9336,32 @@ } }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/mlly": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", - "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.2.tgz", + "integrity": "sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==", "dev": true, "license": "MIT", "dependencies": { - "acorn": "^8.14.0", - "pathe": "^2.0.1", - "pkg-types": "^1.3.0", - "ufo": "^1.5.4" + "acorn": "^8.16.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.3" } }, "node_modules/mlly/node_modules/pathe": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz", - "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "dev": true, "license": "MIT" }, @@ -8920,13 +9379,13 @@ "license": "MIT" }, "node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz", + "integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==", "dev": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/nanoid": { @@ -8989,19 +9448,48 @@ "license": "MIT", "optional": true }, + "node_modules/node-exports-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz", + "integrity": "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array.prototype.flatmap": "^1.3.3", + "es-errors": "^1.3.0", + "object.entries": "^1.1.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/node-exports-info/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/node-forge": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", - "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", + "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } }, "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", + "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", "dev": true, "license": "MIT" }, @@ -9015,20 +9503,10 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/normalize-url": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", - "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.1.tgz", + "integrity": "sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==", "license": "MIT", "engines": { "node": ">=14.16" @@ -9072,9 +9550,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -9114,6 +9592,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/object.fromentries": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", @@ -9189,34 +9683,36 @@ } }, "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/open": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", - "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/open/-/open-11.0.0.tgz", + "integrity": "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==", "dev": true, "license": "MIT", "dependencies": { - "default-browser": "^5.2.1", + "default-browser": "^5.4.0", "define-lazy-prop": "^3.0.0", + "is-in-ssh": "^1.0.0", "is-inside-container": "^1.0.0", - "is-wsl": "^3.1.0" + "powershell-utils": "^0.1.0", + "wsl-utils": "^0.3.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -9240,30 +9736,6 @@ "node": ">= 0.8.0" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/own-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", @@ -9443,9 +9915,9 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", "license": "MIT" }, "node_modules/pathe": { @@ -9462,10 +9934,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "devOptional": true, + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", "engines": { "node": ">=12" @@ -9508,13 +9979,38 @@ "pathe": "^2.0.1" } }, - "node_modules/pkg-types/node_modules/pathe": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz", - "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==", + "node_modules/pkg-types/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", "dev": true, "license": "MIT" }, + "node_modules/pkg-types/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pkijs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.4.0.tgz", + "integrity": "sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@noble/hashes": "1.4.0", + "asn1js": "^3.0.6", + "bytestreamjs": "^2.0.1", + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", @@ -9526,9 +10022,9 @@ } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.9.tgz", + "integrity": "sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==", "funding": [ { "type": "opencollective", @@ -9574,6 +10070,19 @@ "dev": true, "license": "MIT" }, + "node_modules/powershell-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz", + "integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -9631,10 +10140,13 @@ } }, "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } }, "node_modules/pseudomap": { "version": "1.0.2", @@ -9653,9 +10165,9 @@ } }, "node_modules/pupa": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", - "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.3.0.tgz", + "integrity": "sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA==", "license": "MIT", "dependencies": { "escape-goat": "^4.0.0" @@ -9667,10 +10179,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pvtsutils": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" + } + }, + "node_modules/pvutils": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.5.tgz", + "integrity": "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -9683,9 +10215,9 @@ } }, "node_modules/quasar": { - "version": "2.18.6", - "resolved": "https://registry.npmjs.org/quasar/-/quasar-2.18.6.tgz", - "integrity": "sha512-ZlK+vJXOBPSFDCNQDBDNwSI+AHoqaFPxK8ve6mhsYLhMKWI5b8zsGY9VU1xYjngO2aBvU4fvGWXy4tTbzrBk8Q==", + "version": "2.19.3", + "resolved": "https://registry.npmjs.org/quasar/-/quasar-2.19.3.tgz", + "integrity": "sha512-z9uEiZfpkkwUGedgVfARRoF7h30qWSZwUfUTLOo/jXCiGL5KYQt5N39XpKVOW0Y7lGF9kSAZuFHvYoPZoMUpfg==", "license": "MIT", "engines": { "node": ">= 10.18.1", @@ -9718,13 +10250,6 @@ ], "license": "MIT" }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "dev": true, - "license": "MIT" - }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -9737,16 +10262,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -9771,35 +10286,6 @@ "node": ">= 0.8" } }, - "node_modules/raw-body/node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/raw-body/node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/raw-loader": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", @@ -9868,31 +10354,6 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/readable-stream/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/readdir-glob": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", @@ -9903,10 +10364,27 @@ "minimatch": "^5.1.0" } }, + "node_modules/readdir-glob/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "dev": true, "license": "ISC", "dependencies": { @@ -9917,31 +10395,26 @@ } }, "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">= 20.19.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -9987,12 +10460,12 @@ } }, "node_modules/registry-auth-token": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz", - "integrity": "sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.1.tgz", + "integrity": "sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==", "license": "MIT", "dependencies": { - "@pnpm/npm-conf": "^2.1.0" + "@pnpm/npm-conf": "^3.0.2" }, "engines": { "node": ">=14" @@ -10023,16 +10496,6 @@ "node": ">= 0.10" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -10051,13 +10514,16 @@ "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "version": "2.0.0-next.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz", + "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "node-exports-info": "^1.6.0", + "object-keys": "^1.1.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -10102,31 +10568,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/restore-cursor/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, "license": "MIT", "engines": { @@ -10134,70 +10579,65 @@ "node": ">=0.10.0" } }, - "node_modules/rollup": { - "version": "4.55.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.55.3.tgz", - "integrity": "sha512-y9yUpfQvetAjiDLtNMf1hL9NXchIJgWt6zIKeoB+tCd3npX08Eqfzg60V9DhIGVMtQ0AlMkFw5xa+AQ37zxnAA==", + "node_modules/rolldown": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.15.tgz", + "integrity": "sha512-Ff31guA5zT6WjnGp0SXw76X6hzGRk/OQq2hE+1lcDe+lJdHSgnSX6nK3erbONHyCbpSj9a9E+uX/OvytZoWp2g==", "license": "MIT", "dependencies": { - "@types/estree": "1.0.8" + "@oxc-project/types": "=0.124.0", + "@rolldown/pluginutils": "1.0.0-rc.15" }, "bin": { - "rollup": "dist/bin/rollup" + "rolldown": "bin/cli.mjs" }, "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" + "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.55.3", - "@rollup/rollup-android-arm64": "4.55.3", - "@rollup/rollup-darwin-arm64": "4.55.3", - "@rollup/rollup-darwin-x64": "4.55.3", - "@rollup/rollup-freebsd-arm64": "4.55.3", - "@rollup/rollup-freebsd-x64": "4.55.3", - "@rollup/rollup-linux-arm-gnueabihf": "4.55.3", - "@rollup/rollup-linux-arm-musleabihf": "4.55.3", - "@rollup/rollup-linux-arm64-gnu": "4.55.3", - "@rollup/rollup-linux-arm64-musl": "4.55.3", - "@rollup/rollup-linux-loong64-gnu": "4.55.3", - "@rollup/rollup-linux-loong64-musl": "4.55.3", - "@rollup/rollup-linux-ppc64-gnu": "4.55.3", - "@rollup/rollup-linux-ppc64-musl": "4.55.3", - "@rollup/rollup-linux-riscv64-gnu": "4.55.3", - "@rollup/rollup-linux-riscv64-musl": "4.55.3", - "@rollup/rollup-linux-s390x-gnu": "4.55.3", - "@rollup/rollup-linux-x64-gnu": "4.55.3", - "@rollup/rollup-linux-x64-musl": "4.55.3", - "@rollup/rollup-openbsd-x64": "4.55.3", - "@rollup/rollup-openharmony-arm64": "4.55.3", - "@rollup/rollup-win32-arm64-msvc": "4.55.3", - "@rollup/rollup-win32-ia32-msvc": "4.55.3", - "@rollup/rollup-win32-x64-gnu": "4.55.3", - "@rollup/rollup-win32-x64-msvc": "4.55.3", - "fsevents": "~2.3.2" + "@rolldown/binding-android-arm64": "1.0.0-rc.15", + "@rolldown/binding-darwin-arm64": "1.0.0-rc.15", + "@rolldown/binding-darwin-x64": "1.0.0-rc.15", + "@rolldown/binding-freebsd-x64": "1.0.0-rc.15", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.15", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.15", + "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.15", + "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.15", + "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.15", + "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.15", + "@rolldown/binding-linux-x64-musl": "1.0.0-rc.15", + "@rolldown/binding-openharmony-arm64": "1.0.0-rc.15", + "@rolldown/binding-wasm32-wasi": "1.0.0-rc.15", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.15", + "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.15" } }, + "node_modules/rolldown/node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.15.tgz", + "integrity": "sha512-UromN0peaE53IaBRe9W7CjrZgXl90fqGpK+mIZbA3qSTeYqg3pqpROBdIPvOG3F5ereDHNwoHBI2e50n1BDr1g==", + "license": "MIT" + }, "node_modules/rollup-plugin-visualizer": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.14.0.tgz", - "integrity": "sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-7.0.1.tgz", + "integrity": "sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==", "dev": true, "license": "MIT", "dependencies": { - "open": "^8.4.0", + "open": "^11.0.0", "picomatch": "^4.0.2", "source-map": "^0.7.4", - "yargs": "^17.5.1" + "yargs": "^18.0.0" }, "bin": { "rollup-plugin-visualizer": "dist/bin/cli.js" }, "engines": { - "node": ">=18" + "node": ">=22" }, "peerDependencies": { - "rolldown": "1.x", + "rolldown": "1.x || ^1.0.0-beta || ^1.0.0-rc", "rollup": "2.x || 3.x || 4.x" }, "peerDependenciesMeta": { @@ -10209,71 +10649,14 @@ } } }, - "node_modules/rollup-plugin-visualizer/node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/rollup-plugin-visualizer/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rollup-plugin-visualizer/node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/rollup-plugin-visualizer/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/rollup-plugin-visualizer/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", "dev": true, "license": "BSD-3-Clause", "engines": { - "node": ">= 8" + "node": ">= 12" } }, "node_modules/route-cache": { @@ -10312,9 +10695,9 @@ "license": "MIT" }, "node_modules/run-applescript": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", - "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", "dev": true, "license": "MIT", "engines": { @@ -10325,9 +10708,9 @@ } }, "node_modules/run-async": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", - "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-4.0.6.tgz", + "integrity": "sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==", "dev": true, "license": "MIT", "engines": { @@ -10359,9 +10742,9 @@ } }, "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" @@ -10387,13 +10770,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -10431,13 +10807,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-push-apply/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", @@ -10463,14 +10832,14 @@ "license": "MIT" }, "node_modules/sass": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.2.tgz", - "integrity": "sha512-y5LWb0IlbO4e97Zr7c3mlpabcbBtS+ieiZ9iwDooShpFKWXf62zz5pEPdwrLYm+Bxn1fnbwFGzHuCLSA9tBmrw==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.99.0.tgz", + "integrity": "sha512-kgW13M54DUB7IsIRM5LvJkNlpH+WhMpooUcaWGFARkF1Tc82v9mIWkCbCYf+MBvpIUBSeSOTilpZjEPr2VYE6Q==", "license": "MIT", "optional": true, "dependencies": { "chokidar": "^4.0.0", - "immutable": "^5.0.2", + "immutable": "^5.1.5", "source-map-js": ">=0.6.2 <2.0.0" }, "bin": { @@ -10484,15 +10853,14 @@ } }, "node_modules/sass-embedded": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.97.2.tgz", - "integrity": "sha512-lKJcskySwAtJ4QRirKrikrWMFa2niAuaGenY2ElHjd55IwHUiur5IdKu6R1hEmGYMs4Qm+6rlRW0RvuAkmcryg==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.99.0.tgz", + "integrity": "sha512-gF/juR1aX02lZHkvwxdF80SapkQeg2fetoDF6gIQkNbSw5YEUFspMkyGTjPjgZSgIHuZpy+Wz4PlebKnLXMjdg==", "license": "MIT", "dependencies": { "@bufbuild/protobuf": "^2.5.0", - "buffer-builder": "^0.2.0", "colorjs.io": "^0.5.0", - "immutable": "^5.0.2", + "immutable": "^5.1.5", "rxjs": "^7.4.0", "supports-color": "^8.1.1", "sync-child-process": "^1.0.2", @@ -10505,30 +10873,30 @@ "node": ">=16.0.0" }, "optionalDependencies": { - "sass-embedded-all-unknown": "1.97.2", - "sass-embedded-android-arm": "1.97.2", - "sass-embedded-android-arm64": "1.97.2", - "sass-embedded-android-riscv64": "1.97.2", - "sass-embedded-android-x64": "1.97.2", - "sass-embedded-darwin-arm64": "1.97.2", - "sass-embedded-darwin-x64": "1.97.2", - "sass-embedded-linux-arm": "1.97.2", - "sass-embedded-linux-arm64": "1.97.2", - "sass-embedded-linux-musl-arm": "1.97.2", - "sass-embedded-linux-musl-arm64": "1.97.2", - "sass-embedded-linux-musl-riscv64": "1.97.2", - "sass-embedded-linux-musl-x64": "1.97.2", - "sass-embedded-linux-riscv64": "1.97.2", - "sass-embedded-linux-x64": "1.97.2", - "sass-embedded-unknown-all": "1.97.2", - "sass-embedded-win32-arm64": "1.97.2", - "sass-embedded-win32-x64": "1.97.2" + "sass-embedded-all-unknown": "1.99.0", + "sass-embedded-android-arm": "1.99.0", + "sass-embedded-android-arm64": "1.99.0", + "sass-embedded-android-riscv64": "1.99.0", + "sass-embedded-android-x64": "1.99.0", + "sass-embedded-darwin-arm64": "1.99.0", + "sass-embedded-darwin-x64": "1.99.0", + "sass-embedded-linux-arm": "1.99.0", + "sass-embedded-linux-arm64": "1.99.0", + "sass-embedded-linux-musl-arm": "1.99.0", + "sass-embedded-linux-musl-arm64": "1.99.0", + "sass-embedded-linux-musl-riscv64": "1.99.0", + "sass-embedded-linux-musl-x64": "1.99.0", + "sass-embedded-linux-riscv64": "1.99.0", + "sass-embedded-linux-x64": "1.99.0", + "sass-embedded-unknown-all": "1.99.0", + "sass-embedded-win32-arm64": "1.99.0", + "sass-embedded-win32-x64": "1.99.0" } }, "node_modules/sass-embedded-all-unknown": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.97.2.tgz", - "integrity": "sha512-Fj75+vOIDv1T/dGDwEpQ5hgjXxa2SmMeShPa8yrh2sUz1U44bbmY4YSWPCdg8wb7LnwiY21B2KRFM+HF42yO4g==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.99.0.tgz", + "integrity": "sha512-qPIRG8Uhjo6/OKyAKixTnwMliTz+t9K6Duk0mx5z+K7n0Ts38NSJz2sjDnc7cA/8V9Lb3q09H38dZ1CLwD+ssw==", "cpu": [ "!arm", "!arm64", @@ -10538,13 +10906,13 @@ "license": "MIT", "optional": true, "dependencies": { - "sass": "1.97.2" + "sass": "1.99.0" } }, "node_modules/sass-embedded-android-arm": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.97.2.tgz", - "integrity": "sha512-BPT9m19ttY0QVHYYXRa6bmqmS3Fa2EHByNUEtSVcbm5PkIk1ntmYkG9fn5SJpIMbNmFDGwHx+pfcZMmkldhnRg==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.99.0.tgz", + "integrity": "sha512-EHvJ0C7/VuP78Qr6f8gIUVUmCqIorEQpw2yp3cs3SMg02ZuumlhjXvkTcFBxHmFdFR23vTNk1WnhY6QSeV1nFQ==", "cpu": [ "arm" ], @@ -10558,9 +10926,9 @@ } }, "node_modules/sass-embedded-android-arm64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.97.2.tgz", - "integrity": "sha512-pF6I+R5uThrscd3lo9B3DyNTPyGFsopycdx0tDAESN6s+dBbiRgNgE4Zlpv50GsLocj/lDLCZaabeTpL3ubhYA==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.99.0.tgz", + "integrity": "sha512-fNHhdnP23yqqieCbAdym4N47AleSwjbNt6OYIYx4DdACGdtERjQB4iOX/TaKsW034MupfF7SjnAAK8w7Ptldtg==", "cpu": [ "arm64" ], @@ -10574,9 +10942,9 @@ } }, "node_modules/sass-embedded-android-riscv64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.97.2.tgz", - "integrity": "sha512-fprI8ZTJdz+STgARhg8zReI2QhhGIT9G8nS7H21kc3IkqPRzhfaemSxEtCqZyvDbXPcgYiDLV7AGIReHCuATog==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.99.0.tgz", + "integrity": "sha512-4zqDFRvgGDTL5vTHuIhRxUpXFoh0Cy7Gm5Ywk19ASd8Settmd14YdPRZPmMxfgS1GH292PofV1fq1ifiSEJWBw==", "cpu": [ "riscv64" ], @@ -10590,9 +10958,9 @@ } }, "node_modules/sass-embedded-android-x64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.97.2.tgz", - "integrity": "sha512-RswwSjURZxupsukEmNt2t6RGvuvIw3IAD5sDq1Pc65JFvWFY3eHqCmH0lG0oXqMg6KJcF0eOxHOp2RfmIm2+4w==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.99.0.tgz", + "integrity": "sha512-Uk53k/dGYt04RjOL4gFjZ0Z9DH9DKh8IA8WsXUkNqsxerAygoy3zqRBS2zngfE9K2jiOM87q+1R1p87ory9oQQ==", "cpu": [ "x64" ], @@ -10606,9 +10974,9 @@ } }, "node_modules/sass-embedded-darwin-arm64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.97.2.tgz", - "integrity": "sha512-xcsZNnU1XZh21RE/71OOwNqPVcGBU0qT9A4k4QirdA34+ts9cDIaR6W6lgHOBR/Bnnu6w6hXJR4Xth7oFrefPA==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.99.0.tgz", + "integrity": "sha512-u61/7U3IGLqoO6gL+AHeiAtlTPFwJK1+964U8gp45ZN0hzh1yrARf5O1mivXv8NnNgJvbG2wWJbiNZP0lG/lTg==", "cpu": [ "arm64" ], @@ -10622,9 +10990,9 @@ } }, "node_modules/sass-embedded-darwin-x64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.97.2.tgz", - "integrity": "sha512-T/9DTMpychm6+H4slHCAsYJRJ6eM+9H9idKlBPliPrP4T8JdC2Cs+ZOsYqrObj6eOtAD0fGf+KgyNhnW3xVafA==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.99.0.tgz", + "integrity": "sha512-j/kkk/NcXdIameLezSfXjgCiBkVcA+G60AXrX768/3g0miK1g7M9dj7xOhCb1i7/wQeiEI3rw2LLuO63xRIn4A==", "cpu": [ "x64" ], @@ -10638,9 +11006,9 @@ } }, "node_modules/sass-embedded-linux-arm": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.97.2.tgz", - "integrity": "sha512-yDRe1yifGHl6kibkDlRIJ2ZzAU03KJ1AIvsAh4dsIDgK5jx83bxZLV1ZDUv7a8KK/iV/80LZnxnu/92zp99cXQ==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.99.0.tgz", + "integrity": "sha512-d4IjJZrX2+AwB2YCy1JySwdptJECNP/WfAQLUl8txI3ka8/d3TUI155GtelnoZUkio211PwIeFvvAeZ9RXPQnw==", "cpu": [ "arm" ], @@ -10654,9 +11022,9 @@ } }, "node_modules/sass-embedded-linux-arm64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.97.2.tgz", - "integrity": "sha512-Wh+nQaFer9tyE5xBPv5murSUZE/+kIcg8MyL5uqww6be9Iq+UmZpcJM7LUk+q8klQ9LfTmoDSNFA74uBqxD6IA==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.99.0.tgz", + "integrity": "sha512-btNcFpItcB56L40n8hDeL7sRSMLDXQ56nB5h2deddJx1n60rpKSElJmkaDGHtpkrY+CTtDRV0FZDjHeTJddYew==", "cpu": [ "arm64" ], @@ -10670,9 +11038,9 @@ } }, "node_modules/sass-embedded-linux-musl-arm": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.97.2.tgz", - "integrity": "sha512-GIO6xfAtahJAWItvsXZ3MD1HM6s8cKtV1/HL088aUpKJaw/2XjTCveiOO2AdgMpLNztmq9DZ1lx5X5JjqhS45g==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.99.0.tgz", + "integrity": "sha512-2gvHOupgIw3ytatXT4nFUow71LFbuOZPEwG+HUzcNQDH8ue4Ez8cr03vsv5MDv3lIjOKcXwDvWD980t18MwkoQ==", "cpu": [ "arm" ], @@ -10686,9 +11054,9 @@ } }, "node_modules/sass-embedded-linux-musl-arm64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.97.2.tgz", - "integrity": "sha512-NfUqZSjHwnHvpSa7nyNxbWfL5obDjNBqhHUYmqbHUcmqBpFfHIQsUPgXME9DKn1yBlBc3mWnzMxRoucdYTzd2Q==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.99.0.tgz", + "integrity": "sha512-Hi2bt/IrM5P4FBKz6EcHAlniwfpoz9mnTdvSd58y+avA3SANM76upIkAdSayA8ZGwyL3gZokru1AKDPF9lJDNw==", "cpu": [ "arm64" ], @@ -10702,9 +11070,9 @@ } }, "node_modules/sass-embedded-linux-musl-riscv64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.97.2.tgz", - "integrity": "sha512-qtM4dJ5gLfvyTZ3QencfNbsTEShIWImSEpkThz+Y2nsCMbcMP7/jYOA03UWgPfEOKSehQQ7EIau7ncbFNoDNPQ==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.99.0.tgz", + "integrity": "sha512-mKqGvVaJ9rHMqyZsF0kikQe4NO0f4osb67+X6nLhBiVDKvyazQHJ3zJQreNefIE36yL2sjHIclSB//MprzaQDg==", "cpu": [ "riscv64" ], @@ -10718,9 +11086,9 @@ } }, "node_modules/sass-embedded-linux-musl-x64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.97.2.tgz", - "integrity": "sha512-ZAxYOdmexcnxGnzdsDjYmNe3jGj+XW3/pF/n7e7r8y+5c6D2CQRrCUdapLgaqPt1edOPQIlQEZF8q5j6ng21yw==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.99.0.tgz", + "integrity": "sha512-huhgOMmOc30r7CH7qbRbT9LerSEGSnWuS4CYNOskr9BvNeQp4dIneFufNRGZ7hkOAxUM8DglxIZJN/cyAT95Ew==", "cpu": [ "x64" ], @@ -10734,9 +11102,9 @@ } }, "node_modules/sass-embedded-linux-riscv64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.97.2.tgz", - "integrity": "sha512-reVwa9ZFEAOChXpDyNB3nNHHyAkPMD+FTctQKECqKiVJnIzv2EaFF6/t0wzyvPgBKeatA8jszAIeOkkOzbYVkQ==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.99.0.tgz", + "integrity": "sha512-mevFPIFAVhrH90THifxLfOntFmHtcEKOcdWnep2gJ0X4DVva4AiVIRlQe/7w9JFx5+gnDRE1oaJJkzuFUuYZsA==", "cpu": [ "riscv64" ], @@ -10750,9 +11118,9 @@ } }, "node_modules/sass-embedded-linux-x64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.97.2.tgz", - "integrity": "sha512-bvAdZQsX3jDBv6m4emaU2OMTpN0KndzTAMgJZZrKUgiC0qxBmBqbJG06Oj/lOCoXGCxAvUOheVYpezRTF+Feog==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.99.0.tgz", + "integrity": "sha512-9k7IkULqIZdCIVt4Mboryt6vN8Mjmm3EhI1P3mClU5y5i3wLK5ExC3cbVWk047KsID/fvB1RLslqghXJx5BoxA==", "cpu": [ "x64" ], @@ -10766,9 +11134,9 @@ } }, "node_modules/sass-embedded-unknown-all": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.97.2.tgz", - "integrity": "sha512-86tcYwohjPgSZtgeU9K4LikrKBJNf8ZW/vfsFbdzsRlvc73IykiqanufwQi5qIul0YHuu9lZtDWyWxM2dH/Rsg==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.99.0.tgz", + "integrity": "sha512-P7MxiUtL/XzGo3PX0CaB8lNNEFLQWKikPA8pbKytx9ZCLZSDkt2NJcdAbblB/sqMs4AV3EK2NadV8rI/diq3xg==", "license": "MIT", "optional": true, "os": [ @@ -10778,13 +11146,13 @@ "!win32" ], "dependencies": { - "sass": "1.97.2" + "sass": "1.99.0" } }, "node_modules/sass-embedded-win32-arm64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.97.2.tgz", - "integrity": "sha512-Cv28q8qNjAjZfqfzTrQvKf4JjsZ6EOQ5FxyHUQQeNzm73R86nd/8ozDa1Vmn79Hq0kwM15OCM9epanDuTG1ksA==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.99.0.tgz", + "integrity": "sha512-8whpsW7S+uO8QApKfQuc36m3P9EISzbVZOgC79goob4qGy09u8Gz/rYvw8h1prJDSjltpHGhOzBE6LDz7WvzVw==", "cpu": [ "arm64" ], @@ -10798,9 +11166,9 @@ } }, "node_modules/sass-embedded-win32-x64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.97.2.tgz", - "integrity": "sha512-DVxLxkeDCGIYeyHLAvWW3yy9sy5Ruk5p472QWiyfyyG1G1ASAR8fgfIY5pT0vE6Rv+VAKVLwF3WTspUYu7S1/Q==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.99.0.tgz", + "integrity": "sha512-ipuOv1R2K4MHeuCEAZGpuUbAgma4gb0sdacyrTjJtMOy/OY9UvWfVlwErdB09KIkp4fPDpQJDJfvYN6bC8jeNg==", "cpu": [ "x64" ], @@ -10885,22 +11253,23 @@ } }, "node_modules/selfsigned": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", - "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-5.5.0.tgz", + "integrity": "sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==", + "dev": true, "license": "MIT", "dependencies": { - "@types/node-forge": "^1.3.0", - "node-forge": "^1" + "@peculiar/x509": "^1.14.2", + "pkijs": "^3.3.3" }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -10925,24 +11294,24 @@ } }, "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "range-parser": "~1.2.1", - "statuses": "2.0.1" + "statuses": "~2.0.2" }, "engines": { "node": ">= 0.8.0" @@ -10963,35 +11332,26 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz", + "integrity": "sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==", "dev": true, "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" + "engines": { + "node": ">=20.0.0" } }, "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.19.0" + "send": "~0.19.1" }, "engines": { "node": ">= 0.8.0" @@ -11106,13 +11466,13 @@ } }, "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" + "object-inspect": "^1.13.4" }, "engines": { "node": ">= 0.4" @@ -11219,27 +11579,38 @@ } }, "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/streamx": { - "version": "2.21.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.1.tgz", - "integrity": "sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw==", + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", "dev": true, "license": "MIT", "dependencies": { - "fast-fifo": "^1.3.2", - "queue-tick": "^1.0.1", - "text-decoder": "^1.1.0" + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" }, - "optionalDependencies": { - "bare-events": "^2.2.0" + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/streamx": { + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.25.0.tgz", + "integrity": "sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==", + "dev": true, + "license": "MIT", + "dependencies": { + "events-universal": "^1.0.0", + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" } }, "node_modules/string_decoder": { @@ -11253,17 +11624,20 @@ } }, "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/string-width-cjs": { @@ -11282,6 +11656,36 @@ "node": ">=8" } }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.10", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", @@ -11342,15 +11746,18 @@ } }, "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^6.2.2" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/strip-ansi-cjs": { @@ -11367,6 +11774,16 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -11441,46 +11858,74 @@ } }, "node_modules/sync-message-port": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz", - "integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.2.0.tgz", + "integrity": "sha512-gAQ9qrUN/UCypHtGFbbe7Rc/f9bzO88IwrG8TDo/aMKAApKyD6E3W4Cm0EfhfBb6Z6SKt59tTCTfD+n1xmAvMg==", "license": "MIT", "engines": { "node": ">=16.0.0" } }, + "node_modules/tagged-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", + "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/tapable": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", - "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", + "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", "dev": true, "license": "MIT", "peer": true, "engines": { "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.8.tgz", + "integrity": "sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==", "dev": true, "license": "MIT", "dependencies": { "b4a": "^1.6.4", + "bare-fs": "^4.5.5", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "streamx": "^2.12.5" + } + }, "node_modules/terser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", - "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", + "version": "5.46.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", + "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", "devOptional": true, "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", + "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -11492,9 +11937,9 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", - "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", + "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", "dev": true, "license": "MIT", "peer": true, @@ -11502,7 +11947,6 @@ "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "engines": { @@ -11528,9 +11972,9 @@ } }, "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "peer": true, @@ -11568,9 +12012,9 @@ "peer": true }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", - "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "dev": true, "license": "MIT", "peer": true, @@ -11596,9 +12040,9 @@ "license": "MIT" }, "node_modules/text-decoder": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", - "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", + "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -11613,14 +12057,13 @@ "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", "license": "MIT", "dependencies": { "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">=12.0.0" @@ -11663,9 +12106,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", - "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "dev": true, "license": "MIT", "engines": { @@ -11676,13 +12119,13 @@ } }, "node_modules/ts-essentials": { - "version": "9.4.2", - "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-9.4.2.tgz", - "integrity": "sha512-mB/cDhOvD7pg3YCLk2rOtejHjjdSi9in/IBYE13S+8WA5FBSraYf4V/ws55uvs0IvQ/l0wBOlXy5yBNZ9Bl8ZQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-10.1.1.tgz", + "integrity": "sha512-4aTB7KLHKmUvkjNj8V+EdnmuVTiECzn3K+zIbRthumvHu+j44x3w63xpfs0JL3NGIzGXqoQ7AV591xHO+XrOTw==", "dev": true, "license": "MIT", "peerDependencies": { - "typescript": ">=4.1.0" + "typescript": ">=4.5.0" }, "peerDependenciesMeta": { "typescript": { @@ -11722,6 +12165,26 @@ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, + "node_modules/tsyringe": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/tsyringe/-/tsyringe-4.10.0.tgz", + "integrity": "sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.9.3" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/tsyringe/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -11736,13 +12199,16 @@ } }, "node_modules/type-fest": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.33.0.tgz", - "integrity": "sha512-s6zVrxuyKbbAsSAD5ZPTB77q4YIdRctkTbJ2/Dqlinwz+8ooH2gd+YA7VA6Pa93KML9GockVvoxjZ2vHP+mu8g==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.5.0.tgz", + "integrity": "sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==", "dev": true, "license": "(MIT OR CC0-1.0)", + "dependencies": { + "tagged-tag": "^1.0.0" + }, "engines": { - "node": ">=16" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -11863,15 +12329,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.21.0.tgz", - "integrity": "sha512-txEKYY4XMKwPXxNkN8+AxAdX6iIJAPiJbHE/FpQccs/sxw8Lf26kqwC3cn0xkHlW8kEbLhkhCsjWuMveaY9Rxw==", + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.1.tgz", + "integrity": "sha512-gf6/oHChByg9HJvhMO1iBexJh12AqqTfnuxscMDOVqfJW3htsdRJI/GfPpHTTcyeB8cSTUY2JcZmVgoyPqcrDg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.21.0", - "@typescript-eslint/parser": "8.21.0", - "@typescript-eslint/utils": "8.21.0" + "@typescript-eslint/eslint-plugin": "8.58.1", + "@typescript-eslint/parser": "8.58.1", + "@typescript-eslint/typescript-estree": "8.58.1", + "@typescript-eslint/utils": "8.58.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11881,8 +12348,8 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/uc.micro": { @@ -11893,9 +12360,9 @@ "license": "MIT" }, "node_modules/ufo": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", - "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", "dev": true, "license": "MIT" }, @@ -11919,9 +12386,9 @@ } }, "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "license": "MIT" }, "node_modules/unique-string": { @@ -11991,9 +12458,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", - "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, "funding": [ { @@ -12050,9 +12517,9 @@ } }, "node_modules/update-notifier/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" @@ -12121,21 +12588,22 @@ } }, "node_modules/vite": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.2.tgz", - "integrity": "sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==", + "version": "8.0.8", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.8.tgz", + "integrity": "sha512-dbU7/iLVa8KZALJyLOBOQ88nOXtNG8vxKuOT4I2mD+Ya70KPceF4IAmDsmU0h1Qsn5bPrvsY9HJstCRh3hG6Uw==", "license": "MIT", - "peer": true, "dependencies": { - "esbuild": "^0.25.0", - "postcss": "^8.5.3", - "rollup": "^4.30.1" + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.8", + "rolldown": "1.0.0-rc.15", + "tinyglobby": "^0.2.15" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^20.19.0 || >=22.12.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -12144,14 +12612,15 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.1.0", + "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" @@ -12160,15 +12629,18 @@ "@types/node": { "optional": true }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, "jiti": { "optional": true }, "less": { "optional": true }, - "lightningcss": { - "optional": true - }, "sass": { "optional": true }, @@ -12259,6 +12731,41 @@ } } }, + "node_modules/vite-plugin-checker/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/vite-plugin-checker/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/vite-plugin-checker/node_modules/commander": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", @@ -12269,6 +12776,58 @@ "node": ">= 12" } }, + "node_modules/vite-plugin-checker/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/vite-plugin-checker/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vite-plugin-checker/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/vite-plugin-checker/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/vscode-jsonrpc": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", @@ -12294,10 +12853,17 @@ "vscode": "^1.52.0" } }, + "node_modules/vscode-languageclient/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/vscode-languageclient/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", "dependencies": { @@ -12306,9 +12872,9 @@ } }, "node_modules/vscode-languageclient/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -12357,23 +12923,23 @@ "license": "MIT" }, "node_modules/vscode-uri": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", - "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", "dev": true, "license": "MIT" }, "node_modules/vue": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.27.tgz", - "integrity": "sha512-aJ/UtoEyFySPBGarREmN4z6qNKpbEguYHMmXSiOGk69czc+zhs0NF6tEFrY8TZKAl8N/LYAkd4JHVd5E/AsSmw==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.32.tgz", + "integrity": "sha512-vM4z4Q9tTafVfMAK7IVzmxg34rSzTFMyIe0UUEijUCkn9+23lj0WRfA83dg7eQZIUlgOSGrkViIaCfqSAUXsMw==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.27", - "@vue/compiler-sfc": "3.5.27", - "@vue/runtime-dom": "3.5.27", - "@vue/server-renderer": "3.5.27", - "@vue/shared": "3.5.27" + "@vue/compiler-dom": "3.5.32", + "@vue/compiler-sfc": "3.5.32", + "@vue/runtime-dom": "3.5.32", + "@vue/server-renderer": "3.5.32", + "@vue/shared": "3.5.32" }, "peerDependencies": { "typescript": "*" @@ -12411,60 +12977,37 @@ } }, "node_modules/vue-eslint-parser": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", - "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-10.4.0.tgz", + "integrity": "sha512-Vxi9pJdbN3ZnVGLODVtZ7y4Y2kzAAE2Cm0CZ3ZDRvydVYxZ6VrnBhLikBsRS+dpwj4Jv4UCv21PTEwF5rQ9WXg==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.3.4", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.6" + "debug": "^4.4.0", + "eslint-scope": "^8.2.0 || ^9.0.0", + "eslint-visitor-keys": "^4.2.0 || ^5.0.0", + "espree": "^10.3.0 || ^11.0.0", + "esquery": "^1.6.0", + "semver": "^7.6.3" }, "engines": { - "node": "^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://github.com/sponsors/mysticatea" }, "peerDependencies": { - "eslint": ">=6.0.0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0" } }, - "node_modules/vue-eslint-parser/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/vue-eslint-parser/node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" @@ -12492,9 +13035,9 @@ } }, "node_modules/vue-router": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz", - "integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==", + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.6.4.tgz", + "integrity": "sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==", "license": "MIT", "dependencies": { "@vue/devtools-api": "^6.6.4" @@ -12503,7 +13046,7 @@ "url": "https://github.com/sponsors/posva" }, "peerDependencies": { - "vue": "^3.2.0" + "vue": "^3.5.0" } }, "node_modules/vue-tsc": { @@ -12525,9 +13068,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", - "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", "dev": true, "license": "MIT", "peer": true, @@ -12539,20 +13082,10 @@ "node": ">=10.13.0" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, "node_modules/webpack": { - "version": "5.101.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.0.tgz", - "integrity": "sha512-B4t+nJqytPeuZlHuIKTbalhljIFXeNRqrUGAQgTGlfOl2lXXKXw+yZu6bicycP+PUlM44CxBjCFD6aciKFT3LQ==", + "version": "5.106.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.0.tgz", + "integrity": "sha512-Pkx5joZ9RrdgO5LBkyX1L2ZAJeK/Taz3vqZ9CbcP0wS5LEMx5QkKsEwLl29QJfihZ+DKRBFldzy1O30pJ1MDpA==", "dev": true, "license": "MIT", "peer": true, @@ -12563,25 +13096,25 @@ "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.15.0", + "acorn": "^8.16.0", "acorn-import-phases": "^1.0.3", - "browserslist": "^4.24.0", + "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.2", - "es-module-lexer": "^1.2.1", + "enhanced-resolve": "^5.20.0", + "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", + "loader-runner": "^4.3.1", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^4.3.2", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.11", - "watchpack": "^2.4.1", - "webpack-sources": "^3.3.3" + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.17", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.4" }, "bin": { "webpack": "bin/webpack.js" @@ -12615,9 +13148,9 @@ } }, "node_modules/webpack-sources": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", - "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", + "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", "dev": true, "license": "MIT", "peer": true, @@ -12633,9 +13166,9 @@ "license": "MIT" }, "node_modules/webpack/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "peer": true, @@ -12699,9 +13232,9 @@ "peer": true }, "node_modules/webpack/node_modules/schema-utils": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", - "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "dev": true, "license": "MIT", "peer": true, @@ -12782,13 +13315,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/which-collection": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", @@ -12809,9 +13335,9 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", "dev": true, "license": "MIT", "dependencies": { @@ -12845,56 +13371,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/widest-line/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/widest-line/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/widest-line/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/widest-line/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/wildcard": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", @@ -12913,18 +13389,20 @@ } }, "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/wrap-ansi-cjs": { @@ -12946,6 +13424,63 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", @@ -12964,6 +13499,23 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "license": "ISC" }, + "node_modules/wsl-utils": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.1.tgz", + "integrity": "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0", + "powershell-utils": "^0.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/xdg-basedir": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", @@ -13003,27 +13555,29 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", - "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", "devOptional": true, "license": "ISC", "bin": { "yaml": "bin.mjs" }, "engines": { - "node": ">= 14" + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, "node_modules/yaml-eslint-parser": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-1.2.3.tgz", - "integrity": "sha512-4wZWvE398hCP7O8n3nXKu/vdq1HcH01ixYlCREaJL5NUMwQ0g3MaGFUBNSlmBtKmhbtVG/Cm6lyYmSVTEVil8A==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-1.3.2.tgz", + "integrity": "sha512-odxVsHAkZYYglR30aPYRY4nUGJnoJ2y1ww2HDvZALo0BDETv9kWbi16J52eHs+PWRNmF4ub6nZqfVOeesOvntg==", "dev": true, "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.0.0", - "lodash": "^4.17.21", "yaml": "^2.0.0" }, "engines": { @@ -13034,32 +13588,56 @@ } }, "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", "dev": true, "license": "MIT", "dependencies": { - "cliui": "^8.0.1", + "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", + "string-width": "^7.2.0", "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "yargs-parser": "^22.0.0" }, "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=23" } }, "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", "dev": true, "license": "ISC", "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/yocto-queue": { @@ -13075,19 +13653,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yoctocolors-cjs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", - "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/zip-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", diff --git a/package.json b/package.json index 4d9f0dc..d5cad12 100644 --- a/package.json +++ b/package.json @@ -15,12 +15,12 @@ }, "dependencies": { "@quasar/cli": "^2.5.0", - "@quasar/extras": "^1.17.0", - "@quasar/vite-plugin": "^1.10.0", + "@quasar/extras": "^1.18.0", + "@quasar/vite-plugin": "^1.11.0", "axios": "^1.2.1", "browser-image-compression": "^2.0.2", "pinia": "^2.0.11", - "quasar": "^2.18.6", + "quasar": "^2.19.3", "sass-embedded": "^1.97.2", "vue": "^3.5.27", "vue-i18n": "^9.2.2", @@ -29,7 +29,7 @@ "devDependencies": { "@eslint/js": "^9.14.0", "@intlify/unplugin-vue-i18n": "^2.0.0", - "@quasar/app-vite": "^2.4.0", + "@quasar/app-vite": "^2.6.0", "@quasar/quasar-app-extension-qmarkdown": "^2.0.5", "@twa-dev/types": "^8.0.2", "@types/node": "^20.17.30", diff --git a/public/logos/GoogleDrive.webp b/public/logos/GoogleDrive.webp new file mode 100644 index 0000000000000000000000000000000000000000..cc6a7079eb0cff55cc75d6753e45cfa211119f4d GIT binary patch literal 9086 zcmaL7byQrv^EkX{fwH*!;!d&Ry0{m2FIL=&ySo+W;)_FZC@#ec6nA$iS{#b)k3Q$~ zJ@0?-O>Q!i$;{22nIv;_uDZO8j3*5Mpd&4*rme=Wiv|DyuwHK%+`lZLq$bya4gkQ_ z_SwSTptb1 zT7y4pdr?x~67=czq1pS+(5matqk|weDB6KmHU;m%D5v|dLUXn=^s(Vsto`Nx3YaH- z;AVeS+-^UDfRkE9^F~e$n}(kMgH^lnC7dthIsD`M*q378Sy&p&&-A}>2HtDsU2X4C z^zK+7ZfE^LmhL6%vsTFTg%yjKBu=FH*D->)YpvhKHqBPjbw-}bHMk#!xKY z>L9bOz}FCqeA;xaY1@rJ=6KfCN8?7wbWvGq&LioMyNi09zn~oTw|U2%z-we&5#^Ff3+5+dsI4Sm7hiJOD`*n80pLkqLZPIWlzM(-l zd8iK+2EWSCF)+Wke}B*`_0Ex(%l7viXRT#lvp~~tq8wpH0{or6hal}ZR5SlNDH??( zb-QRM0nXU|#!-<^P{M_8i{q728#a3%zDm&;)5_ZM*uSTX07@}u7N%<;;l)2yf|}wD z9cN{E6g*=Bd5b>B8w*}W$vnv=%vnXNqMFm#woEgYu*ci6*FM9lI{du!884Rw>K^AyGdKVrp49Vh`K#=d{$PQ=^%P?&2# zhZWz_z_ak*9jHeyyoRy{l>JoZ$b74<2 zu#*fYF&~>XaCn$1K!lW|c;sVc6l#aKORUw4lrwQ1BKdW}kf`9!$_SfX6ChLbWT-05 zcW5$IYsxp9A{506mJYj=U1_NOS9;oy#8NacJ2|#gx`S!Fcy}`jw_SN$`eyarAt_>Q zqy%U(&!IYAe7}7729BFY=H!k{Dg*Emn*6HD1k|)Q3=djaG4DHrD(on zN*Dcy58POtThe$;gpCvyNzoL`Da2(egac7r%A>z%NE5^d;Om3!NXy80glzI%*|Izj zd6@%{2VE0~pi_Uu7IeWC#O&+Y@CIAD^nF&8)W?ryB-L@W1o6v@?49jurc*Y_eV$~O zA4fy1frJ?m-MhwpUxfDX<4XcRA2zj-OiwzyP87rV zaAz6R@gO(jE$YSD(J(SAuZ)kC!LV;7aor`2q>~%tgp;Ly%XZ*M%Q4RAe)J))i)Dh33{$G{6Cg}dmS>w% z?j&^2s)9+j=lL~flg0<0kLj}`5Z%H)YxM*Q^-76O*+jyXgQ6KoIPY5xcF(8wYMtB) zok`Tg`@0-yvma8TX5np&EnL)p+1*Kvl75(K26>LJS#`BHRnMprq=_*!41Yf2C-i zNT%@+Ka;RK?%h>9OsDl658G2*`BoV3&SA%^r+!La%K`@B0tvwh?MKBY+*`V{o)udo zS#8lW!aPO#gTwy6>dTsFVH9Xj+q-f|#rnzdOZ8R+ewP5xUOI(H>zve2K z6sbvEnvNpA77us|RXeq~TFDGMHLN9w1u21J_ORmbMJ+cV@(EI&WR%#Bb4-@WaAz)L z>Le)yQ0zVM`${+}F_R(AbL5)$wRQPb*h?wAw4s|}H{3wRDZze<>e~S?$u zCoJbQqt*6e(RrA%p8#udyV7do`cYZ*SLO>qclzW8f3Uo48Xwh;ZVX{!N?!3x^@c8i zq~K-IMhmBiR@)KaZ8Jc|oA9(` zgO*BbYBXC#Fe!gJkE-85B`7@mccoc_x}1ei?)Hx)1vC~}+x^z0@zp~H5>Ro!8wV$9 z`B=E|c7M`(Tn8;lai;4wNIN`fzvH*~zg>Si!$t0M_08ln4im$}tT!F*%Un{5t6U&* z*VaH1oI)kZbizW0UMNI-P!%_yBU#>;RFF4^b2x1E&~6@zQfQSNLPY49Mw7{_21s zVR8G0Vrs+8X1|fzKn-cQlue3{I^Z^5%gm0q+L=G~=nW6^4L&}anaQSwk@gG|S68hJp@pd>wt>*u5yEjC53-z%w{H`^M|Ai7W z06LE`X&P2y7Iu>0f|Q|7DQsXt;rlyee!TQ9n~dAn2n#bPYF~jHBgwU7y3Yz@>AKC7q%%0@Bg^V)E= zxA&J7--U?*DH)!~E(A2R*^DQ65A}HON(zqkn}WD7D->8ZM^hoL7UB>c-skxO9FgN} z35&!v6@Q1GEGsB&B{#yhCZVJXBn@F74>_=}X5`{$w-)*poM*LB*0VYNde%o8s)^tq z6WbRS(<`_=2V@uSMe@9xsYuqVqGr~CLTr%{CaH|G-< zCJWvDu(Oxr)w|I*$4)PamnM$^Y|n24dIAdl00G&74KH6_R$#EvjIuX(s%n@Al-pv@ zfjxI(FMnV(k9U9mOgf$DyineVT?9V*!^4DLzQA;DQ(>^DntaR+Ra4CSm%fc2F@OK1 zXOqXko0`6wNz6vR_D`y5kGL<13Bd>5Za=E1Pl4^M=0q`UZ?wBimIfr|YBFwJ)I2`z zJ!fl@>;Db3#{VCo(PO%#afNsdnErt&4;1#7=6~J77=vM5+Bq$&$QZ(uq1$jX32Ei% z!Y(1=$Kpj@*K?xYDPq=`D0ns6c*oVlt3OXTW+3;>y1WIW+TYX-~vR2F>}yG#}<@%W*Wj@Xp=}fS34;~#&=7VE~;BDhymkFZ!`FZ7X#B0 zKc5E^4#C81i`JfFYMUW!$ZG{kBES4eVuYPo1Z-# zjFRAIUpT&bcn;{6Ak$`I+#LL$jn&3#^ZK2DDF276l-kCsOzNZKn8C9yGdwD`+sfw< z;!X{Ouqb+SLpO4y`FKSS+AzLJvzXfg{&St)>dp}a&Ddo)&BRBCzEp zYPN<+)-iVqY^m|cz`alVo>ztABIM3R`xOwzEeI!+$=0HJ8Io250quuzA(e z%QywEQexO5!I$CCe@>GC5Fu7|pt~jF^C_2^ zFD^~kaM2Y1C~NFN&E)-OrRGHS>5cw>XUL*B;Ke`a_4ovUo;W8;q%3UizMj8Cob^5F z7?|`MH~A<(+n(EX$GmsMW?L)RVW{0?l2~Us{`6&ZJ%z!`i;_L%XkZ=tEPo`(h%?`x z{}ddk#-)^rjaEjQdXH7(p@@>SaP_b-oGE;J^+WNhXyUX*B`Fc^CnjXvYO9D^fT_T< zi*z16W?SS;kIAc(>s?Gb+4IfcM@TcUULITQTsJUOdQ^lZjnWG*8;qRmP4itG(D=LZ zLG*dr@vfR%1r{Sb=eL1MJ@8>Nj2c01e}8y#vyq|>t$w6va}Vw95X3liSS%@no_t3R zde-AkjubCQ`?>K#;#_{HRodG6yN5tS4v=OBX+X|k_rVP37t;qtHZy9Hv(2Z~A{ zFG0wOFYS0{CGC0RY040mWvpG-5Y1eTdsLhDS_?Tpv5-6H5-hYF9aQ$jN$*m#yo9rm zujo07;+U4IMpSrR6m@J;7?fe9GS&7%@~T5qS!01ozq?v|h#p9UvZBp2!-8ba|U zDz~Az^h{CSEd1jy!-jD4&>hcQ#8&^x4ENo&inzCt(9l}U)E2w93#_pKHSeX+_vgej zV-N{VG+~g<&Db+KBvXP`Ax9p~Bsi4HJ8*e%r!bXy5@+`Jmv>6eVq^~{R{|BRM$4*P z_*L(=GXV`P#V(c3&C+!}4 zjjxHjkAJgZ(_6?3V|r#*Rn1A8jj@^aOrPkXQNc-~*&Sz&fBdkraXU$@eIO(8=vkPp zH&?t~n*{yhQ-s+A!NDE4(*|t4U6{;~meMFOlXoO>Ri#=&tFGrq#y^|=dv&X!S2n0W zoS`3oY!Cu}1%wqJBhIe2b`wPcv$rlHjlnGR`BIACri&w$Nsvi_)pI@IB-W zRe`=iWygM-%jFjzjS+L4nLgK~S5|yBx?Sq@uxYKX;V+c|P-qhMilhg{0QS3Y z4TSfDHD`6R>@_CGSfzauYrvbLQX~QowtA4jZN451wh_yQ!bxzRWh^vL%*#<|*CQT| zs5#`%0Wo2wW7K-c3jqYE^rVWj0DyJu-!q2R5wP8@$=^ zC47UA^3`e@`Szsg&Wp`ktt9xW>4MT}C2{(umk7O~9b4WlVhSQ+ z;pKqN-a3%6egg(`FA;yVtQx)KmMxVwEg5^nadI>yMe=AGq$7^LTWB8_H=XRQxF*O6 zU-e;T&m7m_!m&bV8`TgVL81=2z*1Z|9Ln!OsuggV7ls#OccjHY+ghGL(n@asTz{;l zR3lYtIZOW|)3+6C0=ZJG2X!Fm)7W~tUge6WA&Q3|vDFMC;>Md}-?Gs%(EackqQn&n zRVI2w776L+6$}pDYJ8BNJyhNNxltajDUsxfoYLbsox z?*a-*O#_qndv_0$P@4JZm&pvMEfR#r2Sbz-wdia_P1!G_6LZ~8fT`3mxK8K5lN8;1sq%fKWN8oY}qWK7R zyQ-PV_)-*%9+3S*XB!qZWo;9t5>y;)KBJ*znPfOxm9k7E7Ccl&26TkVOBg zH+f)Y&*MKV{Nq%dEl5o9o&4T1qc@ z$#=itu=uF_4V)8zfPJD(YVGdL32E~&baw}qm+9ZFwGHn1gH~fkg;7@`5xd(KuRz&{ zV@>j0mCWXYSi`z7G#l;~T&ntb(CsCl>y_7#qX zyxN-gVBc7s90bb~a`TBoKZutf!hDRqG7%giz^yjLe$cvU9q`?3zmTwVOrhmEb2bap z!Iobco0Quhr^uV+cPMSLyp+b4$9`*@u#X#q*y1mgHqO-zHGQS=M&jzdu(c~-W%NqV zLi2joaDWh#Y?u32uE&yxaq;b(jZuf#pIebCi3fTOrbslSm-3IksD-EMHxEimC;SAt z+1&z1rOYxIhkeStm_G>_%r-{$b`s7TtnVxG1#dS<`04vJLC`P>y8Xo+Xd?MDPHC2 zsa*$b3?p>a+4~SqT(W_fc;T1%XTFO#yT#>9vUvw@Dz5yUL;v&8a}y?iawF@O1n)Uw z)x!Q7ItCf)Ob&*+4*)96DJiwTg>+NRAV=*>%4`G(-&5VmxW-`Oq~!J-#|;%JVrMek z<)rOWt8a=Qkgz*DDsL3dsu$@4iNl zuZ*8Q;PU!CnUZy!HivzQAx$Z^k3;v0#~=-UMG! zjlwO8#SwN^6>bw`UOf2oh&=g(=66Ss-*lA@flGW&8J2@dPca=2`$C^jM{axqNO-CH zPsdEub|h@Y#yeAFmJ&WxiO$b@EIZQ9mOf)iJu@bQRl034_Cz%ZeQ-xmb0?ep91*Js z*W*WuToWU`0H#P{g3R{ch^+ZkZbEtgs}PUxTY4)DC5Lk4`E@yomdP{tmf3~LMz-(` zs~>&g6WO4Im9(BZkz$2UXZrcj=wA!ERch`rc`uliu#h5(ZzNI6EW~Amdu98|$MkO0 zyH1~GkZ6he`GE+h0cEYUFw34Fa1-UKp*VaqYv|o`M})C7?l)3!qapClRPSH#>hKu$ zjGpkF3@u9H;z}VC>kl=qe0Yidj}a-j3`xbkyHl2{$dWO8Idm4f%}H1)1^e`_m#5N( zjgq}J)(oH5M3h%ao*L&bKlkT>Pq?=uwYi=%tmk|sj+lcLd&VdGRp{O~Q{oi%-t~d{ zHAyxG^ws`vkss!dtiz^OqMR(ANNaLZ-tKo=?EYfQcs;aDv{B-rt( zv0AchnRRJIAZGWM7kxy`v!JAlGEy;qBq`pg{HpiY>j~l2zv=gk2%dAL{&d#D#@JzO zZ3vhWeO()pvO0SAd0ow?pk5w7vz2*goE6216dco*|R3jYyzF6<*(Pae?(h(;^!#D{0DYVB@=XUsfga<8&}<@D9gkRIK|-rj~P zrj0JI2Nwh=Zg`;-O**mzb%+$-rV2(syBFo?0kl(WN9(QK7)62$Z2K!Gbf7Rqs<){=mla2OU!Wj?c=vgO+tlckT7~_HV^8 zaPQwB#sYo__0t2ujR5lbTPp}|NIWT{b zu7h=sat*ON%A+7utGGk0JHEV^%-KVVsK6w>OMJ0?vj!?_?z%$yQmVsOcCP^7_o)b$ z3tUAm&VJmCzI97Va*tNFBl@0P-^De>;XZy!UZ1}+rE-^7! z5S^cL;a+Hiq`O3M^mInJQ!6ut=h*BK4;asOJq5ooJ}zcCggoB!5Pbs);9NTs;85ez zpZ*;vnRy2~qN>ocy`__8OI!vU77s;Ky=cd7FNOk603y@)wTFMPB5660lu+wY^fuHL;CFb! zXk5cj%}cM9&RM}mqG;f$fCw`(6Tl!v; z@J@_zhoP^bS=;&H;c2%7_VF$MnxS?jdJ4e8nT(HaTo$3VFc2S=7mX}6^+pH9$C>hW zRHrUSsDf+7<--fNbcgH@v|*lgm@&;kpfqhrE??%t%q;02;{Y-C57lzRl!B-Fr`10Y zyTZ1ekrFN^F@4U^rv+nkU*Of`skg)90kZVc2WiJkeh5bvA;7DiD`m`Zym8B}V~N6X zF?nW2J7oPm&)VpsC^tfF$_r(3U*o+)@0qjT6DoAAJyyZR)z74+Q{0D)O`>lhnj4m< zv)XMx#pY&;0_>b^a1lzkR)gTtVnDX3PUX^8Eh&i>wo@&$a*-EX&b52wg%5kUYwMPt zE4;|Dp}T)m%JC9^$sO8LrwKQOGGB;h_7ESxtmrbs|I$?(gB&^U_9k{=hd&h#oJc%v zP58W(3o6C`@**p4TlG0c#4phvbvGVU$9?Bgc|JJVpH&%vy-BpN*eRs*ff2jB)5UG? zS<&;fHjbx(c*GV4i=am*}O`&{;{?g-1p_Ls_PQ}dZ6PlxWGg8-U;EOiyR!&;41QC29b*n{*^giau=Lm&$nUj zAU|Xg*t_-sKS2wCy=|_X;b6?53zW`!F;j^$sc4H6o%8o2yd_)Bxm4Xd-J?OAVeN{V zx_BW`6ex+-!%`ug*HQ1CQWgpA^pspdvX_uX0g1|Q~fos&!=6&3W*`uW`YC=Ma8}vI(9JnL!UqmX za5}zd5c*cE-Icr9{9v(^5VhO z{tF31A4}4r@-i{_^MD&GE()3|>g1 zs+|?ibg?oEP&i=4fmSp#Km5e>kp)00000 literal 0 HcmV?d00001 diff --git a/public/logos/Telegram.png b/public/logos/Telegram.png new file mode 100644 index 0000000000000000000000000000000000000000..e2402f9e525f1fb6b7a0c395c1ad770b97b69e32 GIT binary patch literal 197144 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 R(%5(?~CYw~sKI!QW7$^D7iL-woJ0c^MQ% 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 O9<6hA|2o%MaOR&QoM#pQ literal 0 HcmV?d00001 diff --git a/public/telegram-web-app.js b/public/telegram-web-app.js new file mode 100644 index 0000000..7b7888f --- /dev/null +++ b/public/telegram-web-app.js @@ -0,0 +1,3352 @@ +// WebView +(function () { + var eventHandlers = {}; + + var locationHash = ''; + try { + locationHash = location.hash.toString(); + } catch (e) {} + + var initParams = urlParseHashParams(locationHash); + var storedParams = sessionStorageGet('initParams'); + if (storedParams) { + for (var key in storedParams) { + if (typeof initParams[key] === 'undefined') { + initParams[key] = storedParams[key]; + } + } + } + sessionStorageSet('initParams', initParams); + + var isIframe = false, iFrameStyle; + try { + isIframe = (window.parent != null && window != window.parent); + if (isIframe) { + window.addEventListener('message', function (event) { + if (event.source !== window.parent) return; + try { + var dataParsed = JSON.parse(event.data); + } catch (e) { + return; + } + if (!dataParsed || !dataParsed.eventType) { + return; + } + if (dataParsed.eventType == 'set_custom_style') { + if (event.origin === 'https://web.telegram.org') { + iFrameStyle.innerHTML = dataParsed.eventData; + } + } else if (dataParsed.eventType == 'reload_iframe') { + try { + window.parent.postMessage(JSON.stringify({eventType: 'iframe_will_reload'}), '*'); + } catch (e) {} + location.reload(); + } else { + receiveEvent(dataParsed.eventType, dataParsed.eventData); + } + }); + iFrameStyle = document.createElement('style'); + document.head.appendChild(iFrameStyle); + try { + window.parent.postMessage(JSON.stringify({eventType: 'iframe_ready', eventData: {reload_supported: true}}), '*'); + } catch (e) {} + } + } catch (e) {} + + function urlSafeDecode(urlencoded) { + try { + urlencoded = urlencoded.replace(/\+/g, '%20'); + return decodeURIComponent(urlencoded); + } catch (e) { + return urlencoded; + } + } + + function urlParseHashParams(locationHash) { + locationHash = locationHash.replace(/^#/, ''); + var params = {}; + if (!locationHash.length) { + return params; + } + if (locationHash.indexOf('=') < 0 && locationHash.indexOf('?') < 0) { + params._path = urlSafeDecode(locationHash); + return params; + } + var qIndex = locationHash.indexOf('?'); + if (qIndex >= 0) { + var pathParam = locationHash.substr(0, qIndex); + params._path = urlSafeDecode(pathParam); + locationHash = locationHash.substr(qIndex + 1); + } + var query_params = urlParseQueryString(locationHash); + for (var k in query_params) { + params[k] = query_params[k]; + } + return params; + } + + function urlParseQueryString(queryString) { + var params = {}; + if (!queryString.length) { + return params; + } + var queryStringParams = queryString.split('&'); + var i, param, paramName, paramValue; + for (i = 0; i < queryStringParams.length; i++) { + param = queryStringParams[i].split('='); + paramName = urlSafeDecode(param[0]); + paramValue = param[1] == null ? null : urlSafeDecode(param[1]); + params[paramName] = paramValue; + } + return params; + } + + // Telegram apps will implement this logic to add service params (e.g. tgShareScoreUrl) to game URL + function urlAppendHashParams(url, addHash) { + // url looks like 'https://game.com/path?query=1#hash' + // addHash looks like 'tgShareScoreUrl=' + encodeURIComponent('tgb://share_game_score?hash=very_long_hash123') + + var ind = url.indexOf('#'); + if (ind < 0) { + // https://game.com/path -> https://game.com/path#tgShareScoreUrl=etc + return url + '#' + addHash; + } + var curHash = url.substr(ind + 1); + if (curHash.indexOf('=') >= 0 || curHash.indexOf('?') >= 0) { + // https://game.com/#hash=1 -> https://game.com/#hash=1&tgShareScoreUrl=etc + // https://game.com/#path?query -> https://game.com/#path?query&tgShareScoreUrl=etc + return url + '&' + addHash; + } + // https://game.com/#hash -> https://game.com/#hash?tgShareScoreUrl=etc + if (curHash.length > 0) { + return url + '?' + addHash; + } + // https://game.com/# -> https://game.com/#tgShareScoreUrl=etc + return url + addHash; + } + + function postEvent(eventType, callback, eventData) { + if (!callback) { + callback = function () {}; + } + if (eventData === undefined) { + eventData = ''; + } + console.log('[Telegram.WebView] > postEvent', eventType, eventData); + + if (window.TelegramWebviewProxy !== undefined) { + TelegramWebviewProxy.postEvent(eventType, JSON.stringify(eventData)); + callback(); + } + else if (window.external && 'notify' in window.external) { + window.external.notify(JSON.stringify({eventType: eventType, eventData: eventData})); + callback(); + } + else if (isIframe) { + try { + var trustedTarget = 'https://web.telegram.org'; + // For now we don't restrict target, for testing purposes + trustedTarget = '*'; + window.parent.postMessage(JSON.stringify({eventType: eventType, eventData: eventData}), trustedTarget); + callback(); + } catch (e) { + callback(e); + } + } + else { + callback({notAvailable: true}); + } + }; + + function receiveEvent(eventType, eventData) { + console.log('[Telegram.WebView] < receiveEvent', eventType, eventData); + callEventCallbacks(eventType, function(callback) { + callback(eventType, eventData); + }); + } + + function callEventCallbacks(eventType, func) { + var curEventHandlers = eventHandlers[eventType]; + if (curEventHandlers === undefined || + !curEventHandlers.length) { + return; + } + for (var i = 0; i < curEventHandlers.length; i++) { + try { + func(curEventHandlers[i]); + } catch (e) {} + } + } + + function onEvent(eventType, callback) { + if (eventHandlers[eventType] === undefined) { + eventHandlers[eventType] = []; + } + var index = eventHandlers[eventType].indexOf(callback); + if (index === -1) { + eventHandlers[eventType].push(callback); + } + }; + + function offEvent(eventType, callback) { + if (eventHandlers[eventType] === undefined) { + return; + } + var index = eventHandlers[eventType].indexOf(callback); + if (index === -1) { + return; + } + eventHandlers[eventType].splice(index, 1); + }; + + function openProtoUrl(url) { + if (!url.match(/^(web\+)?tgb?:\/\/./)) { + return false; + } + var useIframe = navigator.userAgent.match(/iOS|iPhone OS|iPhone|iPod|iPad/i) ? true : false; + if (useIframe) { + var iframeContEl = document.getElementById('tgme_frame_cont') || document.body; + var iframeEl = document.createElement('iframe'); + iframeContEl.appendChild(iframeEl); + var pageHidden = false; + var enableHidden = function () { + pageHidden = true; + }; + window.addEventListener('pagehide', enableHidden, false); + window.addEventListener('blur', enableHidden, false); + if (iframeEl !== null) { + iframeEl.src = url; + } + setTimeout(function() { + if (!pageHidden) { + window.location = url; + } + window.removeEventListener('pagehide', enableHidden, false); + window.removeEventListener('blur', enableHidden, false); + }, 2000); + } + else { + window.location = url; + } + return true; + } + + function sessionStorageSet(key, value) { + try { + window.sessionStorage.setItem('__telegram__' + key, JSON.stringify(value)); + return true; + } catch(e) {} + return false; + } + function sessionStorageGet(key) { + try { + return JSON.parse(window.sessionStorage.getItem('__telegram__' + key)); + } catch(e) {} + return null; + } + + if (!window.Telegram) { + window.Telegram = {}; + } + window.Telegram.WebView = { + initParams: initParams, + isIframe: isIframe, + onEvent: onEvent, + offEvent: offEvent, + postEvent: postEvent, + receiveEvent: receiveEvent, + callEventCallbacks: callEventCallbacks + }; + + window.Telegram.Utils = { + urlSafeDecode: urlSafeDecode, + urlParseQueryString: urlParseQueryString, + urlParseHashParams: urlParseHashParams, + urlAppendHashParams: urlAppendHashParams, + sessionStorageSet: sessionStorageSet, + sessionStorageGet: sessionStorageGet + }; + + // For Windows Phone app + window.TelegramGameProxy_receiveEvent = receiveEvent; + + // App backward compatibility + window.TelegramGameProxy = { + receiveEvent: receiveEvent + }; +})(); + +// WebApp +(function () { + var Utils = window.Telegram.Utils; + var WebView = window.Telegram.WebView; + var initParams = WebView.initParams; + var isIframe = WebView.isIframe; + + var WebApp = {}; + var webAppInitData = '', webAppInitDataUnsafe = {}; + var themeParams = {}, colorScheme = 'light'; + var webAppVersion = '6.0'; + var webAppPlatform = 'unknown'; + var webAppIsActive = true; + var webAppIsFullscreen = false; + var webAppIsOrientationLocked = false; + var webAppBackgroundColor = 'bg_color'; + var webAppHeaderColorKey = 'bg_color'; + var webAppHeaderColor = null; + + if (initParams.tgWebAppData && initParams.tgWebAppData.length) { + webAppInitData = initParams.tgWebAppData; + webAppInitDataUnsafe = Utils.urlParseQueryString(webAppInitData); + for (var key in webAppInitDataUnsafe) { + var val = webAppInitDataUnsafe[key]; + try { + if (val.substr(0, 1) == '{' && val.substr(-1) == '}' || + val.substr(0, 1) == '[' && val.substr(-1) == ']') { + webAppInitDataUnsafe[key] = JSON.parse(val); + } + } catch (e) {} + } + } + var stored_theme_params = Utils.sessionStorageGet('themeParams'); + if (initParams.tgWebAppThemeParams && initParams.tgWebAppThemeParams.length) { + var themeParamsRaw = initParams.tgWebAppThemeParams; + try { + var theme_params = JSON.parse(themeParamsRaw); + if (theme_params) { + setThemeParams(theme_params); + } + } catch (e) {} + } + if (stored_theme_params) { + setThemeParams(stored_theme_params); + } + var stored_def_colors = Utils.sessionStorageGet('defaultColors'); + if (initParams.tgWebAppDefaultColors && initParams.tgWebAppDefaultColors.length) { + var defColorsRaw = initParams.tgWebAppDefaultColors; + try { + var def_colors = JSON.parse(defColorsRaw); + if (def_colors) { + setDefaultColors(def_colors); + } + } catch (e) {} + } + if (stored_def_colors) { + setDefaultColors(stored_def_colors); + } + if (initParams.tgWebAppVersion) { + webAppVersion = initParams.tgWebAppVersion; + } + if (initParams.tgWebAppPlatform) { + webAppPlatform = initParams.tgWebAppPlatform; + } + + var stored_fullscreen = Utils.sessionStorageGet('isFullscreen'); + if (initParams.tgWebAppFullscreen) { + setFullscreen(true); + } + if (stored_fullscreen) { + setFullscreen(stored_fullscreen == 'yes'); + } + + var stored_orientation_lock = Utils.sessionStorageGet('isOrientationLocked'); + if (stored_orientation_lock) { + setOrientationLock(stored_orientation_lock == 'yes'); + } + + function onThemeChanged(eventType, eventData) { + if (eventData.theme_params) { + setThemeParams(eventData.theme_params); + window.Telegram.WebApp.MainButton.setParams({}); + window.Telegram.WebApp.SecondaryButton.setParams({}); + updateHeaderColor(); + updateBackgroundColor(); + updateBottomBarColor(); + receiveWebViewEvent('themeChanged'); + } + } + + var lastWindowHeight = window.innerHeight; + function onViewportChanged(eventType, eventData) { + if (eventData.height) { + window.removeEventListener('resize', onWindowResize); + setViewportHeight(eventData); + } + } + + function onWindowResize(e) { + if (lastWindowHeight != window.innerHeight) { + lastWindowHeight = window.innerHeight; + receiveWebViewEvent('viewportChanged', { + isStateStable: true + }); + } + } + + function onSafeAreaChanged(eventType, eventData) { + if (eventData) { + setSafeAreaInset(eventData); + } + } + function onContentSafeAreaChanged(eventType, eventData) { + if (eventData) { + setContentSafeAreaInset(eventData); + } + } + + function onVisibilityChanged(eventType, eventData) { + if (eventData.is_visible) { + webAppIsActive = true; + receiveWebViewEvent('activated'); + } else { + webAppIsActive = false; + receiveWebViewEvent('deactivated'); + } + } + + function linkHandler(e) { + if (e.metaKey || e.ctrlKey) return; + var el = e.target; + while (el.tagName != 'A' && el.parentNode) { + el = el.parentNode; + } + if (el.tagName == 'A' && + el.target != '_blank' && + (el.protocol == 'http:' || el.protocol == 'https:') && + el.hostname == 't.me') { + WebApp.openTelegramLink(el.href); + e.preventDefault(); + } + } + + function strTrim(str) { + return str.toString().replace(/^\s+|\s+$/g, ''); + } + + function receiveWebViewEvent(eventType) { + var args = Array.prototype.slice.call(arguments); + eventType = args.shift(); + WebView.callEventCallbacks('webview:' + eventType, function(callback) { + callback.apply(WebApp, args); + }); + } + + function onWebViewEvent(eventType, callback) { + WebView.onEvent('webview:' + eventType, callback); + }; + + function offWebViewEvent(eventType, callback) { + WebView.offEvent('webview:' + eventType, callback); + }; + + function setCssProperty(name, value) { + var root = document.documentElement; + if (root && root.style && root.style.setProperty) { + root.style.setProperty('--tg-' + name, value); + } + } + + function setFullscreen(is_fullscreen) { + webAppIsFullscreen = !!is_fullscreen; + Utils.sessionStorageSet('isFullscreen', webAppIsFullscreen ? 'yes' : 'no'); + } + + function setOrientationLock(is_locked) { + webAppIsOrientationLocked = !!is_locked; + Utils.sessionStorageSet('isOrientationLocked', webAppIsOrientationLocked ? 'yes' : 'no'); + } + + function setThemeParams(theme_params) { + // temp iOS fix + if (theme_params.bg_color == '#1c1c1d' && + theme_params.bg_color == theme_params.secondary_bg_color) { + theme_params.secondary_bg_color = '#2c2c2e'; + } + var color; + for (var key in theme_params) { + if (color = parseColorToHex(theme_params[key])) { + themeParams[key] = color; + if (key == 'bg_color') { + colorScheme = isColorDark(color) ? 'dark' : 'light' + setCssProperty('color-scheme', colorScheme); + } + key = 'theme-' + key.split('_').join('-'); + setCssProperty(key, color); + } + } + Utils.sessionStorageSet('themeParams', themeParams); + } + + function setDefaultColors(def_colors) { + if (colorScheme == 'dark') { + if (def_colors.bg_dark_color) { + webAppBackgroundColor = def_colors.bg_dark_color; + } + if (def_colors.header_dark_color) { + webAppHeaderColorKey = null; + webAppHeaderColor = def_colors.header_dark_color; + } + } else { + if (def_colors.bg_color) { + webAppBackgroundColor = def_colors.bg_color; + } + if (def_colors.header_color) { + webAppHeaderColorKey = null; + webAppHeaderColor = def_colors.header_color; + } + } + Utils.sessionStorageSet('defaultColors', def_colors); + } + + var webAppCallbacks = {}; + function generateCallbackId(len) { + var tries = 100; + while (--tries) { + var id = '', chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', chars_len = chars.length; + for (var i = 0; i < len; i++) { + id += chars[Math.floor(Math.random() * chars_len)]; + } + if (!webAppCallbacks[id]) { + webAppCallbacks[id] = {}; + return id; + } + } + throw Error('WebAppCallbackIdGenerateFailed'); + } + + var viewportHeight = false, viewportStableHeight = false, isExpanded = true; + function setViewportHeight(data) { + if (typeof data !== 'undefined') { + isExpanded = !!data.is_expanded; + viewportHeight = data.height; + if (data.is_state_stable) { + viewportStableHeight = data.height; + } + receiveWebViewEvent('viewportChanged', { + isStateStable: !!data.is_state_stable + }); + } + var height, stable_height; + if (viewportHeight !== false) { + height = (viewportHeight - bottomBarHeight) + 'px'; + } else { + height = bottomBarHeight ? 'calc(100vh - ' + bottomBarHeight + 'px)' : '100vh'; + } + if (viewportStableHeight !== false) { + stable_height = (viewportStableHeight - bottomBarHeight) + 'px'; + } else { + stable_height = bottomBarHeight ? 'calc(100vh - ' + bottomBarHeight + 'px)' : '100vh'; + } + setCssProperty('viewport-height', height); + setCssProperty('viewport-stable-height', stable_height); + } + + var safeAreaInset = {top: 0, bottom: 0, left: 0, right: 0}; + function setSafeAreaInset(data) { + if (typeof data !== 'undefined') { + if (typeof data.top !== 'undefined') { + safeAreaInset.top = data.top; + } + if (typeof data.bottom !== 'undefined') { + safeAreaInset.bottom = data.bottom; + } + if (typeof data.left !== 'undefined') { + safeAreaInset.left = data.left; + } + if (typeof data.right !== 'undefined') { + safeAreaInset.right = data.right; + } + receiveWebViewEvent('safeAreaChanged'); + } + setCssProperty('safe-area-inset-top', safeAreaInset.top + 'px'); + setCssProperty('safe-area-inset-bottom', safeAreaInset.bottom + 'px'); + setCssProperty('safe-area-inset-left', safeAreaInset.left + 'px'); + setCssProperty('safe-area-inset-right', safeAreaInset.right + 'px'); + } + + var contentSafeAreaInset = {top: 0, bottom: 0, left: 0, right: 0}; + function setContentSafeAreaInset(data) { + if (typeof data !== 'undefined') { + if (typeof data.top !== 'undefined') { + contentSafeAreaInset.top = data.top; + } + if (typeof data.bottom !== 'undefined') { + contentSafeAreaInset.bottom = data.bottom; + } + if (typeof data.left !== 'undefined') { + contentSafeAreaInset.left = data.left; + } + if (typeof data.right !== 'undefined') { + contentSafeAreaInset.right = data.right; + } + receiveWebViewEvent('contentSafeAreaChanged'); + } + setCssProperty('content-safe-area-inset-top', contentSafeAreaInset.top + 'px'); + setCssProperty('content-safe-area-inset-bottom', contentSafeAreaInset.bottom + 'px'); + setCssProperty('content-safe-area-inset-left', contentSafeAreaInset.left + 'px'); + setCssProperty('content-safe-area-inset-right', contentSafeAreaInset.right + 'px'); + } + + var isClosingConfirmationEnabled = false; + function setClosingConfirmation(need_confirmation) { + if (!versionAtLeast('6.2')) { + console.warn('[Telegram.WebApp] Closing confirmation is not supported in version ' + webAppVersion); + return; + } + isClosingConfirmationEnabled = !!need_confirmation; + WebView.postEvent('web_app_setup_closing_behavior', false, {need_confirmation: isClosingConfirmationEnabled}); + } + + var isVerticalSwipesEnabled = true; + function toggleVerticalSwipes(enable_swipes) { + if (!versionAtLeast('7.7')) { + console.warn('[Telegram.WebApp] Changing swipes behavior is not supported in version ' + webAppVersion); + return; + } + isVerticalSwipesEnabled = !!enable_swipes; + WebView.postEvent('web_app_setup_swipe_behavior', false, {allow_vertical_swipe: isVerticalSwipesEnabled}); + } + + function onFullscreenChanged(eventType, eventData) { + setFullscreen(eventData.is_fullscreen); + receiveWebViewEvent('fullscreenChanged'); + } + function onFullscreenFailed(eventType, eventData) { + if (eventData.error == 'ALREADY_FULLSCREEN' && !webAppIsFullscreen) { + setFullscreen(true); + } + receiveWebViewEvent('fullscreenFailed', { + error: eventData.error + }); + } + + function toggleOrientationLock(locked) { + if (!versionAtLeast('8.0')) { + console.warn('[Telegram.WebApp] Orientation locking is not supported in version ' + webAppVersion); + return; + } + setOrientationLock(locked); + WebView.postEvent('web_app_toggle_orientation_lock', false, {locked: webAppIsOrientationLocked}); + } + + var homeScreenCallbacks = []; + function onHomeScreenAdded(eventType, eventData) { + receiveWebViewEvent('homeScreenAdded'); + } + function onHomeScreenChecked(eventType, eventData) { + var status = eventData.status || 'unknown'; + if (homeScreenCallbacks.length > 0) { + for (var i = 0; i < homeScreenCallbacks.length; i++) { + var callback = homeScreenCallbacks[i]; + callback(status); + } + homeScreenCallbacks = []; + } + receiveWebViewEvent('homeScreenChecked', { + status: status + }); + } + + var WebAppShareMessageOpened = false; + function onPreparedMessageSent(eventType, eventData) { + if (WebAppShareMessageOpened) { + var requestData = WebAppShareMessageOpened; + WebAppShareMessageOpened = false; + if (requestData.callback) { + requestData.callback(true); + } + receiveWebViewEvent('shareMessageSent'); + } + } + function onPreparedMessageFailed(eventType, eventData) { + if (WebAppShareMessageOpened) { + var requestData = WebAppShareMessageOpened; + WebAppShareMessageOpened = false; + if (requestData.callback) { + requestData.callback(false); + } + receiveWebViewEvent('shareMessageFailed', { + error: eventData.error + }); + } + } + + var WebAppEmojiStatusRequested = false; + function onEmojiStatusSet(eventType, eventData) { + if (WebAppEmojiStatusRequested) { + var requestData = WebAppEmojiStatusRequested; + WebAppEmojiStatusRequested = false; + if (requestData.callback) { + requestData.callback(true); + } + receiveWebViewEvent('emojiStatusSet'); + } + } + function onEmojiStatusFailed(eventType, eventData) { + if (WebAppEmojiStatusRequested) { + var requestData = WebAppEmojiStatusRequested; + WebAppEmojiStatusRequested = false; + if (requestData.callback) { + requestData.callback(false); + } + receiveWebViewEvent('emojiStatusFailed', { + error: eventData.error + }); + } + } + var WebAppEmojiStatusAccessRequested = false; + function onEmojiStatusAccessRequested(eventType, eventData) { + if (WebAppEmojiStatusAccessRequested) { + var requestData = WebAppEmojiStatusAccessRequested; + WebAppEmojiStatusAccessRequested = false; + if (requestData.callback) { + requestData.callback(eventData.status == 'allowed'); + } + receiveWebViewEvent('emojiStatusAccessRequested', { + status: eventData.status + }); + } + } + + var webAppPopupOpened = false; + function onPopupClosed(eventType, eventData) { + if (webAppPopupOpened) { + var popupData = webAppPopupOpened; + webAppPopupOpened = false; + var button_id = null; + if (typeof eventData.button_id !== 'undefined') { + button_id = eventData.button_id; + } + if (popupData.callback) { + popupData.callback(button_id); + } + receiveWebViewEvent('popupClosed', { + button_id: button_id + }); + } + } + + + function getHeaderColor() { + if (webAppHeaderColorKey == 'secondary_bg_color') { + return themeParams.secondary_bg_color; + } else if (webAppHeaderColorKey == 'bg_color') { + return themeParams.bg_color; + } + return webAppHeaderColor; + } + function setHeaderColor(color) { + if (!versionAtLeast('6.1')) { + console.warn('[Telegram.WebApp] Header color is not supported in version ' + webAppVersion); + return; + } + if (!versionAtLeast('6.9')) { + if (themeParams.bg_color && + themeParams.bg_color == color) { + color = 'bg_color'; + } else if (themeParams.secondary_bg_color && + themeParams.secondary_bg_color == color) { + color = 'secondary_bg_color'; + } + } + var head_color = null, color_key = null; + if (color == 'bg_color' || color == 'secondary_bg_color') { + color_key = color; + } else if (versionAtLeast('6.9')) { + head_color = parseColorToHex(color); + if (!head_color) { + console.error('[Telegram.WebApp] Header color format is invalid', color); + throw Error('WebAppHeaderColorInvalid'); + } + } + if (!versionAtLeast('6.9') && + color_key != 'bg_color' && + color_key != 'secondary_bg_color') { + console.error('[Telegram.WebApp] Header color key should be one of Telegram.WebApp.themeParams.bg_color, Telegram.WebApp.themeParams.secondary_bg_color, \'bg_color\', \'secondary_bg_color\'', color); + throw Error('WebAppHeaderColorKeyInvalid'); + } + webAppHeaderColorKey = color_key; + webAppHeaderColor = head_color; + updateHeaderColor(); + } + var appHeaderColorKey = null, appHeaderColor = null; + function updateHeaderColor() { + if (appHeaderColorKey != webAppHeaderColorKey || + appHeaderColor != webAppHeaderColor) { + appHeaderColorKey = webAppHeaderColorKey; + appHeaderColor = webAppHeaderColor; + if (appHeaderColor) { + WebView.postEvent('web_app_set_header_color', false, {color: webAppHeaderColor}); + } else { + WebView.postEvent('web_app_set_header_color', false, {color_key: webAppHeaderColorKey}); + } + } + } + + function getBackgroundColor() { + if (webAppBackgroundColor == 'secondary_bg_color') { + return themeParams.secondary_bg_color; + } else if (webAppBackgroundColor == 'bg_color') { + return themeParams.bg_color; + } + return webAppBackgroundColor; + } + function setBackgroundColor(color) { + if (!versionAtLeast('6.1')) { + console.warn('[Telegram.WebApp] Background color is not supported in version ' + webAppVersion); + return; + } + var bg_color; + if (color == 'bg_color' || color == 'secondary_bg_color') { + bg_color = color; + } else { + bg_color = parseColorToHex(color); + if (!bg_color) { + console.error('[Telegram.WebApp] Background color format is invalid', color); + throw Error('WebAppBackgroundColorInvalid'); + } + } + webAppBackgroundColor = bg_color; + updateBackgroundColor(); + } + var appBackgroundColor = null; + function updateBackgroundColor() { + var color = getBackgroundColor(); + if (appBackgroundColor != color) { + appBackgroundColor = color; + WebView.postEvent('web_app_set_background_color', false, {color: color}); + } + } + + var bottomBarColor = 'bottom_bar_bg_color'; + function getBottomBarColor() { + if (bottomBarColor == 'bottom_bar_bg_color') { + return themeParams.bottom_bar_bg_color || themeParams.secondary_bg_color || '#ffffff'; + } else if (bottomBarColor == 'secondary_bg_color') { + return themeParams.secondary_bg_color; + } else if (bottomBarColor == 'bg_color') { + return themeParams.bg_color; + } + return bottomBarColor; + } + function setBottomBarColor(color) { + if (!versionAtLeast('7.10')) { + console.warn('[Telegram.WebApp] Bottom bar color is not supported in version ' + webAppVersion); + return; + } + var bg_color; + if (color == 'bg_color' || color == 'secondary_bg_color' || color == 'bottom_bar_bg_color') { + bg_color = color; + } else { + bg_color = parseColorToHex(color); + if (!bg_color) { + console.error('[Telegram.WebApp] Bottom bar color format is invalid', color); + throw Error('WebAppBottomBarColorInvalid'); + } + } + bottomBarColor = bg_color; + updateBottomBarColor(); + window.Telegram.WebApp.SecondaryButton.setParams({}); + } + var appBottomBarColor = null; + function updateBottomBarColor() { + var color = getBottomBarColor(); + if (appBottomBarColor != color) { + appBottomBarColor = color; + WebView.postEvent('web_app_set_bottom_bar_color', false, {color: color}); + } + if (initParams.tgWebAppDebug) { + updateDebugBottomBar(); + } + } + + + function parseColorToHex(color) { + color += ''; + var match; + if (match = /^\s*#([0-9a-f]{6})\s*$/i.exec(color)) { + return '#' + match[1].toLowerCase(); + } + else if (match = /^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(color)) { + return ('#' + match[1] + match[1] + match[2] + match[2] + match[3] + match[3]).toLowerCase(); + } + else if (match = /^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(color)) { + var r = parseInt(match[1]), g = parseInt(match[2]), b = parseInt(match[3]); + r = (r < 16 ? '0' : '') + r.toString(16); + g = (g < 16 ? '0' : '') + g.toString(16); + b = (b < 16 ? '0' : '') + b.toString(16); + return '#' + r + g + b; + } + return false; + } + + function isColorDark(rgb) { + rgb = rgb.replace(/[\s#]/g, ''); + if (rgb.length == 3) { + rgb = rgb[0] + rgb[0] + rgb[1] + rgb[1] + rgb[2] + rgb[2]; + } + var r = parseInt(rgb.substr(0, 2), 16); + var g = parseInt(rgb.substr(2, 2), 16); + var b = parseInt(rgb.substr(4, 2), 16); + var hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b)); + return hsp < 120; + } + + function versionCompare(v1, v2) { + if (typeof v1 !== 'string') v1 = ''; + if (typeof v2 !== 'string') v2 = ''; + v1 = v1.replace(/^\s+|\s+$/g, '').split('.'); + v2 = v2.replace(/^\s+|\s+$/g, '').split('.'); + var a = Math.max(v1.length, v2.length), i, p1, p2; + for (i = 0; i < a; i++) { + p1 = parseInt(v1[i]) || 0; + p2 = parseInt(v2[i]) || 0; + if (p1 == p2) continue; + if (p1 > p2) return 1; + return -1; + } + return 0; + } + + function versionAtLeast(ver) { + return versionCompare(webAppVersion, ver) >= 0; + } + + function byteLength(str) { + if (window.Blob) { + try { return new Blob([str]).size; } catch (e) {} + } + var s = str.length; + for (var i=str.length-1; i>=0; i--) { + var code = str.charCodeAt(i); + if (code > 0x7f && code <= 0x7ff) s++; + else if (code > 0x7ff && code <= 0xffff) s+=2; + if (code >= 0xdc00 && code <= 0xdfff) i--; + } + return s; + } + + var BackButton = (function() { + var isVisible = false; + + var backButton = {}; + Object.defineProperty(backButton, 'isVisible', { + set: function(val){ setParams({is_visible: val}); }, + get: function(){ return isVisible; }, + enumerable: true + }); + + var curButtonState = null; + + WebView.onEvent('back_button_pressed', onBackButtonPressed); + + function onBackButtonPressed() { + receiveWebViewEvent('backButtonClicked'); + } + + function buttonParams() { + return {is_visible: isVisible}; + } + + function buttonState(btn_params) { + if (typeof btn_params === 'undefined') { + btn_params = buttonParams(); + } + return JSON.stringify(btn_params); + } + + function buttonCheckVersion() { + if (!versionAtLeast('6.1')) { + console.warn('[Telegram.WebApp] BackButton is not supported in version ' + webAppVersion); + return false; + } + return true; + } + + function updateButton() { + var btn_params = buttonParams(); + var btn_state = buttonState(btn_params); + if (curButtonState === btn_state) { + return; + } + curButtonState = btn_state; + WebView.postEvent('web_app_setup_back_button', false, btn_params); + } + + function setParams(params) { + if (!buttonCheckVersion()) { + return backButton; + } + if (typeof params.is_visible !== 'undefined') { + isVisible = !!params.is_visible; + } + updateButton(); + return backButton; + } + + backButton.onClick = function(callback) { + if (buttonCheckVersion()) { + onWebViewEvent('backButtonClicked', callback); + } + return backButton; + }; + backButton.offClick = function(callback) { + if (buttonCheckVersion()) { + offWebViewEvent('backButtonClicked', callback); + } + return backButton; + }; + backButton.show = function() { + return setParams({is_visible: true}); + }; + backButton.hide = function() { + return setParams({is_visible: false}); + }; + return backButton; + })(); + + var debugBottomBar = null, debugBottomBarBtns = {}, bottomBarHeight = 0; + if (initParams.tgWebAppDebug) { + debugBottomBar = document.createElement('tg-bottom-bar'); + var debugBottomBarStyle = { + display: 'flex', + gap: '7px', + font: '600 14px/18px sans-serif', + width: '100%', + background: getBottomBarColor(), + position: 'fixed', + left: '0', + right: '0', + bottom: '0', + margin: '0', + padding: '7px', + textAlign: 'center', + boxSizing: 'border-box', + zIndex: '10000' + }; + for (var k in debugBottomBarStyle) { + debugBottomBar.style[k] = debugBottomBarStyle[k]; + } + document.addEventListener('DOMContentLoaded', function onDomLoaded(event) { + document.removeEventListener('DOMContentLoaded', onDomLoaded); + document.body.appendChild(debugBottomBar); + }); + var animStyle = document.createElement('style'); + animStyle.innerHTML = 'tg-bottom-button.shine { position: relative; overflow: hidden; } tg-bottom-button.shine:before { content:""; position: absolute; top: 0; width: 100%; height: 100%; background: linear-gradient(120deg, transparent, rgba(255, 255, 255, .2), transparent); animation: tg-bottom-button-shine 5s ease-in-out infinite; } @-webkit-keyframes tg-bottom-button-shine { 0% {left: -100%;} 12%,100% {left: 100%}} @keyframes tg-bottom-button-shine { 0% {left: -100%;} 12%,100% {left: 100%}}'; + debugBottomBar.appendChild(animStyle); + } + function updateDebugBottomBar() { + var mainBtn = debugBottomBarBtns.main._bottomButton; + var secondaryBtn = debugBottomBarBtns.secondary._bottomButton; + if (mainBtn.isVisible || secondaryBtn.isVisible) { + debugBottomBar.style.display = 'flex'; + bottomBarHeight = 58; + if (mainBtn.isVisible && secondaryBtn.isVisible) { + if (secondaryBtn.position == 'top') { + debugBottomBar.style.flexDirection = 'column-reverse'; + bottomBarHeight += 51; + } else if (secondaryBtn.position == 'bottom') { + debugBottomBar.style.flexDirection = 'column'; + bottomBarHeight += 51; + } else if (secondaryBtn.position == 'left') { + debugBottomBar.style.flexDirection = 'row-reverse'; + } else if (secondaryBtn.position == 'right') { + debugBottomBar.style.flexDirection = 'row'; + } + } + } else { + debugBottomBar.style.display = 'none'; + bottomBarHeight = 0; + } + debugBottomBar.style.background = getBottomBarColor(); + if (document.documentElement) { + document.documentElement.style.boxSizing = 'border-box'; + document.documentElement.style.paddingBottom = bottomBarHeight + 'px'; + } + setViewportHeight(); + } + + + var BottomButtonConstructor = function(type) { + var isMainButton = (type == 'main'); + if (isMainButton) { + var setupFnName = 'web_app_setup_main_button'; + var tgEventName = 'main_button_pressed'; + var webViewEventName = 'mainButtonClicked'; + var buttonTextDefault = 'Continue'; + var buttonColorDefault = function(){ return themeParams.button_color || '#2481cc'; }; + var buttonTextColorDefault = function(){ return themeParams.button_text_color || '#ffffff'; }; + } else { + var setupFnName = 'web_app_setup_secondary_button'; + var tgEventName = 'secondary_button_pressed'; + var webViewEventName = 'secondaryButtonClicked'; + var buttonTextDefault = 'Cancel'; + var buttonColorDefault = function(){ return getBottomBarColor(); }; + var buttonTextColorDefault = function(){ return themeParams.button_color || '#2481cc'; }; + } + + var isVisible = false; + var isActive = true; + var hasShineEffect = false; + var isProgressVisible = false; + var iconCustomEmojiId = false; + var buttonType = type; + var buttonText = buttonTextDefault; + var buttonColor = false; + var buttonTextColor = false; + var buttonPosition = 'left'; + + var bottomButton = {}; + Object.defineProperty(bottomButton, 'type', { + get: function(){ return buttonType; }, + enumerable: true + }); + Object.defineProperty(bottomButton, 'iconCustomEmojiId', { + set: function(val){ bottomButton.setParams({icon_custom_emoji_id: val}); }, + get: function(){ return iconCustomEmojiId; }, + enumerable: true + }); + Object.defineProperty(bottomButton, 'text', { + set: function(val){ bottomButton.setParams({text: val}); }, + get: function(){ return buttonText; }, + enumerable: true + }); + Object.defineProperty(bottomButton, 'color', { + set: function(val){ bottomButton.setParams({color: val}); }, + get: function(){ return buttonColor || buttonColorDefault(); }, + enumerable: true + }); + Object.defineProperty(bottomButton, 'textColor', { + set: function(val){ bottomButton.setParams({text_color: val}); }, + get: function(){ return buttonTextColor || buttonTextColorDefault(); }, + enumerable: true + }); + Object.defineProperty(bottomButton, 'isVisible', { + set: function(val){ bottomButton.setParams({is_visible: val}); }, + get: function(){ return isVisible; }, + enumerable: true + }); + Object.defineProperty(bottomButton, 'isProgressVisible', { + get: function(){ return isProgressVisible; }, + enumerable: true + }); + Object.defineProperty(bottomButton, 'isActive', { + set: function(val){ bottomButton.setParams({is_active: val}); }, + get: function(){ return isActive; }, + enumerable: true + }); + Object.defineProperty(bottomButton, 'hasShineEffect', { + set: function(val){ bottomButton.setParams({has_shine_effect: val}); }, + get: function(){ return hasShineEffect; }, + enumerable: true + }); + if (!isMainButton) { + Object.defineProperty(bottomButton, 'position', { + set: function(val){ bottomButton.setParams({position: val}); }, + get: function(){ return buttonPosition; }, + enumerable: true + }); + } + + var curButtonState = null; + + WebView.onEvent(tgEventName, onBottomButtonPressed); + + var debugBtn = null; + if (initParams.tgWebAppDebug) { + debugBtn = document.createElement('tg-bottom-button'); + var debugBtnStyle = { + display: 'none', + width: '100%', + height: '44px', + borderRadius: '0', + background: 'no-repeat right center', + padding: '13px 15px', + textAlign: 'center', + boxSizing: 'border-box' + }; + for (var k in debugBtnStyle) { + debugBtn.style[k] = debugBtnStyle[k]; + } + debugBottomBar.appendChild(debugBtn); + debugBtn.addEventListener('click', onBottomButtonPressed, false); + debugBtn._bottomButton = bottomButton; + debugBottomBarBtns[type] = debugBtn; + } + + function onBottomButtonPressed() { + if (isActive) { + receiveWebViewEvent(webViewEventName); + } + } + + function buttonParams() { + var color = bottomButton.color; + var text_color = bottomButton.textColor; + if (isVisible) { + var params = { + is_visible: true, + is_active: isActive, + is_progress_visible: isProgressVisible, + icon_custom_emoji_id: iconCustomEmojiId, + text: buttonText, + color: color, + text_color: text_color, + has_shine_effect: hasShineEffect && isActive && !isProgressVisible + }; + if (!isMainButton) { + params.position = buttonPosition; + } + } else { + var params = { + is_visible: false + }; + } + return params; + } + + function buttonState(btn_params) { + if (typeof btn_params === 'undefined') { + btn_params = buttonParams(); + } + return JSON.stringify(btn_params); + } + + function updateButton() { + var btn_params = buttonParams(); + var btn_state = buttonState(btn_params); + if (curButtonState === btn_state) { + return; + } + curButtonState = btn_state; + WebView.postEvent(setupFnName, false, btn_params); + if (initParams.tgWebAppDebug) { + updateDebugButton(btn_params); + } + } + + function updateDebugButton(btn_params) { + if (btn_params.is_visible) { + debugBtn.style.display = 'block'; + + debugBtn.style.opacity = btn_params.is_active ? '1' : '0.8'; + debugBtn.style.cursor = btn_params.is_active ? 'pointer' : 'auto'; + debugBtn.disabled = !btn_params.is_active; + debugBtn.innerText = btn_params.text; + debugBtn.className = btn_params.has_shine_effect ? 'shine' : ''; + debugBtn.style.backgroundImage = btn_params.is_progress_visible ? "url('data:image/svg+xml," + encodeURIComponent('') + "')" : 'none'; + debugBtn.style.backgroundColor = btn_params.color; + debugBtn.style.color = btn_params.text_color; + } else { + debugBtn.style.display = 'none'; + } + updateDebugBottomBar(); + } + + function setParams(params) { + if (typeof params.icon_custom_emoji_id !== 'undefined') { + var emoji_id = params.icon_custom_emoji_id; + if (emoji_id === false || emoji_id === null) { + emoji_id = ''; + } + if (emoji_id !== '' && !/^[0-9]{10,20}$/.test(emoji_id)) { + console.error('[Telegram.WebApp] Bottom button icon custom emoji is invalid', params.icon_custom_emoji_id); + throw Error('WebAppBottomButtonParamInvalid'); + } + iconCustomEmojiId = emoji_id; + } + if (typeof params.text !== 'undefined') { + var text = strTrim(params.text); + if (!text.length && !iconCustomEmojiId) { + console.error('[Telegram.WebApp] Bottom button text is required', params.text); + throw Error('WebAppBottomButtonParamInvalid'); + } + if (text.length > 64) { + console.error('[Telegram.WebApp] Bottom button text is too long', text); + throw Error('WebAppBottomButtonParamInvalid'); + } + buttonText = text; + } + if (typeof params.color !== 'undefined') { + if (params.color === false || + params.color === null) { + buttonColor = false; + } else { + var color = parseColorToHex(params.color); + if (!color) { + console.error('[Telegram.WebApp] Bottom button color format is invalid', params.color); + throw Error('WebAppBottomButtonParamInvalid'); + } + buttonColor = color; + } + } + if (typeof params.text_color !== 'undefined') { + if (params.text_color === false || + params.text_color === null) { + buttonTextColor = false; + } else { + var text_color = parseColorToHex(params.text_color); + if (!text_color) { + console.error('[Telegram.WebApp] Bottom button text color format is invalid', params.text_color); + throw Error('WebAppBottomButtonParamInvalid'); + } + buttonTextColor = text_color; + } + } + if (typeof params.is_visible !== 'undefined') { + if (params.is_visible && + !bottomButton.text.length) { + console.error('[Telegram.WebApp] Bottom button text is required'); + throw Error('WebAppBottomButtonParamInvalid'); + } + isVisible = !!params.is_visible; + } + if (typeof params.has_shine_effect !== 'undefined') { + hasShineEffect = !!params.has_shine_effect; + } + if (!isMainButton && typeof params.position !== 'undefined') { + if (params.position != 'left' && params.position != 'right' && + params.position != 'top' && params.position != 'bottom') { + console.error('[Telegram.WebApp] Bottom button posiition is invalid', params.position); + throw Error('WebAppBottomButtonParamInvalid'); + } + buttonPosition = params.position; + } + if (typeof params.is_active !== 'undefined') { + isActive = !!params.is_active; + } + updateButton(); + return bottomButton; + } + + bottomButton.setText = function(text) { + return bottomButton.setParams({text: text}); + }; + bottomButton.onClick = function(callback) { + onWebViewEvent(webViewEventName, callback); + return bottomButton; + }; + bottomButton.offClick = function(callback) { + offWebViewEvent(webViewEventName, callback); + return bottomButton; + }; + bottomButton.show = function() { + return bottomButton.setParams({is_visible: true}); + }; + bottomButton.hide = function() { + return bottomButton.setParams({is_visible: false}); + }; + bottomButton.enable = function() { + return bottomButton.setParams({is_active: true}); + }; + bottomButton.disable = function() { + return bottomButton.setParams({is_active: false}); + }; + bottomButton.showProgress = function(leaveActive) { + isActive = !!leaveActive; + isProgressVisible = true; + updateButton(); + return bottomButton; + }; + bottomButton.hideProgress = function() { + if (!bottomButton.isActive) { + isActive = true; + } + isProgressVisible = false; + updateButton(); + return bottomButton; + } + bottomButton.setParams = setParams; + return bottomButton; + }; + var MainButton = BottomButtonConstructor('main'); + var SecondaryButton = BottomButtonConstructor('secondary'); + + var SettingsButton = (function() { + var isVisible = false; + + var settingsButton = {}; + Object.defineProperty(settingsButton, 'isVisible', { + set: function(val){ setParams({is_visible: val}); }, + get: function(){ return isVisible; }, + enumerable: true + }); + + var curButtonState = null; + + WebView.onEvent('settings_button_pressed', onSettingsButtonPressed); + + function onSettingsButtonPressed() { + receiveWebViewEvent('settingsButtonClicked'); + } + + function buttonParams() { + return {is_visible: isVisible}; + } + + function buttonState(btn_params) { + if (typeof btn_params === 'undefined') { + btn_params = buttonParams(); + } + return JSON.stringify(btn_params); + } + + function buttonCheckVersion() { + if (!versionAtLeast('6.10')) { + console.warn('[Telegram.WebApp] SettingsButton is not supported in version ' + webAppVersion); + return false; + } + return true; + } + + function updateButton() { + var btn_params = buttonParams(); + var btn_state = buttonState(btn_params); + if (curButtonState === btn_state) { + return; + } + curButtonState = btn_state; + WebView.postEvent('web_app_setup_settings_button', false, btn_params); + } + + function setParams(params) { + if (!buttonCheckVersion()) { + return settingsButton; + } + if (typeof params.is_visible !== 'undefined') { + isVisible = !!params.is_visible; + } + updateButton(); + return settingsButton; + } + + settingsButton.onClick = function(callback) { + if (buttonCheckVersion()) { + onWebViewEvent('settingsButtonClicked', callback); + } + return settingsButton; + }; + settingsButton.offClick = function(callback) { + if (buttonCheckVersion()) { + offWebViewEvent('settingsButtonClicked', callback); + } + return settingsButton; + }; + settingsButton.show = function() { + return setParams({is_visible: true}); + }; + settingsButton.hide = function() { + return setParams({is_visible: false}); + }; + return settingsButton; + })(); + + var HapticFeedback = (function() { + var hapticFeedback = {}; + + function triggerFeedback(params) { + if (!versionAtLeast('6.1')) { + console.warn('[Telegram.WebApp] HapticFeedback is not supported in version ' + webAppVersion); + return hapticFeedback; + } + if (params.type == 'impact') { + if (params.impact_style != 'light' && + params.impact_style != 'medium' && + params.impact_style != 'heavy' && + params.impact_style != 'rigid' && + params.impact_style != 'soft') { + console.error('[Telegram.WebApp] Haptic impact style is invalid', params.impact_style); + throw Error('WebAppHapticImpactStyleInvalid'); + } + } else if (params.type == 'notification') { + if (params.notification_type != 'error' && + params.notification_type != 'success' && + params.notification_type != 'warning') { + console.error('[Telegram.WebApp] Haptic notification type is invalid', params.notification_type); + throw Error('WebAppHapticNotificationTypeInvalid'); + } + } else if (params.type == 'selection_change') { + // no params needed + } else { + console.error('[Telegram.WebApp] Haptic feedback type is invalid', params.type); + throw Error('WebAppHapticFeedbackTypeInvalid'); + } + WebView.postEvent('web_app_trigger_haptic_feedback', false, params); + return hapticFeedback; + } + + hapticFeedback.impactOccurred = function(style) { + return triggerFeedback({type: 'impact', impact_style: style}); + }; + hapticFeedback.notificationOccurred = function(type) { + return triggerFeedback({type: 'notification', notification_type: type}); + }; + hapticFeedback.selectionChanged = function() { + return triggerFeedback({type: 'selection_change'}); + }; + return hapticFeedback; + })(); + + var CloudStorage = (function() { + var cloudStorage = {}; + + function invokeStorageMethod(method, params, callback) { + if (!versionAtLeast('6.9')) { + console.error('[Telegram.WebApp] CloudStorage is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + invokeCustomMethod(method, params, callback); + return cloudStorage; + } + + cloudStorage.setItem = function(key, value, callback) { + return invokeStorageMethod('saveStorageValue', {key: key, value: value}, callback); + }; + cloudStorage.getItem = function(key, callback) { + return cloudStorage.getItems([key], callback ? function(err, res) { + if (err) callback(err); + else callback(null, res[key]); + } : null); + }; + cloudStorage.getItems = function(keys, callback) { + return invokeStorageMethod('getStorageValues', {keys: keys}, callback); + }; + cloudStorage.removeItem = function(key, callback) { + return cloudStorage.removeItems([key], callback); + }; + cloudStorage.removeItems = function(keys, callback) { + return invokeStorageMethod('deleteStorageValues', {keys: keys}, callback); + }; + cloudStorage.getKeys = function(callback) { + return invokeStorageMethod('getStorageKeys', {}, callback); + }; + return cloudStorage; + })(); + + var DeviceStorage = (function() { + var deviceStorage = {}; + + WebView.onEvent('device_storage_key_saved', onDeviceStorageEvent); + WebView.onEvent('device_storage_key_received', onDeviceStorageEvent); + WebView.onEvent('device_storage_cleared', onDeviceStorageEvent); + WebView.onEvent('device_storage_failed', onDeviceStorageEvent); + + function onDeviceStorageEvent(eventType, eventData) { + if (eventData.req_id && webAppCallbacks[eventData.req_id]) { + var requestData = webAppCallbacks[eventData.req_id]; + delete webAppCallbacks[eventData.req_id]; + var res = null, err = null; + if (eventType == 'device_storage_failed') { + err = eventData.error || 'UNKNOWN_ERROR'; + } else if (eventType == 'device_storage_key_received') { + res = eventData.value; + } else { + res = true; + } + if (requestData.callback) { + requestData.callback(err, res); + } + } + } + + function invokeStorageMethod(method, params, callback) { + if (!versionAtLeast('9.0')) { + console.error('[Telegram.WebApp] DeviceStorage is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + var req_id = generateCallbackId(16); + var req_params = {req_id: req_id}; + for (var k in params) { + req_params[k] = params[k]; + } + webAppCallbacks[req_id] = { + callback: callback + }; + WebView.postEvent(method, false, req_params); + return deviceStorage; + } + + deviceStorage.setItem = function(key, value, callback) { + return invokeStorageMethod('web_app_device_storage_save_key', {key: key, value: value}, callback); + }; + deviceStorage.getItem = function(key, callback) { + return invokeStorageMethod('web_app_device_storage_get_key', {key: key}, callback); + }; + deviceStorage.removeItem = function(key, callback) { + return invokeStorageMethod('web_app_device_storage_save_key', {key: key, value: null}, callback); + }; + deviceStorage.clear = function(callback) { + return invokeStorageMethod('web_app_device_storage_clear', {}, callback); + }; + return deviceStorage; + })(); + + var SecureStorage = (function() { + var secureStorage = {}; + + WebView.onEvent('secure_storage_key_saved', onSecureStorageEvent); + WebView.onEvent('secure_storage_key_received', onSecureStorageEvent); + WebView.onEvent('secure_storage_key_restored', onSecureStorageEvent); + WebView.onEvent('secure_storage_cleared', onSecureStorageEvent); + WebView.onEvent('secure_storage_failed', onSecureStorageEvent); + + function onSecureStorageEvent(eventType, eventData) { + if (eventData.req_id && webAppCallbacks[eventData.req_id]) { + var requestData = webAppCallbacks[eventData.req_id]; + delete webAppCallbacks[eventData.req_id]; + var res = null, err = null, can_restore = null; + if (eventType == 'secure_storage_failed') { + err = eventData.error || 'UNKNOWN_ERROR'; + } else if (eventType == 'secure_storage_key_received') { + res = eventData.value; + if (eventData.can_restore) { + can_restore = true; + } + } else if (eventType == 'secure_storage_key_restored') { + res = eventData.value; + } else { + res = true; + } + if (requestData.callback) { + requestData.callback(err, res, can_restore); + } + } + } + + function invokeStorageMethod(method, params, callback) { + if (!versionAtLeast('9.0')) { + console.error('[Telegram.WebApp] SecureStorage is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + var req_id = generateCallbackId(16); + var req_params = {req_id: req_id}; + for (var k in params) { + req_params[k] = params[k]; + } + webAppCallbacks[req_id] = { + callback: callback + }; + WebView.postEvent(method, false, req_params); + return secureStorage; + } + + secureStorage.setItem = function(key, value, callback) { + return invokeStorageMethod('web_app_secure_storage_save_key', {key: key, value: value}, callback); + }; + secureStorage.getItem = function(key, callback) { + return invokeStorageMethod('web_app_secure_storage_get_key', {key: key}, callback); + }; + secureStorage.restoreItem = function(key, callback) { + return invokeStorageMethod('web_app_secure_storage_restore_key', {key: key}, callback); + }; + secureStorage.removeItem = function(key, callback) { + return invokeStorageMethod('web_app_secure_storage_save_key', {key: key, value: null}, callback); + }; + secureStorage.clear = function(callback) { + return invokeStorageMethod('web_app_secure_storage_clear', {}, callback); + }; + return secureStorage; + })(); + + var BiometricManager = (function() { + var isInited = false; + var isBiometricAvailable = false; + var biometricType = 'unknown'; + var isAccessRequested = false; + var isAccessGranted = false; + var isBiometricTokenSaved = false; + var deviceId = ''; + + var biometricManager = {}; + Object.defineProperty(biometricManager, 'isInited', { + get: function(){ return isInited; }, + enumerable: true + }); + Object.defineProperty(biometricManager, 'isBiometricAvailable', { + get: function(){ return isInited && isBiometricAvailable; }, + enumerable: true + }); + Object.defineProperty(biometricManager, 'biometricType', { + get: function(){ return biometricType || 'unknown'; }, + enumerable: true + }); + Object.defineProperty(biometricManager, 'isAccessRequested', { + get: function(){ return isAccessRequested; }, + enumerable: true + }); + Object.defineProperty(biometricManager, 'isAccessGranted', { + get: function(){ return isAccessRequested && isAccessGranted; }, + enumerable: true + }); + Object.defineProperty(biometricManager, 'isBiometricTokenSaved', { + get: function(){ return isBiometricTokenSaved; }, + enumerable: true + }); + Object.defineProperty(biometricManager, 'deviceId', { + get: function(){ return deviceId || ''; }, + enumerable: true + }); + + var initRequestState = {callbacks: []}; + var accessRequestState = false; + var authRequestState = false; + var tokenRequestState = false; + + WebView.onEvent('biometry_info_received', onBiometryInfoReceived); + WebView.onEvent('biometry_auth_requested', onBiometryAuthRequested); + WebView.onEvent('biometry_token_updated', onBiometryTokenUpdated); + + function onBiometryInfoReceived(eventType, eventData) { + isInited = true; + if (eventData.available) { + isBiometricAvailable = true; + biometricType = eventData.type || 'unknown'; + if (eventData.access_requested) { + isAccessRequested = true; + isAccessGranted = !!eventData.access_granted; + isBiometricTokenSaved = !!eventData.token_saved; + } else { + isAccessRequested = false; + isAccessGranted = false; + isBiometricTokenSaved = false; + } + } else { + isBiometricAvailable = false; + biometricType = 'unknown'; + isAccessRequested = false; + isAccessGranted = false; + isBiometricTokenSaved = false; + } + deviceId = eventData.device_id || ''; + + if (initRequestState.callbacks.length > 0) { + for (var i = 0; i < initRequestState.callbacks.length; i++) { + var callback = initRequestState.callbacks[i]; + callback(); + } + initRequestState.callbacks = []; + } + if (accessRequestState) { + var state = accessRequestState; + accessRequestState = false; + if (state.callback) { + state.callback(isAccessGranted); + } + } + receiveWebViewEvent('biometricManagerUpdated'); + } + function onBiometryAuthRequested(eventType, eventData) { + var isAuthenticated = (eventData.status == 'authorized'), + biometricToken = eventData.token || ''; + if (authRequestState) { + var state = authRequestState; + authRequestState = false; + if (state.callback) { + state.callback(isAuthenticated, isAuthenticated ? biometricToken : null); + } + } + receiveWebViewEvent('biometricAuthRequested', isAuthenticated ? { + isAuthenticated: true, + biometricToken: biometricToken + } : { + isAuthenticated: false + }); + } + function onBiometryTokenUpdated(eventType, eventData) { + var applied = false; + if (isBiometricAvailable && + isAccessRequested) { + if (eventData.status == 'updated') { + isBiometricTokenSaved = true; + applied = true; + } + else if (eventData.status == 'removed') { + isBiometricTokenSaved = false; + applied = true; + } + } + if (tokenRequestState) { + var state = tokenRequestState; + tokenRequestState = false; + if (state.callback) { + state.callback(applied); + } + } + receiveWebViewEvent('biometricTokenUpdated', { + isUpdated: applied + }); + } + + function checkVersion() { + if (!versionAtLeast('7.2')) { + console.warn('[Telegram.WebApp] BiometricManager is not supported in version ' + webAppVersion); + return false; + } + return true; + } + + function checkInit() { + if (!isInited) { + console.error('[Telegram.WebApp] BiometricManager should be inited before using.'); + throw Error('WebAppBiometricManagerNotInited'); + } + return true; + } + + biometricManager.init = function(callback) { + if (!checkVersion()) { + return biometricManager; + } + if (isInited) { + return biometricManager; + } + if (callback) { + initRequestState.callbacks.push(callback); + } + WebView.postEvent('web_app_biometry_get_info', false); + return biometricManager; + }; + biometricManager.requestAccess = function(params, callback) { + if (!checkVersion()) { + return biometricManager; + } + checkInit(); + if (!isBiometricAvailable) { + console.error('[Telegram.WebApp] Biometrics is not available on this device.'); + throw Error('WebAppBiometricManagerBiometricsNotAvailable'); + } + if (accessRequestState) { + console.error('[Telegram.WebApp] Access is already requested'); + throw Error('WebAppBiometricManagerAccessRequested'); + } + var popup_params = {}; + if (typeof params.reason !== 'undefined') { + var reason = strTrim(params.reason); + if (reason.length > 128) { + console.error('[Telegram.WebApp] Biometric reason is too long', reason); + throw Error('WebAppBiometricRequestAccessParamInvalid'); + } + if (reason.length > 0) { + popup_params.reason = reason; + } + } + + accessRequestState = { + callback: callback + }; + WebView.postEvent('web_app_biometry_request_access', false, popup_params); + return biometricManager; + }; + biometricManager.authenticate = function(params, callback) { + if (!checkVersion()) { + return biometricManager; + } + checkInit(); + if (!isBiometricAvailable) { + console.error('[Telegram.WebApp] Biometrics is not available on this device.'); + throw Error('WebAppBiometricManagerBiometricsNotAvailable'); + } + if (!isAccessGranted) { + console.error('[Telegram.WebApp] Biometric access was not granted by the user.'); + throw Error('WebAppBiometricManagerBiometricAccessNotGranted'); + } + if (authRequestState) { + console.error('[Telegram.WebApp] Authentication request is already in progress.'); + throw Error('WebAppBiometricManagerAuthenticationRequested'); + } + var popup_params = {}; + if (typeof params.reason !== 'undefined') { + var reason = strTrim(params.reason); + if (reason.length > 128) { + console.error('[Telegram.WebApp] Biometric reason is too long', reason); + throw Error('WebAppBiometricRequestAccessParamInvalid'); + } + if (reason.length > 0) { + popup_params.reason = reason; + } + } + + authRequestState = { + callback: callback + }; + WebView.postEvent('web_app_biometry_request_auth', false, popup_params); + return biometricManager; + }; + biometricManager.updateBiometricToken = function(token, callback) { + if (!checkVersion()) { + return biometricManager; + } + token = token || ''; + if (token.length > 1024) { + console.error('[Telegram.WebApp] Token is too long', token); + throw Error('WebAppBiometricManagerTokenInvalid'); + } + checkInit(); + if (!isBiometricAvailable) { + console.error('[Telegram.WebApp] Biometrics is not available on this device.'); + throw Error('WebAppBiometricManagerBiometricsNotAvailable'); + } + if (!isAccessGranted) { + console.error('[Telegram.WebApp] Biometric access was not granted by the user.'); + throw Error('WebAppBiometricManagerBiometricAccessNotGranted'); + } + if (tokenRequestState) { + console.error('[Telegram.WebApp] Token request is already in progress.'); + throw Error('WebAppBiometricManagerTokenUpdateRequested'); + } + tokenRequestState = { + callback: callback + }; + WebView.postEvent('web_app_biometry_update_token', false, {token: token}); + return biometricManager; + }; + biometricManager.openSettings = function() { + if (!checkVersion()) { + return biometricManager; + } + checkInit(); + if (!isBiometricAvailable) { + console.error('[Telegram.WebApp] Biometrics is not available on this device.'); + throw Error('WebAppBiometricManagerBiometricsNotAvailable'); + } + if (!isAccessRequested) { + console.error('[Telegram.WebApp] Biometric access was not requested yet.'); + throw Error('WebAppBiometricManagerBiometricsAccessNotRequested'); + } + if (isAccessGranted) { + console.warn('[Telegram.WebApp] Biometric access was granted by the user, no need to go to settings.'); + return biometricManager; + } + WebView.postEvent('web_app_biometry_open_settings', false); + return biometricManager; + }; + return biometricManager; + })(); + + var LocationManager = (function() { + var isInited = false; + var isLocationAvailable = false; + var isAccessRequested = false; + var isAccessGranted = false; + + var locationManager = {}; + Object.defineProperty(locationManager, 'isInited', { + get: function(){ return isInited; }, + enumerable: true + }); + Object.defineProperty(locationManager, 'isLocationAvailable', { + get: function(){ return isInited && isLocationAvailable; }, + enumerable: true + }); + Object.defineProperty(locationManager, 'isAccessRequested', { + get: function(){ return isAccessRequested; }, + enumerable: true + }); + Object.defineProperty(locationManager, 'isAccessGranted', { + get: function(){ return isAccessRequested && isAccessGranted; }, + enumerable: true + }); + + var initRequestState = {callbacks: []}; + var getRequestState = {callbacks: []}; + + WebView.onEvent('location_checked', onLocationChecked); + WebView.onEvent('location_requested', onLocationRequested); + + function onLocationChecked(eventType, eventData) { + isInited = true; + if (eventData.available) { + isLocationAvailable = true; + if (eventData.access_requested) { + isAccessRequested = true; + isAccessGranted = !!eventData.access_granted; + } else { + isAccessRequested = false; + isAccessGranted = false; + } + } else { + isLocationAvailable = false; + isAccessRequested = false; + isAccessGranted = false; + } + + if (initRequestState.callbacks.length > 0) { + for (var i = 0; i < initRequestState.callbacks.length; i++) { + var callback = initRequestState.callbacks[i]; + callback(); + } + initRequestState.callbacks = []; + } + receiveWebViewEvent('locationManagerUpdated'); + } + function onLocationRequested(eventType, eventData) { + if (!eventData.available) { + locationData = null; + } else { + var locationData = { + latitude: eventData.latitude, + longitude: eventData.longitude, + altitude: null, + course: null, + speed: null, + horizontal_accuracy: null, + vertical_accuracy: null, + course_accuracy: null, + speed_accuracy: null, + }; + if (typeof eventData.altitude !== 'undefined' && eventData.altitude !== null) { + locationData.altitude = eventData.altitude; + } + if (typeof eventData.course !== 'undefined' && eventData.course !== null) { + locationData.course = eventData.course % 360; + } + if (typeof eventData.speed !== 'undefined' && eventData.speed !== null) { + locationData.speed = eventData.speed; + } + if (typeof eventData.horizontal_accuracy !== 'undefined' && eventData.horizontal_accuracy !== null) { + locationData.horizontal_accuracy = eventData.horizontal_accuracy; + } + if (typeof eventData.vertical_accuracy !== 'undefined' && eventData.vertical_accuracy !== null) { + locationData.vertical_accuracy = eventData.vertical_accuracy; + } + if (typeof eventData.course_accuracy !== 'undefined' && eventData.course_accuracy !== null) { + locationData.course_accuracy = eventData.course_accuracy; + } + if (typeof eventData.speed_accuracy !== 'undefined' && eventData.speed_accuracy !== null) { + locationData.speed_accuracy = eventData.speed_accuracy; + } + } + if (!eventData.available || + !isLocationAvailable || + !isAccessRequested || + !isAccessGranted) { + initRequestState.callbacks.push(function() { + locationResponse(locationData); + }); + WebView.postEvent('web_app_check_location', false); + } else { + locationResponse(locationData); + } + } + function locationResponse(response) { + if (getRequestState.callbacks.length > 0) { + for (var i = 0; i < getRequestState.callbacks.length; i++) { + var callback = getRequestState.callbacks[i]; + callback(response); + } + getRequestState.callbacks = []; + } + if (response !== null) { + receiveWebViewEvent('locationRequested', { + locationData: response + }); + } + } + + function checkVersion() { + if (!versionAtLeast('8.0')) { + console.warn('[Telegram.WebApp] LocationManager is not supported in version ' + webAppVersion); + return false; + } + return true; + } + + function checkInit() { + if (!isInited) { + console.error('[Telegram.WebApp] LocationManager should be inited before using.'); + throw Error('WebAppLocationManagerNotInited'); + } + return true; + } + + locationManager.init = function(callback) { + if (!checkVersion()) { + return locationManager; + } + if (isInited) { + return locationManager; + } + if (callback) { + initRequestState.callbacks.push(callback); + } + WebView.postEvent('web_app_check_location', false); + return locationManager; + }; + locationManager.getLocation = function(callback) { + if (!checkVersion()) { + return locationManager; + } + checkInit(); + if (!isLocationAvailable) { + console.error('[Telegram.WebApp] Location is not available on this device.'); + throw Error('WebAppLocationManagerLocationNotAvailable'); + } + + getRequestState.callbacks.push(callback); + WebView.postEvent('web_app_request_location'); + return locationManager; + }; + locationManager.openSettings = function() { + if (!checkVersion()) { + return locationManager; + } + checkInit(); + if (!isLocationAvailable) { + console.error('[Telegram.WebApp] Location is not available on this device.'); + throw Error('WebAppLocationManagerLocationNotAvailable'); + } + if (!isAccessRequested) { + console.error('[Telegram.WebApp] Location access was not requested yet.'); + throw Error('WebAppLocationManagerLocationAccessNotRequested'); + } + if (isAccessGranted) { + console.warn('[Telegram.WebApp] Location access was granted by the user, no need to go to settings.'); + return locationManager; + } + WebView.postEvent('web_app_open_location_settings', false); + return locationManager; + }; + return locationManager; + })(); + + var Accelerometer = (function() { + var isStarted = false; + var valueX = null, valueY = null, valueZ = null; + var startCallbacks = [], stopCallbacks = []; + + var accelerometer = {}; + Object.defineProperty(accelerometer, 'isStarted', { + get: function(){ return isStarted; }, + enumerable: true + }); + Object.defineProperty(accelerometer, 'x', { + get: function(){ return valueX; }, + enumerable: true + }); + Object.defineProperty(accelerometer, 'y', { + get: function(){ return valueY; }, + enumerable: true + }); + Object.defineProperty(accelerometer, 'z', { + get: function(){ return valueZ; }, + enumerable: true + }); + + WebView.onEvent('accelerometer_started', onAccelerometerStarted); + WebView.onEvent('accelerometer_stopped', onAccelerometerStopped); + WebView.onEvent('accelerometer_changed', onAccelerometerChanged); + WebView.onEvent('accelerometer_failed', onAccelerometerFailed); + + function onAccelerometerStarted(eventType, eventData) { + isStarted = true; + if (startCallbacks.length > 0) { + for (var i = 0; i < startCallbacks.length; i++) { + var callback = startCallbacks[i]; + callback(true); + } + startCallbacks = []; + } + receiveWebViewEvent('accelerometerStarted'); + } + function onAccelerometerStopped(eventType, eventData) { + isStarted = false; + if (stopCallbacks.length > 0) { + for (var i = 0; i < stopCallbacks.length; i++) { + var callback = stopCallbacks[i]; + callback(true); + } + stopCallbacks = []; + } + receiveWebViewEvent('accelerometerStopped'); + } + function onAccelerometerChanged(eventType, eventData) { + valueX = eventData.x; + valueY = eventData.y; + valueZ = eventData.z; + receiveWebViewEvent('accelerometerChanged'); + } + function onAccelerometerFailed(eventType, eventData) { + if (startCallbacks.length > 0) { + for (var i = 0; i < startCallbacks.length; i++) { + var callback = startCallbacks[i]; + callback(false); + } + startCallbacks = []; + } + receiveWebViewEvent('accelerometerFailed', { + error: eventData.error + }); + } + + function checkVersion() { + if (!versionAtLeast('8.0')) { + console.warn('[Telegram.WebApp] Accelerometer is not supported in version ' + webAppVersion); + return false; + } + return true; + } + + accelerometer.start = function(params, callback) { + params = params || {}; + if (!checkVersion()) { + return accelerometer; + } + var req_params = {}; + var refresh_rate = parseInt(params.refresh_rate || 1000); + if (isNaN(refresh_rate) || refresh_rate < 20 || refresh_rate > 1000) { + console.warn('[Telegram.WebApp] Accelerometer refresh_rate is invalid', refresh_rate); + } else { + req_params.refresh_rate = refresh_rate; + } + + if (callback) { + startCallbacks.push(callback); + } + WebView.postEvent('web_app_start_accelerometer', false, req_params); + return accelerometer; + }; + accelerometer.stop = function(callback) { + if (!checkVersion()) { + return accelerometer; + } + if (callback) { + stopCallbacks.push(callback); + } + WebView.postEvent('web_app_stop_accelerometer'); + return accelerometer; + }; + return accelerometer; + })(); + + var DeviceOrientation = (function() { + var isStarted = false; + var valueAlpha = null, valueBeta = null, valueGamma = null, valueAbsolute = false; + var startCallbacks = [], stopCallbacks = []; + + var deviceOrientation = {}; + Object.defineProperty(deviceOrientation, 'isStarted', { + get: function(){ return isStarted; }, + enumerable: true + }); + Object.defineProperty(deviceOrientation, 'absolute', { + get: function(){ return valueAbsolute; }, + enumerable: true + }); + Object.defineProperty(deviceOrientation, 'alpha', { + get: function(){ return valueAlpha; }, + enumerable: true + }); + Object.defineProperty(deviceOrientation, 'beta', { + get: function(){ return valueBeta; }, + enumerable: true + }); + Object.defineProperty(deviceOrientation, 'gamma', { + get: function(){ return valueGamma; }, + enumerable: true + }); + + WebView.onEvent('device_orientation_started', onDeviceOrientationStarted); + WebView.onEvent('device_orientation_stopped', onDeviceOrientationStopped); + WebView.onEvent('device_orientation_changed', onDeviceOrientationChanged); + WebView.onEvent('device_orientation_failed', onDeviceOrientationFailed); + + function onDeviceOrientationStarted(eventType, eventData) { + isStarted = true; + if (startCallbacks.length > 0) { + for (var i = 0; i < startCallbacks.length; i++) { + var callback = startCallbacks[i]; + callback(true); + } + startCallbacks = []; + } + receiveWebViewEvent('deviceOrientationStarted'); + } + function onDeviceOrientationStopped(eventType, eventData) { + isStarted = false; + if (stopCallbacks.length > 0) { + for (var i = 0; i < stopCallbacks.length; i++) { + var callback = stopCallbacks[i]; + callback(true); + } + stopCallbacks = []; + } + receiveWebViewEvent('deviceOrientationStopped'); + } + function onDeviceOrientationChanged(eventType, eventData) { + valueAbsolute = !!eventData.absolute; + valueAlpha = eventData.alpha; + valueBeta = eventData.beta; + valueGamma = eventData.gamma; + receiveWebViewEvent('deviceOrientationChanged'); + } + function onDeviceOrientationFailed(eventType, eventData) { + if (startCallbacks.length > 0) { + for (var i = 0; i < startCallbacks.length; i++) { + var callback = startCallbacks[i]; + callback(false); + } + startCallbacks = []; + } + receiveWebViewEvent('deviceOrientationFailed', { + error: eventData.error + }); + } + + function checkVersion() { + if (!versionAtLeast('8.0')) { + console.warn('[Telegram.WebApp] DeviceOrientation is not supported in version ' + webAppVersion); + return false; + } + return true; + } + + deviceOrientation.start = function(params, callback) { + params = params || {}; + if (!checkVersion()) { + return deviceOrientation; + } + var req_params = {}; + var refresh_rate = parseInt(params.refresh_rate || 1000); + if (isNaN(refresh_rate) || refresh_rate < 20 || refresh_rate > 1000) { + console.warn('[Telegram.WebApp] DeviceOrientation refresh_rate is invalid', refresh_rate); + } else { + req_params.refresh_rate = refresh_rate; + } + req_params.need_absolute = !!params.need_absolute; + + if (callback) { + startCallbacks.push(callback); + } + WebView.postEvent('web_app_start_device_orientation', false, req_params); + return deviceOrientation; + }; + deviceOrientation.stop = function(callback) { + if (!checkVersion()) { + return deviceOrientation; + } + if (callback) { + stopCallbacks.push(callback); + } + WebView.postEvent('web_app_stop_device_orientation'); + return deviceOrientation; + }; + return deviceOrientation; + })(); + + var Gyroscope = (function() { + var isStarted = false; + var valueX = null, valueY = null, valueZ = null; + var startCallbacks = [], stopCallbacks = []; + + var gyroscope = {}; + Object.defineProperty(gyroscope, 'isStarted', { + get: function(){ return isStarted; }, + enumerable: true + }); + Object.defineProperty(gyroscope, 'x', { + get: function(){ return valueX; }, + enumerable: true + }); + Object.defineProperty(gyroscope, 'y', { + get: function(){ return valueY; }, + enumerable: true + }); + Object.defineProperty(gyroscope, 'z', { + get: function(){ return valueZ; }, + enumerable: true + }); + + WebView.onEvent('gyroscope_started', onGyroscopeStarted); + WebView.onEvent('gyroscope_stopped', onGyroscopeStopped); + WebView.onEvent('gyroscope_changed', onGyroscopeChanged); + WebView.onEvent('gyroscope_failed', onGyroscopeFailed); + + function onGyroscopeStarted(eventType, eventData) { + isStarted = true; + if (startCallbacks.length > 0) { + for (var i = 0; i < startCallbacks.length; i++) { + var callback = startCallbacks[i]; + callback(true); + } + startCallbacks = []; + } + receiveWebViewEvent('gyroscopeStarted'); + } + function onGyroscopeStopped(eventType, eventData) { + isStarted = false; + if (stopCallbacks.length > 0) { + for (var i = 0; i < stopCallbacks.length; i++) { + var callback = stopCallbacks[i]; + callback(true); + } + stopCallbacks = []; + } + receiveWebViewEvent('gyroscopeStopped'); + } + function onGyroscopeChanged(eventType, eventData) { + valueX = eventData.x; + valueY = eventData.y; + valueZ = eventData.z; + receiveWebViewEvent('gyroscopeChanged'); + } + function onGyroscopeFailed(eventType, eventData) { + if (startCallbacks.length > 0) { + for (var i = 0; i < startCallbacks.length; i++) { + var callback = startCallbacks[i]; + callback(false); + } + startCallbacks = []; + } + receiveWebViewEvent('gyroscopeFailed', { + error: eventData.error + }); + } + + function checkVersion() { + if (!versionAtLeast('8.0')) { + console.warn('[Telegram.WebApp] Gyroscope is not supported in version ' + webAppVersion); + return false; + } + return true; + } + + gyroscope.start = function(params, callback) { + params = params || {}; + if (!checkVersion()) { + return gyroscope; + } + var req_params = {}; + var refresh_rate = parseInt(params.refresh_rate || 1000); + if (isNaN(refresh_rate) || refresh_rate < 20 || refresh_rate > 1000) { + console.warn('[Telegram.WebApp] Gyroscope refresh_rate is invalid', refresh_rate); + } else { + req_params.refresh_rate = refresh_rate; + } + + if (callback) { + startCallbacks.push(callback); + } + WebView.postEvent('web_app_start_gyroscope', false, req_params); + return gyroscope; + }; + gyroscope.stop = function(callback) { + if (!checkVersion()) { + return gyroscope; + } + if (callback) { + stopCallbacks.push(callback); + } + WebView.postEvent('web_app_stop_gyroscope'); + return gyroscope; + }; + return gyroscope; + })(); + + var webAppInvoices = {}; + function onInvoiceClosed(eventType, eventData) { + if (eventData.slug && webAppInvoices[eventData.slug]) { + var invoiceData = webAppInvoices[eventData.slug]; + delete webAppInvoices[eventData.slug]; + if (invoiceData.callback) { + invoiceData.callback(eventData.status); + } + receiveWebViewEvent('invoiceClosed', { + url: invoiceData.url, + status: eventData.status + }); + } + } + + var webAppPopupOpened = false; + function onPopupClosed(eventType, eventData) { + if (webAppPopupOpened) { + var popupData = webAppPopupOpened; + webAppPopupOpened = false; + var button_id = null; + if (typeof eventData.button_id !== 'undefined') { + button_id = eventData.button_id; + } + if (popupData.callback) { + popupData.callback(button_id); + } + receiveWebViewEvent('popupClosed', { + button_id: button_id + }); + } + } + + var webAppScanQrPopupOpened = false; + function onQrTextReceived(eventType, eventData) { + if (webAppScanQrPopupOpened) { + var popupData = webAppScanQrPopupOpened; + var data = null; + if (typeof eventData.data !== 'undefined') { + data = eventData.data; + } + if (popupData.callback) { + if (popupData.callback(data)) { + webAppScanQrPopupOpened = false; + WebView.postEvent('web_app_close_scan_qr_popup', false); + } + } + receiveWebViewEvent('qrTextReceived', { + data: data + }); + } + } + function onScanQrPopupClosed(eventType, eventData) { + webAppScanQrPopupOpened = false; + receiveWebViewEvent('scanQrPopupClosed'); + } + + function onClipboardTextReceived(eventType, eventData) { + if (eventData.req_id && webAppCallbacks[eventData.req_id]) { + var requestData = webAppCallbacks[eventData.req_id]; + delete webAppCallbacks[eventData.req_id]; + var data = null; + if (typeof eventData.data !== 'undefined') { + data = eventData.data; + } + if (requestData.callback) { + requestData.callback(data); + } + receiveWebViewEvent('clipboardTextReceived', { + data: data + }); + } + } + + var WebAppWriteAccessRequested = false; + function onWriteAccessRequested(eventType, eventData) { + if (WebAppWriteAccessRequested) { + var requestData = WebAppWriteAccessRequested; + WebAppWriteAccessRequested = false; + if (requestData.callback) { + requestData.callback(eventData.status == 'allowed'); + } + receiveWebViewEvent('writeAccessRequested', { + status: eventData.status + }); + } + } + + function getRequestedContact(callback, timeout) { + var reqTo, fallbackTo, reqDelay = 0; + var reqInvoke = function() { + invokeCustomMethod('getRequestedContact', {}, function(err, res) { + if (res.substr(0, 1) == '"' && res.substr(-1) == '"') { // macos fix + res = JSON.parse(res); + } + if (res && res.length) { + clearTimeout(fallbackTo); + callback(res); + } else { + reqDelay += 50; + reqTo = setTimeout(reqInvoke, reqDelay); + } + }); + }; + var fallbackInvoke = function() { + clearTimeout(reqTo); + callback(''); + }; + fallbackTo = setTimeout(fallbackInvoke, timeout); + reqInvoke(); + } + + var WebAppContactRequested = false; + function onPhoneRequested(eventType, eventData) { + if (WebAppContactRequested) { + var requestData = WebAppContactRequested; + WebAppContactRequested = false; + var requestSent = eventData.status == 'sent'; + var webViewEvent = { + status: eventData.status + }; + if (requestSent) { + getRequestedContact(function(res) { + if (res && res.length) { + webViewEvent.response = res; + webViewEvent.responseUnsafe = Utils.urlParseQueryString(res); + for (var key in webViewEvent.responseUnsafe) { + var val = webViewEvent.responseUnsafe[key]; + try { + if (val.substr(0, 1) == '{' && val.substr(-1) == '}' || + val.substr(0, 1) == '[' && val.substr(-1) == ']') { + webViewEvent.responseUnsafe[key] = JSON.parse(val); + } + } catch (e) {} + } + } + if (requestData.callback) { + requestData.callback(requestSent, webViewEvent); + } + receiveWebViewEvent('contactRequested', webViewEvent); + }, 3000); + } else { + if (requestData.callback) { + requestData.callback(requestSent, webViewEvent); + } + receiveWebViewEvent('contactRequested', webViewEvent); + } + } + } + + var webAppDownloadFileRequested = false; + function onFileDownloadRequested(eventType, eventData) { + if (webAppDownloadFileRequested) { + var requestData = webAppDownloadFileRequested; + webAppDownloadFileRequested = false; + var isDownloading = eventData.status == 'downloading'; + if (requestData.callback) { + requestData.callback(isDownloading); + } + receiveWebViewEvent('fileDownloadRequested', { + status: isDownloading ? 'downloading' : 'cancelled' + }); + } + } + + function onCustomMethodInvoked(eventType, eventData) { + if (eventData.req_id && webAppCallbacks[eventData.req_id]) { + var requestData = webAppCallbacks[eventData.req_id]; + delete webAppCallbacks[eventData.req_id]; + var res = null, err = null; + if (typeof eventData.result !== 'undefined') { + res = eventData.result; + } + if (typeof eventData.error !== 'undefined') { + err = eventData.error; + } + if (requestData.callback) { + requestData.callback(err, res); + } + } + } + + function invokeCustomMethod(method, params, callback) { + if (!versionAtLeast('6.9')) { + console.error('[Telegram.WebApp] Method invokeCustomMethod is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + var req_id = generateCallbackId(16); + var req_params = {req_id: req_id, method: method, params: params || {}}; + webAppCallbacks[req_id] = { + callback: callback + }; + WebView.postEvent('web_app_invoke_custom_method', false, req_params); + }; + + if (!window.Telegram) { + window.Telegram = {}; + } + + Object.defineProperty(WebApp, 'initData', { + get: function(){ return webAppInitData; }, + enumerable: true + }); + Object.defineProperty(WebApp, 'initDataUnsafe', { + get: function(){ return webAppInitDataUnsafe; }, + enumerable: true + }); + Object.defineProperty(WebApp, 'version', { + get: function(){ return webAppVersion; }, + enumerable: true + }); + Object.defineProperty(WebApp, 'platform', { + get: function(){ return webAppPlatform; }, + enumerable: true + }); + Object.defineProperty(WebApp, 'colorScheme', { + get: function(){ return colorScheme; }, + enumerable: true + }); + Object.defineProperty(WebApp, 'themeParams', { + get: function(){ return themeParams; }, + enumerable: true + }); + Object.defineProperty(WebApp, 'isExpanded', { + get: function(){ return isExpanded; }, + enumerable: true + }); + Object.defineProperty(WebApp, 'viewportHeight', { + get: function(){ return (viewportHeight === false ? window.innerHeight : viewportHeight) - bottomBarHeight; }, + enumerable: true + }); + Object.defineProperty(WebApp, 'viewportStableHeight', { + get: function(){ return (viewportStableHeight === false ? window.innerHeight : viewportStableHeight) - bottomBarHeight; }, + enumerable: true + }); + Object.defineProperty(WebApp, 'safeAreaInset', { + get: function(){ return safeAreaInset; }, + enumerable: true + }); + Object.defineProperty(WebApp, 'contentSafeAreaInset', { + get: function(){ return contentSafeAreaInset; }, + enumerable: true + }); + Object.defineProperty(WebApp, 'isClosingConfirmationEnabled', { + set: function(val){ setClosingConfirmation(val); }, + get: function(){ return isClosingConfirmationEnabled; }, + enumerable: true + }); + Object.defineProperty(WebApp, 'isVerticalSwipesEnabled', { + set: function(val){ toggleVerticalSwipes(val); }, + get: function(){ return isVerticalSwipesEnabled; }, + enumerable: true + }); + Object.defineProperty(WebApp, 'isFullscreen', { + get: function(){ return webAppIsFullscreen; }, + enumerable: true + }); + Object.defineProperty(WebApp, 'isOrientationLocked', { + set: function(val){ toggleOrientationLock(val); }, + get: function(){ return webAppIsOrientationLocked; }, + enumerable: true + }); + Object.defineProperty(WebApp, 'isActive', { + get: function(){ return webAppIsActive; }, + enumerable: true + }); + Object.defineProperty(WebApp, 'headerColor', { + set: function(val){ setHeaderColor(val); }, + get: function(){ return getHeaderColor(); }, + enumerable: true + }); + Object.defineProperty(WebApp, 'backgroundColor', { + set: function(val){ setBackgroundColor(val); }, + get: function(){ return getBackgroundColor(); }, + enumerable: true + }); + Object.defineProperty(WebApp, 'bottomBarColor', { + set: function(val){ setBottomBarColor(val); }, + get: function(){ return getBottomBarColor(); }, + enumerable: true + }); + Object.defineProperty(WebApp, 'BackButton', { + value: BackButton, + enumerable: true + }); + Object.defineProperty(WebApp, 'MainButton', { + value: MainButton, + enumerable: true + }); + Object.defineProperty(WebApp, 'SecondaryButton', { + value: SecondaryButton, + enumerable: true + }); + Object.defineProperty(WebApp, 'SettingsButton', { + value: SettingsButton, + enumerable: true + }); + Object.defineProperty(WebApp, 'HapticFeedback', { + value: HapticFeedback, + enumerable: true + }); + Object.defineProperty(WebApp, 'CloudStorage', { + value: CloudStorage, + enumerable: true + }); + Object.defineProperty(WebApp, 'DeviceStorage', { + value: DeviceStorage, + enumerable: true + }); + Object.defineProperty(WebApp, 'SecureStorage', { + value: SecureStorage, + enumerable: true + }); + Object.defineProperty(WebApp, 'BiometricManager', { + value: BiometricManager, + enumerable: true + }); + Object.defineProperty(WebApp, 'Accelerometer', { + value: Accelerometer, + enumerable: true + }); + Object.defineProperty(WebApp, 'DeviceOrientation', { + value: DeviceOrientation, + enumerable: true + }); + Object.defineProperty(WebApp, 'Gyroscope', { + value: Gyroscope, + enumerable: true + }); + Object.defineProperty(WebApp, 'LocationManager', { + value: LocationManager, + enumerable: true + }); + WebApp.isVersionAtLeast = function(ver) { + return versionAtLeast(ver); + }; + WebApp.setHeaderColor = function(color_key) { + WebApp.headerColor = color_key; + }; + WebApp.setBackgroundColor = function(color) { + WebApp.backgroundColor = color; + }; + WebApp.setBottomBarColor = function(color) { + WebApp.bottomBarColor = color; + }; + WebApp.enableClosingConfirmation = function() { + WebApp.isClosingConfirmationEnabled = true; + }; + WebApp.disableClosingConfirmation = function() { + WebApp.isClosingConfirmationEnabled = false; + }; + WebApp.enableVerticalSwipes = function() { + WebApp.isVerticalSwipesEnabled = true; + }; + WebApp.disableVerticalSwipes = function() { + WebApp.isVerticalSwipesEnabled = false; + }; + WebApp.lockOrientation = function() { + WebApp.isOrientationLocked = true; + }; + WebApp.unlockOrientation = function() { + WebApp.isOrientationLocked = false; + }; + WebApp.requestFullscreen = function() { + if (!versionAtLeast('8.0')) { + console.error('[Telegram.WebApp] Method requestFullscreen is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + WebView.postEvent('web_app_request_fullscreen'); + }; + WebApp.exitFullscreen = function() { + if (!versionAtLeast('8.0')) { + console.error('[Telegram.WebApp] Method exitFullscreen is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + WebView.postEvent('web_app_exit_fullscreen'); + }; + WebApp.addToHomeScreen = function() { + if (!versionAtLeast('8.0')) { + console.error('[Telegram.WebApp] Method addToHomeScreen is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + WebView.postEvent('web_app_add_to_home_screen'); + }; + WebApp.checkHomeScreenStatus = function(callback) { + if (!versionAtLeast('8.0')) { + console.error('[Telegram.WebApp] Method checkHomeScreenStatus is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + if (callback) { + homeScreenCallbacks.push(callback); + } + WebView.postEvent('web_app_check_home_screen'); + }; + WebApp.onEvent = function(eventType, callback) { + onWebViewEvent(eventType, callback); + }; + WebApp.offEvent = function(eventType, callback) {offWebViewEvent(eventType, callback); + }; + WebApp.sendData = function (data) { + if (!data || !data.length) { + console.error('[Telegram.WebApp] Data is required', data); + throw Error('WebAppDataInvalid'); + } + if (byteLength(data) > 4096) { + console.error('[Telegram.WebApp] Data is too long', data); + throw Error('WebAppDataInvalid'); + } + WebView.postEvent('web_app_data_send', false, {data: data}); + }; + WebApp.switchInlineQuery = function (query, choose_chat_types) { + if (!versionAtLeast('6.6')) { + console.error('[Telegram.WebApp] Method switchInlineQuery is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + if (!initParams.tgWebAppBotInline) { + console.error('[Telegram.WebApp] Inline mode is disabled for this bot. Read more about inline mode: https://core.telegram.org/bots/inline'); + throw Error('WebAppInlineModeDisabled'); + } + query = query || ''; + if (query.length > 256) { + console.error('[Telegram.WebApp] Inline query is too long', query); + throw Error('WebAppInlineQueryInvalid'); + } + var chat_types = []; + if (choose_chat_types) { + if (!Array.isArray(choose_chat_types)) { + console.error('[Telegram.WebApp] Choose chat types should be an array', choose_chat_types); + throw Error('WebAppInlineChooseChatTypesInvalid'); + } + var good_types = {users: 1, bots: 1, groups: 1, channels: 1}; + for (var i = 0; i < choose_chat_types.length; i++) { + var chat_type = choose_chat_types[i]; + if (!good_types[chat_type]) { + console.error('[Telegram.WebApp] Choose chat type is invalid', chat_type); + throw Error('WebAppInlineChooseChatTypeInvalid'); + } + if (good_types[chat_type] != 2) { + good_types[chat_type] = 2; + chat_types.push(chat_type); + } + } + } + WebView.postEvent('web_app_switch_inline_query', false, {query: query, chat_types: chat_types}); + }; + WebApp.openLink = function (url, options) { + var a = document.createElement('A'); + a.href = url; + if (a.protocol != 'http:' && + a.protocol != 'https:') { + console.error('[Telegram.WebApp] Url protocol is not supported', url); + throw Error('WebAppTgUrlInvalid'); + } + var url = a.href; + options = options || {}; + if (versionAtLeast('6.1')) { + var req_params = {url: url}; + if (versionAtLeast('6.4') && options.try_instant_view) { + req_params.try_instant_view = true; + } + if (versionAtLeast('7.6') && options.try_browser) { + req_params.try_browser = options.try_browser; + } + WebView.postEvent('web_app_open_link', false, req_params); + } else { + window.open(url, '_blank'); + } + }; + WebApp.openTelegramLink = function (url, options) { + var a = document.createElement('A'); + a.href = url; + if (a.protocol != 'http:' && + a.protocol != 'https:') { + console.error('[Telegram.WebApp] Url protocol is not supported', url); + throw Error('WebAppTgUrlInvalid'); + } + if (a.hostname != 't.me') { + console.error('[Telegram.WebApp] Url host is not supported', url); + throw Error('WebAppTgUrlInvalid'); + } + var path_full = a.pathname + a.search; + options = options || {}; + if (isIframe || versionAtLeast('6.1')) { + var req_params = {path_full: path_full}; + if (options.force_request) { + req_params.force_request = true; + } + WebView.postEvent('web_app_open_tg_link', false, req_params); + } else { + location.href = 'https://t.me' + path_full; + } + }; + WebApp.openInvoice = function (url, callback) { + var a = document.createElement('A'), match, slug; + a.href = url; + if (a.protocol != 'http:' && + a.protocol != 'https:' || + a.hostname != 't.me' || + !(match = a.pathname.match(/^\/(\$|invoice\/)([A-Za-z0-9\-_=]+)$/)) || + !(slug = match[2])) { + console.error('[Telegram.WebApp] Invoice url is invalid', url); + throw Error('WebAppInvoiceUrlInvalid'); + } + if (!versionAtLeast('6.1')) { + console.error('[Telegram.WebApp] Method openInvoice is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + if (webAppInvoices[slug]) { + console.error('[Telegram.WebApp] Invoice is already opened'); + throw Error('WebAppInvoiceOpened'); + } + webAppInvoices[slug] = { + url: url, + callback: callback + }; + WebView.postEvent('web_app_open_invoice', false, {slug: slug}); + }; + WebApp.showPopup = function (params, callback) { + if (!versionAtLeast('6.2')) { + console.error('[Telegram.WebApp] Method showPopup is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + if (webAppPopupOpened) { + console.error('[Telegram.WebApp] Popup is already opened'); + throw Error('WebAppPopupOpened'); + } + var title = ''; + var message = ''; + var buttons = []; + var popup_buttons = {}; + var popup_params = {}; + if (typeof params.title !== 'undefined') { + title = strTrim(params.title); + if (title.length > 64) { + console.error('[Telegram.WebApp] Popup title is too long', title); + throw Error('WebAppPopupParamInvalid'); + } + if (title.length > 0) { + popup_params.title = title; + } + } + if (typeof params.message !== 'undefined') { + message = strTrim(params.message); + } + if (!message.length) { + console.error('[Telegram.WebApp] Popup message is required', params.message); + throw Error('WebAppPopupParamInvalid'); + } + if (message.length > 256) { + console.error('[Telegram.WebApp] Popup message is too long', message); + throw Error('WebAppPopupParamInvalid'); + } + popup_params.message = message; + if (typeof params.buttons !== 'undefined') { + if (!Array.isArray(params.buttons)) { + console.error('[Telegram.WebApp] Popup buttons should be an array', params.buttons); + throw Error('WebAppPopupParamInvalid'); + } + for (var i = 0; i < params.buttons.length; i++) { + var button = params.buttons[i]; + var btn = {}; + var id = ''; + if (typeof button.id !== 'undefined') { + id = button.id.toString(); + if (id.length > 64) { + console.error('[Telegram.WebApp] Popup button id is too long', id); + throw Error('WebAppPopupParamInvalid'); + } + } + btn.id = id; + var button_type = button.type; + if (typeof button_type === 'undefined') { + button_type = 'default'; + } + btn.type = button_type; + if (button_type == 'ok' || + button_type == 'close' || + button_type == 'cancel') { + // no params needed + } else if (button_type == 'default' || + button_type == 'destructive') { + var text = ''; + if (typeof button.text !== 'undefined') { + text = strTrim(button.text); + } + if (!text.length) { + console.error('[Telegram.WebApp] Popup button text is required for type ' + button_type, button.text); + throw Error('WebAppPopupParamInvalid'); + } + if (text.length > 64) { + console.error('[Telegram.WebApp] Popup button text is too long', text); + throw Error('WebAppPopupParamInvalid'); + } + btn.text = text; + } else { + console.error('[Telegram.WebApp] Popup button type is invalid', button_type); + throw Error('WebAppPopupParamInvalid'); + } + buttons.push(btn); + } + } else { + buttons.push({id: '', type: 'close'}); + } + if (buttons.length < 1) { + console.error('[Telegram.WebApp] Popup should have at least one button'); + throw Error('WebAppPopupParamInvalid'); + } + if (buttons.length > 3) { + console.error('[Telegram.WebApp] Popup should not have more than 3 buttons'); + throw Error('WebAppPopupParamInvalid'); + } + popup_params.buttons = buttons; + + webAppPopupOpened = { + callback: callback + }; + WebView.postEvent('web_app_open_popup', false, popup_params); + }; + WebApp.showAlert = function (message, callback) { + WebApp.showPopup({ + message: message + }, callback ? function(){ callback(); } : null); + }; + WebApp.showConfirm = function (message, callback) { + WebApp.showPopup({ + message: message, + buttons: [ + {type: 'ok', id: 'ok'}, + {type: 'cancel'} + ] + }, callback ? function (button_id) { + callback(button_id == 'ok'); + } : null); + }; + WebApp.showScanQrPopup = function (params, callback) { + if (!versionAtLeast('6.4')) { + console.error('[Telegram.WebApp] Method showScanQrPopup is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + if (webAppScanQrPopupOpened) { + console.error('[Telegram.WebApp] Popup is already opened'); + throw Error('WebAppScanQrPopupOpened'); + } + var text = ''; + var popup_params = {}; + if (typeof params.text !== 'undefined') { + text = strTrim(params.text); + if (text.length > 64) { + console.error('[Telegram.WebApp] Scan QR popup text is too long', text); + throw Error('WebAppScanQrPopupParamInvalid'); + } + if (text.length > 0) { + popup_params.text = text; + } + } + + webAppScanQrPopupOpened = { + callback: callback + }; + WebView.postEvent('web_app_open_scan_qr_popup', false, popup_params); + }; + WebApp.closeScanQrPopup = function () { + if (!versionAtLeast('6.4')) { + console.error('[Telegram.WebApp] Method closeScanQrPopup is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + + webAppScanQrPopupOpened = false; + WebView.postEvent('web_app_close_scan_qr_popup', false); + }; + WebApp.readTextFromClipboard = function (callback) { + if (!versionAtLeast('6.4')) { + console.error('[Telegram.WebApp] Method readTextFromClipboard is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + var req_id = generateCallbackId(16); + var req_params = {req_id: req_id}; + webAppCallbacks[req_id] = { + callback: callback + }; + WebView.postEvent('web_app_read_text_from_clipboard', false, req_params); + }; + WebApp.requestWriteAccess = function (callback) { + if (!versionAtLeast('6.9')) { + console.error('[Telegram.WebApp] Method requestWriteAccess is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + if (WebAppWriteAccessRequested) { + console.error('[Telegram.WebApp] Write access is already requested'); + throw Error('WebAppWriteAccessRequested'); + } + WebAppWriteAccessRequested = { + callback: callback + }; + WebView.postEvent('web_app_request_write_access'); + }; + WebApp.requestContact = function (callback) { + if (!versionAtLeast('6.9')) { + console.error('[Telegram.WebApp] Method requestContact is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + if (WebAppContactRequested) { + console.error('[Telegram.WebApp] Contact is already requested'); + throw Error('WebAppContactRequested'); + } + WebAppContactRequested = { + callback: callback + }; + WebView.postEvent('web_app_request_phone'); + }; + WebApp.downloadFile = function (params, callback) { + if (!versionAtLeast('8.0')) { + console.error('[Telegram.WebApp] Method downloadFile is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + if (webAppDownloadFileRequested) { + console.error('[Telegram.WebApp] Popup is already opened'); + throw Error('WebAppDownloadFilePopupOpened'); + } + var a = document.createElement('A'); + + var dl_params = {}; + if (!params || !params.url || !params.url.length) { + console.error('[Telegram.WebApp] Url is required'); + throw Error('WebAppDownloadFileParamInvalid'); + } + a.href = params.url; + if (a.protocol != 'https:') { + console.error('[Telegram.WebApp] Url protocol is not supported', url); + throw Error('WebAppDownloadFileParamInvalid'); + } + dl_params.url = a.href; + + if (!params || !params.file_name || !params.file_name.length) { + console.error('[Telegram.WebApp] File name is required'); + throw Error('WebAppDownloadFileParamInvalid'); + } + dl_params.file_name = params.file_name; + + webAppDownloadFileRequested = { + callback: callback + }; + WebView.postEvent('web_app_request_file_download', false, dl_params); + }; + WebApp.shareToStory = function (media_url, params) { + params = params || {}; + if (!versionAtLeast('7.8')) { + console.error('[Telegram.WebApp] Method shareToStory is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + var a = document.createElement('A'); + a.href = media_url; + if (a.protocol != 'http:' && + a.protocol != 'https:') { + console.error('[Telegram.WebApp] Media url protocol is not supported', url); + throw Error('WebAppMediaUrlInvalid'); + } + var share_params = {}; + share_params.media_url = a.href; + if (typeof params.text !== 'undefined') { + var text = strTrim(params.text); + if (text.length > 2048) { + console.error('[Telegram.WebApp] Text is too long', text); + throw Error('WebAppShareToStoryParamInvalid'); + } + if (text.length > 0) { + share_params.text = text; + } + } + if (typeof params.widget_link !== 'undefined') { + params.widget_link = params.widget_link || {}; + a.href = params.widget_link.url; + if (a.protocol != 'http:' && + a.protocol != 'https:') { + console.error('[Telegram.WebApp] Link protocol is not supported', url); + throw Error('WebAppShareToStoryParamInvalid'); + } + var widget_link = { + url: a.href + }; + if (typeof params.widget_link.name !== 'undefined') { + var link_name = strTrim(params.widget_link.name); + if (link_name.length > 48) { + console.error('[Telegram.WebApp] Link name is too long', link_name); + throw Error('WebAppShareToStoryParamInvalid'); + } + if (link_name.length > 0) { + widget_link.name = link_name; + } + } + share_params.widget_link = widget_link; + } + + WebView.postEvent('web_app_share_to_story', false, share_params); + }; + WebApp.shareMessage = function (msg_id, callback) { + if (!versionAtLeast('8.0')) { + console.error('[Telegram.WebApp] Method shareMessage is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + if (WebAppShareMessageOpened) { + console.error('[Telegram.WebApp] Share message is already opened'); + throw Error('WebAppShareMessageOpened'); + } + WebAppShareMessageOpened = { + callback: callback + }; + WebView.postEvent('web_app_send_prepared_message', false, {id: msg_id}); + }; + WebApp.setEmojiStatus = function (custom_emoji_id, params, callback) { + params = params || {}; + if (!versionAtLeast('8.0')) { + console.error('[Telegram.WebApp] Method setEmojiStatus is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + var status_params = {}; + status_params.custom_emoji_id = custom_emoji_id; + if (typeof params.duration !== 'undefined') { + status_params.duration = params.duration; + } + if (WebAppEmojiStatusRequested) { + console.error('[Telegram.WebApp] Emoji status is already requested'); + throw Error('WebAppEmojiStatusRequested'); + } + WebAppEmojiStatusRequested = { + callback: callback + }; + WebView.postEvent('web_app_set_emoji_status', false, status_params); + }; + WebApp.requestEmojiStatusAccess = function (callback) { + if (!versionAtLeast('8.0')) { + console.error('[Telegram.WebApp] Method requestEmojiStatusAccess is not supported in version ' + webAppVersion); + throw Error('WebAppMethodUnsupported'); + } + if (WebAppEmojiStatusAccessRequested) { + console.error('[Telegram.WebApp] Emoji status permission is already requested'); + throw Error('WebAppEmojiStatusAccessRequested'); + } + WebAppEmojiStatusAccessRequested = { + callback: callback + }; + WebView.postEvent('web_app_request_emoji_status_access'); + }; + WebApp.invokeCustomMethod = function (method, params, callback) { + invokeCustomMethod(method, params, callback); + }; + WebApp.hideKeyboard = function () { + WebView.postEvent('web_app_hide_keyboard'); + }; + WebApp.ready = function () { + WebView.postEvent('web_app_ready'); + }; + WebApp.expand = function () { + WebView.postEvent('web_app_expand'); + }; + WebApp.close = function (options) { + options = options || {}; + var req_params = {}; + if (versionAtLeast('7.6') && options.return_back) { + req_params.return_back = true; + } + WebView.postEvent('web_app_close', false, req_params); + }; + + window.Telegram.WebApp = WebApp; + + updateHeaderColor(); + updateBackgroundColor(); + updateBottomBarColor(); + setViewportHeight(); + if (initParams.tgWebAppShowSettings) { + SettingsButton.show(); + } + + window.addEventListener('resize', onWindowResize); + if (isIframe) { + document.addEventListener('click', linkHandler); + } + + WebView.onEvent('theme_changed', onThemeChanged); + WebView.onEvent('viewport_changed', onViewportChanged); + WebView.onEvent('safe_area_changed', onSafeAreaChanged); + WebView.onEvent('content_safe_area_changed', onContentSafeAreaChanged); + WebView.onEvent('visibility_changed', onVisibilityChanged); + WebView.onEvent('invoice_closed', onInvoiceClosed); + WebView.onEvent('popup_closed', onPopupClosed); + WebView.onEvent('qr_text_received', onQrTextReceived); + WebView.onEvent('scan_qr_popup_closed', onScanQrPopupClosed); + WebView.onEvent('clipboard_text_received', onClipboardTextReceived); + WebView.onEvent('write_access_requested', onWriteAccessRequested); + WebView.onEvent('phone_requested', onPhoneRequested); + WebView.onEvent('file_download_requested', onFileDownloadRequested); + WebView.onEvent('custom_method_invoked', onCustomMethodInvoked); + WebView.onEvent('fullscreen_changed', onFullscreenChanged); + WebView.onEvent('fullscreen_failed', onFullscreenFailed); + WebView.onEvent('home_screen_added', onHomeScreenAdded); + WebView.onEvent('home_screen_checked', onHomeScreenChecked); + WebView.onEvent('prepared_message_sent', onPreparedMessageSent); + WebView.onEvent('prepared_message_failed', onPreparedMessageFailed); + WebView.onEvent('emoji_status_set', onEmojiStatusSet); + WebView.onEvent('emoji_status_failed', onEmojiStatusFailed); + WebView.onEvent('emoji_status_access_requested', onEmojiStatusAccessRequested); + WebView.postEvent('web_app_request_theme'); + WebView.postEvent('web_app_request_viewport'); + WebView.postEvent('web_app_request_safe_area'); + WebView.postEvent('web_app_request_content_safe_area'); + +})(); diff --git a/src/App.vue b/src/App.vue index 2262f89..8f20087 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,9 +1,43 @@ diff --git a/src/assets/docs/Consent_to_Personal_Data_Processing_en.md b/src/assets/docs/Consent_to_Personal_Data_Processing_en.md index c5b7cee..963b800 100644 --- a/src/assets/docs/Consent_to_Personal_Data_Processing_en.md +++ b/src/assets/docs/Consent_to_Personal_Data_Processing_en.md @@ -1,73 +1,72 @@ -*This document is an English translation of the original Russian-language "Consent to Personal Data Processing" (Version 1.01 dated 15.08.2025). In the event of any disputes, the original Russian version shall take precedence, particularly for matters resolved within the jurisdiction of the Russian Federation.* +*This document is an English adaptation of «Согласие на обработку персональных данных» originally drafted in Russian. In the event of any disputes subject to resolution in courts of the Russian Federation, the Russian-language version shall prevail.* -# Consent to Personal Data Processing -###### Version 1.01 dated 15.08.2025 +###### Version 1.04 dated March 15, 2026 -Pursuant to Federal Law No. 152-FZ dated 27.07.2006 "On Personal Data", acting freely, by my own will and in my own interest, and hereby confirming my legal capacity, I (hereinafter – the **User**) grant my consent to Alexey Alexandrovich Martyshkin, Individual Entrepreneur (OGRNIP 318774600262084, INN 366316608346) (hereinafter – the **Operator**) for the processing of my personal data under the following terms. +In accordance with the requirements of the Federal Law dated July 27, 2006, No. 152-FZ "On Personal Data," acting freely, of my own will and in my own interest, and confirming my legal capacity, I (hereinafter — the **User**) hereby give my consent to Individual Entrepreneur Martyshkin Alexey Alexandrovich (OGRNIP 318774600262084, INN 366316608346) (hereinafter — the **Operator**) for the processing of my personal data under the conditions set forth below. -The following terms and definitions apply in this Consent: +The following terms and definitions are used in this Consent: -**Bot** – An account named @tgCrewBot with URL [https://t.me/tgCrewBot](https://t.me/tgCrewBot) in the Telegram messenger, programmatically managed by the Operator via API (Application Programming Interface). The Bot provides access to the Application and supports basic interaction via inline mode. +**Bot** — an account named @tgCrewBot with the address [https://t.me/tgCrewBot](https://t.me/tgCrewBot) in the Telegram messenger, programmatically managed by the Operator via API (Application Programming Interface). The Bot provides access to the Application and may be used for basic interaction from the text string (inline-mode). -**Application** – The tgCrew mini-app operating within the Telegram messenger environment as part of the Telegram Mini Apps (TMA) ecosystem, accessible through interaction with the Bot. While the Application utilizes Telegram's platform for functionality and distribution, it is exclusively developed and provided by the Operator. The Application is not a product of Telegram Messenger LLP, nor is it endorsed, supported, or legally affiliated with Telegram Messenger LLP. +**Application** — the tgCrew mini-app operating within the Telegram messenger environment as part of the Telegram Mini Apps (TMA) ecosystem and accessible through interaction with the Bot. Although the Application uses the Telegram platform for its functioning and distribution, it is developed and provided exclusively by the Operator. The Application is not a product of the Telegram messenger development company, is not supported by it, is not endorsed by it, and is not legally or organizationally affiliated with it. -**Personal Data (PD)** – Any information relating to an identified or identifiable natural person (data subject) (per Federal Law No. 152-FZ, Chapter 1, Article 3, Clause 1). +**Personal Data (or PDn)** — any information relating to a directly or indirectly identified or identifiable natural person (data subject) (according to Federal Law No. 152-FZ, Chapter 1, Article 3, Clause 1). -**Administrator** – A User of the Application who manages it through the Admin Panel. +**Administrator** — a User of the Application who manages the Application using the Admin Panel. -**Administrator Account** – An account used by the Administrator to authenticate access to the Admin Panel. +**Administrator Account** — the account through which the Administrator authenticates to access the Admin Panel. -**Admin Panel** – The Application interface for management functions, including: - - Connecting chats to the Application (see §1.12 – Connected Chat) - - Adding supplementary User information - - Monitoring and processing Developer remuneration payments for Application usage. +**Admin Panel** — the Application interface for managing the Application, including the following functions: + - connecting chats to the Application (within the meaning of the term Connected Chat); + - entering additional information for Users; + - monitoring and making payments of remuneration to the Developer for the use of the Application. -**Connected Chat** – A Telegram chat where the Bot has been added with necessary access rights. The Application only processes data from Connected Chats. +**Connected Chat** (to the Application) — a Telegram chat to which the Bot has been added with the necessary access rights. Information is only available in the Application from Connected Chats. -1. This Consent is specific, informed, conscious, and unambiguous. +1. This consent is specific, informed, conscious, and unambiguous. -2. The User consents to the Operator's processing of their Personal Data (using automated means), including: - - a) Collection, recording, systematization, accumulation - b) Storage for the duration of the Administrator Account's existence, but no less than required by Russian law. Data is deleted upon Administrator Account closure, except where legally mandated (e.g., fraud prevention or court order execution) - c) Updating (modification, correction) - d) Retrieval, usage - e) Transfer (provision, access) to state authorities, courts, or law enforcement agencies exclusively upon official request under Russian law - f) Transfer (provision, access) to other Application Users within the same Connected Chat, limited to Application functionality requirements - g) Blocking, deletion, destruction - h) Other lawful processing activities under Russian legislation +2. Consent is given to the Operator for the processing of the User's personal data (using automation tools), including the following actions: -3. Consent covers processing of the following User Personal Data, which may be: - - Provided directly by the User - - Entered by the Application Administrator (if User participates in a Connected Chat) - - Automatically collected by the Application: - - a) Full name (surname, given name, patronymic) - b) Email address - c) Contact phone number - d) Employment details (organization, department, position/functional role) - e) Telegram account data: Display name (First/Last name), username, user ID, profile picture, Telegram client language settings; and for Administrators: Telegram Stars transaction data (user ID, amount, transaction ID, timestamp) transmitted automatically via Telegram API - f) Server interaction data (technical): Request IP address, request timestamp, requested URL, HTTP response code, response size (bytes), User-Agent, Referrer URL (if available) +a) Collection, recording, systematization, accumulation. +b) Storage throughout the lifetime of the Administrator Account, but no less than the period required by the legislation of the Russian Federation. Data is deleted upon closure of the Administrator Account, except in cases provided by law (e.g., for fraud prevention or execution of court decisions). +c) Clarification (updating, modification). +d) Extraction, use. +e) Transfer (provision, access) to state bodies, courts, or law enforcement structures exclusively upon official request within the framework of the legislation of the Russian Federation. +f) Transfer (provision, access) to other Users of the Application who share a Connected Chat with the User, to the extent provided by the Application's functionality (displaying first name, last name, avatar, position, or role in participant lists, in descriptions of meetings and tasks, etc.). +g) Blocking, deletion, destruction. +h) Performance of other actions provided for by the legislation of the Russian Federation. -4. Processing purposes: - - a) Application authentication and identification (§§3b, 3e) - b) Technical support and request handling (§§3a-3e) - c) System notifications (for Administrators using email authentication) (§§3b, 3e) - d) Processing Telegram Stars transactions (for Administrators) (§§3b, 3e) - e) Generating contact directories within Connected Chats (§§3a-3e) - f) Ensuring proper Application functionality (§§3a-3e) - g) Technical maintenance and security (§§3f) +3. Consent is given for the processing of the following personal data of the User, which may be provided by the User themselves and/or entered by the Application Administrator (if the User is a member of a Connected Chat) and/or automatically collected by the Application: -5. The User acknowledges that ticking the checkbox adjacent to the text: "✔ I consent to the processing of my personal data and accept the Privacy Policy" in the Application interface constitutes a simple electronic signature under Russian law, confirming: - - Review of this Consent - - Acceptance of the Operator's Privacy Policy available at: [https://tgcrew.ru/privacy-policy](https://tgcrew.ru/privacy-policy) +a) Full name (surname, first name, patronymic). +b) Email address. +c) Contact phone number. +d) Employment details (organization name, structural unit, position, and/or functional role). +e) Telegram messenger account data: name (Name, including first_name and last_name), pseudonym (Username), user identifier (ID), profile image identifier (used to display the avatar without saving copies of files on the Developer's servers), Telegram client language settings, and, if the User is an Administrator, Telegram Stars transaction data (user ID, number of Telegram Stars, transaction ID, operation timestamp), which are automatically transmitted via the Telegram API. The processing of biometric personal data is not performed by the Operator. +f) Data on interaction with the Application servers (technical data): IP address from which the request is made, date and time of request receipt by the Application server, requested URL, HTTP response code of the Application server, response size in bytes, User-Agent (browser and operating system information), Referrer (URL of the page from which the request was made, if available). -6. This Consent becomes effective upon completion of the action specified in §5 and remains valid until withdrawal. +4. Personal data processing is carried out for the following purposes: -7. Withdrawal is performed by: - - Selecting "Opt-Out from Application Usage" in Settings (User/Admin Panel) - - Confirming via "Confirm" in the dialog - Withdrawal results in cessation of processing and data destruction, except as stipulated in §8. +a) Identification and authentication in the Application (clauses 3b and 3e). +b) Providing technical support and processing inquiries (clauses 3a-3e). +c) Sending system notifications if the User is an Application Administrator and uses email for authentication (clauses 3b and 3e). +d) Processing payment transactions via Telegram Stars if the User is an Application Administrator (clauses 3b and 3e). +e) Forming a contact address book within Connected Chats (clauses 3a-3e). +f) Ensuring the correct operation of the Application's functionality (clauses 3a-3e). +g) Technical: prevention of technical failures and ensuring security (clause 3f). -8. Post-withdrawal, the Operator retains the right to continue processing Personal Data without consent where grounds exist under Clauses 2-11 (Part 1, Article 6), Part 2 (Article 10), and Part 2 (Article 11) of Federal Law No. 152-FZ dated 27.07.2006 "On Personal Data". \ No newline at end of file +5. I express my consent that checking the corresponding interactive element (checkbox) in the Application interface next to the text: "I give my Consent for Personal Data Processing and accept the terms of the Privacy Policy" is recognized by the Operator and the User as an analogue of the User's handwritten signature (simple electronic signature), certifying the fact of familiarization and agreement with the terms of this Consent and the Operator's Privacy Policy, posted in the Application and publicly accessible on the Internet at: [https://tgcrew.ru/privacy-policy](https://tgcrew.ru/privacy-policy). + +6. This consent enters into force from the moment it is provided by performing the actions specified in clause 5 of this Consent and remains valid until it is withdrawn. + +7. Withdrawal of this Consent is performed by clicking the "Stop using the application" button and subsequently clicking the "Confirm" button in the dialog that opens. The "Stop using the application" button is located in the Settings section (for both the User part and the Admin Panel). Additionally, a withdrawal of Consent may be sent to the Operator in writing to the email address [support@tgcrew.ru](mailto:support@tgcrew.ru). Withdrawal of Consent entails the termination of personal data processing and its destruction, except in cases provided for by clause 8 of this Consent. + +8. In the event of withdrawal of this consent, the Operator is entitled to continue processing the User's personal data without their consent if there are grounds provided for by clauses 2-11 of part 1 of article 6, part 2 of article 10, and part 2 of article 11 of the Federal Law dated July 27, 2006, No. 152-FZ "On Personal Data." + +9. Operator Contact Information and Details +Individual Entrepreneur Martyshkin Alexey Alexandrovich +Legal Address: 111394, Russian Federation, Moscow, Perovskaya Street, House 66, Building 3, Apartment 187 +OGRNIP 318774600262084 +INN 366316608346 +Phone: +7 (916) 439-04-25 +Email: [info@tgcrew.ru](mailto:info@tgcrew.ru) \ No newline at end of file diff --git a/src/assets/docs/Consent_to_Personal_Data_Processing_ru.md b/src/assets/docs/Consent_to_Personal_Data_Processing_ru.md index 1014416..f45a9df 100644 --- a/src/assets/docs/Consent_to_Personal_Data_Processing_ru.md +++ b/src/assets/docs/Consent_to_Personal_Data_Processing_ru.md @@ -1,5 +1,4 @@ -# Согласие на обработку персональных данных -###### Версия 1.01 от 15.08.2025 +###### Версия 1.04 от 15.03.2026 В соответствии с требованиями Федерального закона от 27.07.2006 № 152-ФЗ «О персональных данных», действуя свободно, своей волей и в своем интересе, а также подтверждая свою дееспособность, я (далее -- **Пользователь**) даю свое согласие индивидуальному предпринимателю Мартышкину Алексею Александровичу (ОГРНИП 318774600262084, ИНН 366316608346) (далее -- **Оператор**) на обработку своих персональных данных на изложенных ниже условиях. @@ -9,14 +8,14 @@ **Приложение** -- мини-приложение tgCrew, работающее в среде мессенджера Telegram как часть экосистемы Telegram Mini Apps (TMA) и доступное через взаимодействие с Ботом. Хотя Приложение использует платформу Telegram для своего функционирования и распространения, оно разработано и предоставляется исключительно Оператором. Приложение не является продуктом компании-разработчика мессенджера Telegram, не поддерживается ею, не одобрено ею и никак не связано с ней юридически или организационно. -**Персональные данные (или ПДн)** -- любая информация, относящаяся к прямо или косвенно определенному или определяемому физическому лицу (субъекту персональных данных) (согласно N152-ФЗ, Глава 1, Статья 3, п. 1). +**Персональные данные (или ПДн)** -- любая информация, относящаяся к прямо или косвенно определенному или определяемому физическому лицу (субъекту персональных данных) (согласно № 152-ФЗ, Глава 1, Статья 3, п. 1). **Администратор** -- Пользователь Приложения, который осуществляет его управление Приложением с помощью Панели администратора. **Учетная запись Администратора** - учетная запись, с помощью которой Администратор осуществляет аутентификацию для доступа к Панели администратора. **Панель администратора** -- интерфейс Приложения для управления Приложением, в том числе осуществления следующих функций: - - подключение чатов к Приложению (см. п. 1.12 – Подключенный чат); + - подключение чатов к Приложению (в значении термина Подключенный чат); - внесение дополнительных информационных данных для Пользователей; - контроль и осуществление выплат вознаграждения Разработчику за использование Приложения. @@ -31,7 +30,7 @@ в) Уточнение (обновление, изменение). г) Извлечение, использование. д) Передача (предоставление, доступ) государственным органам, судам или правоохранительным структурам исключительно по официальному запросу в рамках законодательства РФ. -е) Передачу (предоставление, доступ) другим Пользователям Приложения, имеющим общий Подключенный чат с Пользователем, в объёме, необходимом для функциональности Приложения. +е) Передачу (предоставление, доступ) другим Пользователям Приложения, имеющим общий Подключенный чат с Пользователем, в объёме, предусмотренном функционалом Приложения (отображение имени, фамилии, аватара, должности или роли в списках участников, в описании совещаний и задач и т.п.). ж) Блокирование, удаление, уничтожение. з) Осуществление иных действий, предусмотренных законодательством РФ. @@ -41,23 +40,31 @@ б) Адрес электронной почты. в) Контактный телефон. г) Сведения о месте работы (наименование организации, структурное подразделение, должность и/или функциональная роль). -д) Данные учетной записи в мессенджере Telegram: имя пользователя (Name, вкл. в себя - First name и Last name), псевдоним (Username), идентификатор пользователя (ID), изображение профиля (аватар), языковые настройки клиента Telegram, а также, если Пользователь является Администратором, данные транзакций Telegram Stars (идентификатор пользователя, количество Telegram Stars, идентификатор транзакции, временная метка операции), которые автоматически передаются через API Telegram. -е) Данные о взаимодействии с серверами Приложения (технические данные): IP-адрес с которого осуществляется запрос, дата и время получения запроса сервером Приложения, запрошенный URL, HTTP-код ответа сервера Приложения, размер ответа в байтах, User-Agent (информация о браузере и операционной системе клиента), Referrer (URL страницы, с которой был сделан запрос, если доступно). +д) Данные учетной записи в мессенджере Telegram: имя пользователя (Name, включающее в себя first_name и last_name), псевдоним (Username), идентификатор пользователя (ID), идентификатор изображения профиля (используется для отображения аватара без сохранения копий файлов на серверах Разработчика), языковые настройки клиента Telegram, а также, если Пользователь является Администратором, данные транзакций Telegram Stars (идентификатор пользователя, количество Telegram Stars, идентификатор транзакции, временная метка операции), которые автоматически передаются через API Telegram. Обработка биометрических персональных данных Оператором не осуществляется. +е) Данные о взаимодействии с серверами Приложения (технические данные): IP-адрес, с которого осуществляется запрос, дата и время получения запроса сервером Приложения, запрошенный URL, HTTP-код ответа сервера Приложения, размер ответа в байтах, User-Agent (информация о браузере и операционной системе клиента), Referrer (URL страницы, с которой был сделан запрос, если доступно). 4. Обработка персональных данных осуществляется в следующих целях: а) Идентификация и аутентификация в Приложении (пп. 3б и 3д). б) Предоставление технической поддержки и обработка обращений (пп. 3а-3д). -в) Отправка системных уведомлений – если Пользователь является Администратором Приложения и использует электронную почту для аутентификации (пп. 3б и 3д). +в) Отправка системных уведомлений, если Пользователь является Администратором Приложения и использует электронную почту для аутентификации (пп. 3б и 3д). г) Обработка платежных транзакций через Telegram Stars, в случае если Пользователь является Администратором Приложения (пп. 3б и 3д). д) Формирование адресной книги контактов в рамках Подключенных чатов (пп. 3а-3д). е) Обеспечение корректной работы функционала Приложения (пп. 3а-3д). ж) Технические: профилактика технических сбоев и обеспечение безопасности (пп. 3е). -5. Я выражаю согласие на квалификацию проставления символа «V» (галочки) в чек-боксе интерфейса Приложения рядом с текстом: «Я даю Согласие на обработку своих персональных данных и принимаю условия Политики конфиденциальности» в качестве простой электронной подписи, удостоверяющей факт ознакомления и согласия с условиями настоящего Согласия и Политики конфиденциальности Оператора, размещенной в Приложении и в открытом доступе в сети Интернет по адресу: [https://tgcrew.ru/privacy-policy]( https://tgcrew.ru/privacy-policy). +5. Я выражаю согласие, что проставление отметки в соответствующем интерактивном элементе (поле для отметки) интерфейса Приложения рядом с текстом: «Я даю Согласие на обработку своих персональных данных и принимаю условия Политики конфиденциальности» признается Оператором и Пользователем аналогом собственноручной подписи Пользователя (простой электронной подписью), удостоверяющей факт ознакомления и согласия с условиями настоящего Согласия и Политики конфиденциальности Оператора, размещенной в Приложении и в открытом доступе в сети Интернет по адресу: [https://tgcrew.ru/privacy-policy](https://tgcrew.ru/privacy-policy). 6. Настоящее согласие вступает в силу с момента его предоставления путем совершения действий, указанных в пункте 5 настоящего Согласия, и действует до момента отзыва. -7. Отзыв настоящего Согласия осуществляется путем нажатия на кнопку «Отказ от использования приложения» и последующим нажатием в открывшемся диалоге кнопки «Подтвердить». Кнопка «Отказ от использования приложения» размещена в разделе Настройки (как для Пользовательской части, так и для Панели Администратора). Отзыв Согласия влечет прекращение обработки персональных данных и их уничтожение, за исключением случаев, предусмотренных пунктом 8 настоящего Согласия. +7. Отзыв настоящего Согласия осуществляется путем нажатия на кнопку «Отказ от использования приложения» и последующим нажатием в открывшемся диалоге кнопки «Подтвердить». Кнопка «Отказ от использования приложения» размещена в разделе Настройки (как для Пользовательской части, так и для Панели Администратора). Также отзыв Согласия может быть направлен Оператору в письменной форме по адресу электронной почты [support@tgcrew.ru](mailto:support@tgcrew.ru). Отзыв Согласия влечет прекращение обработки персональных данных и их уничтожение, за исключением случаев, предусмотренных пунктом 8 настоящего Согласия. 8. В случае отзыва настоящего согласия Оператор вправе продолжить обработку персональных данных Пользователя без его согласия при наличии оснований, предусмотренных пунктами 2-11 части 1 статьи 6, частью 2 статьи 10 и частью 2 статьи 11 Федерального закона от 27.07.2006 № 152-ФЗ «О персональных данных». + +9. Контактная информация и реквизиты Оператора +Индивидуальный предприниматель Мартышкин Алексей Александрович +Юридический адрес: 111394, Российская Федерация, город Москва, улица Перовская, дом 66, корпус 3, квартира 187 +ОГРНИП 318774600262084 +ИНН 366316608346 +Телефон: +7 (916) 439-04-25 +Электронная почта: [info@tgcrew.ru](mailto:info@tgcrew.ru) diff --git a/src/assets/docs/Privacy-Policy_en.md b/src/assets/docs/Privacy-Policy_en.md index c1b4998..384eafb 100644 --- a/src/assets/docs/Privacy-Policy_en.md +++ b/src/assets/docs/Privacy-Policy_en.md @@ -1,162 +1,182 @@ -*This document is an English adaptation of the Privacy Policy originally drafted in Russian. In the event of any disputes subject to resolution in courts of the Russian Federation, the Russian-language version shall prevail.* +*This document is an English adaptation of «Политика конфиденциальности» originally drafted in Russian. In the event of any disputes subject to resolution in courts of the Russian Federation, the Russian-language version shall prevail.* -# Privacy Policy -###### Version 1.01 dated 15.08.2025 +###### Version 1.04 dated March 15, 2026 -This Privacy Policy describes the scope of data (including personal data) collection from Users of the Application by the Developer, explains the purposes of such collection, and outlines processing methods. +In this Privacy Policy, the Developer provides information on the scope of data collection (including personal data) of Users within the Application, explains the reasons for such collection, and the methods of its use. -## 1. Terms and Definitions -1.1. **Bot** – The Telegram account "@tgCrewBot" ([https://t.me/tgCrewBot](https://t.me/tgCrewBot)), programmatically managed by the Developer via Telegram’s API. The Bot provides access to the Application and supports basic inline-mode interaction. +The current versions of the Terms of Use and the Privacy Policy are available within the Application interface. Information posted on the Website is for reference purposes only. In the event of discrepancies between the text on the Website and in the Application, the version hosted within the Application shall prevail and be legally binding. -1.2. **Application** – The Telegram Mini App (TMA) "tgCrew", operating within Telegram’s ecosystem and accessible via the Bot. Though hosted on Telegram’s platform, the Application is developed and provided solely by the Developer. It is not a product of, endorsed by, or legally affiliated with Telegram FZ-LLC. Access requires acceptance of the Terms of Use and this Privacy Policy. +## 1. Terms and Definitions +1.1. **Bot** — an account named @tgCrewBot with the address [https://t.me/tgCrewBot](https://t.me/tgCrewBot) in the Telegram messenger, programmatically managed by the Developer via API (Application Programming Interface). The Bot provides access to the Application and may be used for basic interaction from the text string (inline-mode). -1.3. **Website** – The official site [https://tgcrew.ru](https://tgcrew.ru), hosting Application documentation and information. +1.2. **Application** — the tgCrew mini-app operating within the Telegram messenger environment as part of the Telegram Mini Apps (TMA) ecosystem and accessible through interaction with the Bot. Although the Application uses the Telegram platform for its functioning and distribution, it is developed and provided exclusively by the Developer. The Application is not a product of the Telegram messenger development company, is not supported by it, is not endorsed by it, and is not legally or organizationally affiliated with it. The Application's functionality is available only after the acceptance of the Terms of Use and the Privacy Policy. -1.4. **Terms of Use** – The current version available at [https://tgcrew.ru/terms-of-use](https://tgcrew.ru/terms-of-use) and within the Application. In case of discrepancies, the in-Application version prevails. Contractual relations commence upon in-Application acceptance. +1.3. **Website** — the website located at [https://tgcrew.ru](https://tgcrew.ru), which hosts information about the Application and its documentation. -1.5. **Privacy Policy** – This document governing the collection, storage, and processing of User data (including personal data). An integral annex to the Terms of Use. The current version is at [https://tgcrew.ru/privacy-policy](https://tgcrew.ru/privacy-policy) and in the Application. In-Application information prevails in conflicts. Consent is obtained via in-Application acceptance. +1.4. **Terms of Use** — this document, the current version of which is posted in the Application and on the Website at [https://tgcrew.ru/terms-of-use](https://tgcrew.ru/terms-of-use). Contractual relations between the Developer and the User arise only after the acceptance of the Terms of Use within the Application. -1.6. **Developer** – Individual Entrepreneur Martyshkin Alexey Alexandrovich (OGRNIP 318774600262084, INN 366316608346, Russian Federation). +1.5. **Privacy Policy** — this document, governing the procedure for collecting, storing, and processing User data (including personal data) entered during registration, use of the Application, and other data. It is an integral appendix to the Terms of Use. The current version of the Privacy Policy is posted in the Application and on the Website at [https://tgcrew.ru/privacy-policy](https://tgcrew.ru/privacy-policy). Consent for data processing within the framework of the Privacy Policy is provided by the User inside the Application. -1.7. **User** – An individual, legal entity, or authorized representative accepting the Terms of Use and Privacy Policy within the Application. +1.6. **Developer** — Individual Entrepreneur Martyshkin Alexey Alexandrovich (IE Martyshkin A.A.), OGRNIP 318774600262084, INN 366316608346 (Russian Federation). -1.8. **Administrator** – A User managing the Application via the Admin Panel. +1.7. **User** — a natural person, individual entrepreneur, legal entity, or their authorized representative who has accepted the conditions of the Terms of Use and the Privacy Policy by explicit confirmation within the Application interface. -1.9. **Administrator Account** – Authentication credentials for Admin Panel access. +1.8. **Administrator** — a User of the Application who manages the Application using the Admin Panel. -1.10. **Chat Participant** – A member of a Connected Chat who may not be an Application User. +1.9. **Administrator Account** — the account through which the Administrator authenticates to access the Admin Panel. -1.11. **Admin Panel** – The Application interface for: - - Connecting chats to the Application (see §1.12); - - Adding supplemental User data; - - Managing Developer remuneration payments. +1.10. **Chat Member** — a participant of a Connected Chat who may not be a User of the Application. -1.12. **Connected Chat** – A Telegram chat where the Bot is added with necessary permissions. Only data from Connected Chats is processed. +1.11. **Admin Panel** — the Application interface for managing the Application, including the following functions: + - connecting chats to the Application (see clause 1.12 – Connected Chat); + - entering additional information for Users; + - monitoring and making payments of remuneration to the Developer for the use of the Application. -1.13. **Application Use** – User actions to view/utilize Application functionality via online interfaces. +1.12. **Connected Chat** (to the Application) — a Telegram chat to which the Bot has been added with the necessary access rights. Information is only available in the Application from Connected Chats. -1.14. **Developer’s Representatives** – Persons engaged by the Developer for Application development/support. +1.13. **Use of the Application** — actions performed by the User to view and/or use the available functionality of the Application via reproducible online interfaces on the screen of the User's device. -1.15. **Personal Data (PD)** – Any information relating to an identified/identifiable natural person (Federal Law No. 152-FZ, Art. 3.1). +1.14. **Developer's Representatives** — the circle of persons engaged by the Developer within the framework of development and support of the Application, acting on behalf of and/or as instructed by the Developer. -1.16. **Personal Data Processing** – Any operation(s) performed with PD, including collection, recording, storage, alteration, retrieval, use, transfer, anonymization, blocking, or destruction (Federal Law No. 152-FZ, Art. 3.3). +1.15. **Personal Data (or PDn)** — any information relating to a directly or indirectly identified or identifiable natural person (data subject) (according to Federal Law No. 152-FZ, Chapter 1, Article 3, Clause 1). -1.17. **Operator** – A legal/natural person organizing and/or processing PD, defining processing purposes and scope (Federal Law No. 152-FZ, Art. 3.2). +1.16. **Processing of Personal Data** — any action (operation) or set of actions (operations) performed with or without the use of automation tools with personal data, including collection, recording, systematization, accumulation, storage, clarification (updating, modification), extraction, use, transfer (distribution, provision, access), depersonalization, blocking, deletion, and destruction of personal data (according to Federal Law No. 152-FZ, Chapter 1, Article 3, Clause 3). -1.18. **Automated PD Processing** – PD processing via computer technology (Federal Law No. 152-FZ, Art. 3.4). +1.17. **Operator** — a state body, municipal body, legal entity, or natural person who independently or jointly with others organizes and/or performs the processing of personal data, as well as determines the purposes of processing personal data, the scope of personal data to be processed, and the actions (operations) performed with personal data (according to Federal Law No. 152-FZ, Chapter 1, Article 3, Clause 2). -1.19. **PD Provision** – Disclosure of PD to specific person(s) (Federal Law No. 152-FZ, Art. 3.6). +1.18. **Automated Processing of Personal Data** — processing of personal data using computing technology (according to Federal Law No. 152-FZ, Chapter 1, Article 3, Clause 4). -1.20. **Cross-Border PD Transfer** – Transfer of PD to foreign authorities/entities (Federal Law No. 152-FZ, Art. 3.11). +1.19. **Provision of Personal Data** — actions aimed at disclosing personal data to a specific person or a specific circle of persons (according to Federal Law No. 152-FZ, Chapter 1, Article 3, Clause 6). -1.21. **PD Destruction** – Actions rendering PD irrecoverable (Federal Law No. 152-FZ, Art. 3.8). +1.20. **Cross-border Transfer of Personal Data** — transfer of personal data to the territory of a foreign state to an authority of a foreign state, a foreign natural person, or a foreign legal entity (according to Federal Law No. 152-FZ, Chapter 1, Article 3, Clause 11). -## 2. General Provisions -2.1. This Policy governs solely the Developer-User relationship. It does not replace Telegram’s Privacy Policy. +1.21. **Destruction of Personal Data** — actions as a result of which it becomes impossible to restore the content of personal data in the personal data information system and/or as a result of which the material carriers of personal data are destroyed (according to Federal Law No. 152-FZ, Chapter 1, Article 3, Clause 8). -2.2. This Policy complies with: - - Federal Law No. 152-FZ "On Personal Data" (27.07.2006); - - Section "4. Privacy" of Telegram’s "Bot Platform Developer Terms of Service". +## 2. General Provisions +2.1. This Privacy Policy exclusively governs the relationship between the Developer and the User. It cannot govern the relationship between the Telegram messenger (hereinafter — Telegram) and its users and does not replace the Telegram Privacy Policy. -2.3. The Developer acts as the **Operator** for PD processing. +2.2. This Privacy Policy is drafted in accordance with the requirements of: + - Federal Law dated July 27, 2006, No. 152-FZ "On Personal Data." + - Requirements of Section "4. Privacy" of the "Telegram Bot Platform Developer Terms of Service" by Telegram FZ-LLC (the developer of the Telegram messenger). -## 3. Acceptance of this Policy -3.1. Acceptance occurs by ticking "✔ I consent to the processing of my personal data and accept the Privacy Policy" within the Application. +2.3. The Developer acts as the Operator during the Processing of Personal Data of Application Users. -3.2. Application Use implies consent to data collection from Connected Chats (§§4.2-4.4). +## 3. Acceptance of the Terms of this Privacy Policy +3.1. Evidence of full and unconditional acceptance of the terms of this Privacy Policy (acceptance) is the completion of the acceptance procedure by activating (checking) the corresponding interactive element (checkbox) in the Application interface next to the text: "I give my Consent for Personal Data Processing and accept the terms of the Privacy Policy" on the relevant screens in the Application. -3.3. Non-acceptance requires immediate cessation of Application Use. +3.2. Use of the Application signifies the User's consent to the collection and processing of information from Connected Chats in accordance with the Privacy Policy (see clauses 4.2-4.4). -## 4. Data Collection and Processing -4.1. Essential User data is required for Application access. +3.3. If the User does not agree with the terms of the Privacy Policy, they must immediately leave the Application and not start/cease the Use of the Application. -4.2. **Collected Personal Data**: -4.2.1. Automatically collected via Telegram API: - - Username, Telegram ID, profile picture, language settings, Telegram Stars transaction data (Administrators only). - - Technical data: IP address, request timestamp, requested URL, HTTP status, response size, User-Agent, Referrer. +## 4. Data Collection and Processing +4.1. To provide the User with access to the Application, it is necessary to provide the Developer with access to important information about themselves. -4.2.2. **Administrator-provided**: - - Email (if used for authentication). +4.2. Personal Data Collected by the Application -4.2.3. **Administrator-supplied Chat Participant data** (via Admin Panel): - - Full name, phone number, email, employment details. - *The Developer ensures lawful processing but assumes no liability for data accuracy. Administrators must secure legal grounds for PD submission. Data is visible only to Users sharing a Connected Chat. Users may request data correction/deletion from Administrators.* +4.2.1. The Application automatically collects the following User data, which may be defined as Personal Data: -4.2.4. **User-provided data** (e.g., support requests): - - Full name, phone number, email, employment details. +a) Data provided by Telegram via API: name (Name, including first_name and last_name), pseudonym (Username), user identifier (ID), profile image identifier (used to display the avatar without saving copies of files on the Developer's servers), Telegram client language settings, as well as Telegram Stars transaction data (for the Administrator only). +b) Data on the User's interaction with the Application servers (technical data): IP address from which the request is made, date and time of request receipt by the Application server, requested URL, HTTP response code of the Application server, response size in bytes, User-Agent (browser and operating system information), Referrer (URL of the page from which the request was made, if available). -4.3. **Cookies**: Only HttpOnly cookies (mitigating XSS risks) are used. +4.2.2. The Administrator provides: + - email address, if authentication in the Application is performed using it. -4.4. **Chat Monitoring**: The Bot tracks events in Connected Chats (message/file changes). Relevant data is stored. +4.2.3. In the Admin Panel, the Administrator may specify data for each member of a Connected Chat, which may be defined as Personal Data: + - full name (surname, first name, patronymic); + - contact phone number; + - email address; + - employment details (organization name, structural unit, position, and/or functional role). -4.5. **User-Input Data Storage**: Project/company/task/meeting details. +The Developer is not responsible for the correctness and accuracy of the specified data but, as the Operator, ensures the legality of its processing. The Administrator is obliged to ensure the existence of legal grounds for providing the personal data of Users in accordance with applicable legislation (in the case of providing real data). +The provision of said information about a User in the Application, which may be defined as Personal Data, to other Users is carried out only for Users who share a Connected Chat. By accepting this Privacy Policy, the User consents to such provision of their data. If necessary, the user may contact the Administrator to delete or change the above data. -4.6. **Non-Storage**: Chat/files are stored exclusively within Telegram. +4.2.4. When contacting the Developer (for example, when requesting technical support for the Application), Users are entitled to provide any of the following data, which may be defined as Personal Data: + - full name (surname, first name, patronymic); + - contact phone number; + - email address; + - employment details (organization name, structural unit, position, and/or functional role). -4.7. **No Additional Collection**: Only data specified in §4.2 is collected. +4.3. When creating and maintaining an HTTP connection, the Application uses HttpOnly cookies, which are not accessible from JavaScript via the Document.cookie API properties and are used to reduce the risk of XSS (Cross-Site Scripting). Other cookies are not set or used. -## 5. Data Collection Purposes -5.1. Purposes include: - - User identification/authentication (§4.2.1a, 4.2.2); - - Technical support (§4.2.1, 4.2.2, 4.2.4); - - Administrator notifications (§4.2.1a, 4.2.2); - - Telegram Stars transactions (§4.2.1a); - - Connected Chat contact management (§4.2.1a, 4.2.3); - - Application functionality (§4.2, 4.4); - - Security/technical maintenance (§4.2.1b, 4.3). +4.4. Using the Bot, the Application monitors events in Connected Chats (such as adding/changing/deleting messages, adding/deleting files, etc.), but only on the condition that the Bot has been granted Administrator rights to access messages in the Connected Chats. -5.2. Data is used solely for these purposes, unless required by Russian law or compatible purposes. New purposes trigger User notification. +4.5. The Application stores data entered by Users in the Application, including: + - project data (name, description, logo, etc.), + - company data (name, address, contact phone, website, etc.), + - task and meeting data (description, date and time, etc.). -5.3. PD processing is **automated**. +4.6. The Developer does not store or analyze correspondence from Connected Chats on its own computing facilities (servers). -## 6. Data Security -6.1. Technical/organizational measures ensure PD confidentiality, integrity, and protection against loss/theft/unauthorized access. +4.7. The Developer does not store files from chats, tasks, and meetings on its own computing facilities (servers). Storage is carried out within Telegram or on third-party cloud storage services connected by the Administrator (Yandex Disk or Google Drive). +Responsibility for the choice of a third-party storage service, compliance with its terms of use and privacy policy, as well as the existence of legal grounds for transferring data to such services, lies entirely with the Administrator. The Developer is not a storage operator in relation to said third-party services and is not responsible for their availability, data safety, or information security incidents on the part of the cloud service providers. +When the Administrator connects third-party storage services (Yandex Disk or Google Drive), the interaction of the Application with these services is carried out exclusively through the APIs of the respective services. The Developer does not request, collect, or store authorization data for these services. Authorization in such services occurs on the side of the respective providers. -6.2. Measures include SSL encryption for data transmission. +4.8. The Application does not collect any additional information on the User's side that may be defined as Personal Data, except as specified in clause 4.2, nor does it perform analysis of information available to it in chats. -6.3. Only authorized Developer personnel access PD. Representatives have no PD access. Security protocols are periodically reviewed. +## 5. Purposes of Data Collection +5.1. Data collection is carried out for the following purposes: + - Identification and authentication of Users in the Application (clauses 4.2.1a and 4.2.2). + - Providing technical support and processing inquiries (clauses 4.2.1, 4.2.2, and 4.2.4). + - Sending system notifications to the Administrator (clauses 4.2.1a and 4.2.2). + - Processing payment transactions via Telegram Stars (clause 4.2.1a). + - Forming a contact address book within Connected Chats (clauses 4.2.1a and 4.2.3). + - Ensuring the correct operation of the Application's functionality (clauses 4.2 and 4.4). + - Technical: aimed at preventing technical failures and ensuring security (clauses 4.2.1b and 4.3). -## 7. Data Transfer -7.1. No third-party transfers except to courts/state bodies when legally mandated. +5.2. The Developer undertakes to collect and use User data only for the purposes stated above, except in cases where data collection and use are necessary for other purposes compatible with the original purpose of data collection, or where provided for by the legislation of the Russian Federation. If the Developer needs to use User data for other purposes not mentioned above, the Developer is obliged to notify the User and explain the legal grounds for such collection. -7.2. The Developer will not sell/exchange PD without explicit consent. +5.3. The Processing of Personal Data of Users is carried out by the Developer using automation tools. -7.3. **Data Localization**: All servers reside in Russia. **No cross-border transfers**. +## 6. Data Protection +6.1. The Developer has implemented a range of technical, organizational, and administrative measures to ensure the confidentiality, integrity, availability, and inviolability and protection of your data (including PDn) from loss, theft, unauthorized access, unlawful use, modification, or destruction. -## 8. User Rights -8.1. PD subject rights include: - - **Access**: PD copies provided within 30 calendar days. - - **Rectification**: Correction via Application functionality, Administrator request, or direct contact. - - **Erasure**: Deletion requests honored where legally permissible. Account closure triggers automatic deletion, except where retention is legally required (e.g., fraud prevention, legal obligations). - - **Consent Withdrawal**: Withdrawal does not affect pre-withdrawal processing lawfulness. +6.2. These measures include, among others, the implementation of modern security technologies: Secure Sockets Layered (SSL) technology to ensure full encryption of User data and its secure transmission over the Internet. -8.2. Rights are not absolute and may be balanced against the Developer’s legal obligations/legitimate interests. Refusals include justification. +6.3. Only authorized personnel of the Developer have access to Users' Personal Data, and this personnel is obliged to treat Personal Data as confidential. Developer's Representatives do not gain access to User data (including personal data). Security measures may be periodically reviewed in accordance with legal and technical changes. -## 9. Data Retention -9.1. PD is retained only as necessary for collection purposes. +## 7. Data Transfer +7.1. The Developer does not transfer data received from Users (including technical metrics, project data, and other information) to third parties for marketing, advertising, or other commercial purposes. Data transfer is carried out exclusively to the extent necessary to ensure the functionality of the Application: to the Telegram messenger and cloud storage services (according to clause 4.7) initiated by the Administrator. -9.2. Standard retention period: Duration of the Administrator Account. +7.2. The Developer does not transfer personal data received from Users to third parties, except for cases of providing data to courts and/or state bodies and/or law enforcement agencies in cases where required by the laws and regulations of the Russian Federation. -9.3. Post-account closure retention occurs only if mandated by Russian law. +7.3. The Developer guarantees to the User that it will not sell, trade, or transfer your data (including PDn) to third parties without your explicit consent. -9.4. Extended retention applies for legal compliance, fraud prevention, or dispute resolution. +7.4. All Application servers are located on the territory of the Russian Federation. Cross-border transfer of personal data is not performed. -## 10. Policy Amendments -10.1. The Developer may revise this Policy without prior notice. The revision date will be updated. +## 8. User Rights +8.1. The main rights of the User as a Personal Data subject include: + - **Right of access to Personal Data.** The User may request from the Developer a copy of their Personal Data to which the Developer has access. The Developer shall provide information to the User within 10 (ten) business days from the receipt of the request. This period may be extended by no more than 5 (five) business days if the Developer sends a reasoned notification to the User regarding the reasons for the extension. + - **Right to rectification of Personal Data.** The User may demand that the Developer correct or update any of their Personal Data. The User can do this using the corresponding functionality of the Application, by requesting the Administrator, or by contacting us directly. The Developer reserves the right to refuse personal assistance in cases where the correction of Personal Data is available through the Application's functionality or with the help of the Administrator. + - **Right to erasure of Personal Data.** The User may demand that the Developer delete their Personal Data, subject to applicable legislation. In some cases, the Application will automatically delete Personal Data upon closing the Account in the Application. If the User closes their Account, the Developer will not use their Personal Data for any further purposes, nor transfer it to third parties, except as provided by law. The Developer may be unable to fulfill the User's deletion request due to legal obligations, which will be communicated to the User if relevant grounds exist (e.g., if processing is necessary to achieve goals provided by law, to execute a court act, or to exercise the rights and legitimate interests of the Developer or third parties). + - **Right to withdraw consent.** To the extent that the processing of the User's Personal Data is based solely on their consent, the User may withdraw their consent at any time. This will not affect the lawfulness of any processing carried out before the withdrawal. Any processing actions not based on the User's consent will remain unaffected. -10.2. Users should periodically review the Policy on the Website or in the Application. +8.2. None of the rights are absolute, meaning they must generally be weighed against the Developer's own legal obligations, as well as its legitimate interests and the interests of third parties. If a decision is made to reject the User's request, the Developer will inform them of this along with the reasons for such a decision. -10.3. Continued Application Use after revisions implies acceptance. +## 9. Data Storage +9.1. The Developer stores User data (including PDn) no longer than is necessary for the purpose of its collection or processing (followed by deletion). -## 11. Miscellaneous -11.1. Queries regarding Policy interpretation: Contact the Developer at [a-mart@ya.ru](mailto:a-mart@ya.ru). +9.2. Generally, the Developer stores data (including PDn) throughout the lifetime of the Administrator Account. -11.2. Contact details (§12) may be used for Policy-related matters. +9.3. In cases provided for by applicable law, Personal Data may be stored after the closure of the Administrator Account for the period established by such laws. -## 12. Developer Contact Information -**Individual Entrepreneur Martyshkin Alexey Alexandrovich** -Legal address: 111394, Russia, Moscow, Perovskaya St., 66, Bldg. 3, Apt. 187 -OGRNIP: 318774600262084 -INN: 366316608346 -Phone: +7 (926) 339-04-25 -Email: [a-mart@ya.ru](mailto:a-mart@ya.ru) \ No newline at end of file +9.4. The Developer may store User data (including PDn) for a longer period if required by relevant laws and regulations. The Developer may retain some User data (including PDn) after the closure of the Administrator Account to prevent fraud, ensuring that persons attempting to commit fraud cannot avoid detection simply by closing an account and opening a new one, and to fulfill the Developer's legal obligations. + +## 10. Changes to the Privacy Policy +10.1. This Privacy Policy may be revised, updated, and/or amended at any time without prior notice at the Developer's discretion. If such changes are made, the update date of this Privacy Policy will be displayed on the first page of the Privacy Policy. + +10.2. The User is encouraged to independently and regularly monitor changes to the Privacy Policy by reviewing the current version of the Privacy Policy on the Website or in the Application. + +10.3. Following the publication of an updated version of the Privacy Policy, further use of the Application is considered acceptance of the terms of the updated Privacy Policy. + +## 11. Other Provisions +11.1. If any provisions of this Privacy Policy remain unclear, the Developer is ready to explain its provisions. To do this, contact the Developer at the email address [support@tgcrew.ru](mailto:support@tgcrew.ru). + +11.2. The User may use the contact details provided in Section 12 for any reason provided for by this Policy. + +## 12. Developer Contact Information and Details +Individual Entrepreneur Martyshkin Alexey Alexandrovich +Legal Address: 111394, Russian Federation, Moscow, Perovskaya Street, House 66, Building 3, Apartment 187 +OGRNIP 318774600262084 +INN 366316608346 +Phone: +7 (916) 439-04-25 +Email: [info@tgcrew.ru](mailto:info@tgcrew.ru) \ No newline at end of file diff --git a/src/assets/docs/Privacy-Policy_ru.md b/src/assets/docs/Privacy-Policy_ru.md index 91bce6e..1689c67 100644 --- a/src/assets/docs/Privacy-Policy_ru.md +++ b/src/assets/docs/Privacy-Policy_ru.md @@ -1,7 +1,8 @@ -# Политика конфиденциальности -###### Версия 1.01 от 15.08.2025 +###### Версия 1.04 от 15.03.2026 В настоящей Политике конфиденциальности Разработчик предоставляет информацию о пределах сбора данных (в том числе персональных) Пользователей в Приложении, объясняет причины их сбора и способы их использования. +Актуальные версии Пользовательского соглашения и Политики конфиденциальности доступны внутри интерфейса Приложения. Информация, размещенная на Сайте, носит справочный характер. В случае расхождений между текстом на Сайте и в Приложении, юридическую силу имеет версия, размещенная в Приложении. + ## 1. Термины и определения 1.1. **Бот** -- аккаунт с именем @tgCrewBot и адресом [https://t.me/tgCrewBot](https://t.me/tgCrewBot) в мессенджере Telegram, управляемый программно Разработчиком через API (Application Programming Interface, программный интерфейс приложений). Бот предоставляет доступ к Приложению и может использоваться для базового взаимодействия из текстовой строки (inline-mode). @@ -9,9 +10,8 @@ 1.3. **Сайт** -- веб-сайт, расположенный по адресу: [https://tgcrew.ru](https://tgcrew.ru), на котором размещается информация о Приложении и его документация. -1.4. **Пользовательское соглашение** -- документ, актуальная (текущая) версия которого размещается на Сайте по ссылке [https://tgcrew.ru/terms-of-use](https://tgcrew.ru/terms-of-use), а также в Приложении. Если между текстом Пользовательского соглашения, размещенным на Сайте, и текстом, доступным в Приложении, возникают расхождения, то приоритет имеет текст, доступный в Приложении. Договорные отношения между Разработчиком и Пользователем возникают только после принятия Пользовательского соглашения внутри Приложения. - -1.5. **Политика конфиденциальности** -- настоящий документ, регулирующий порядок сбора, хранения и обработки данных (в том числе персональных) Пользователя, введенных им в ходе процедуры регистрации, использования Приложения, а также иных данных. Является неотъемлемым приложением к Пользовательскому соглашению. Актуальная (текущая) версия Политики конфиденциальности размещается на Сайте по ссылке [https://tgcrew.ru/privacy-policy](https://tgcrew.ru/privacy-policy), а также в Приложении. Если между информацией о Политике конфиденциальности, размещенной на Сайте, и информацией, доступной в Приложении, возникают расхождения, то приоритет имеет информация, доступная в Приложении. Согласие на обработку данных в рамках Политики конфиденциальности предоставляется Пользователем внутри Приложения. +1.4. **Пользовательское соглашение** -- настоящий документ, актуальная (текущая) версия которого размещается в Приложении и на Сайте по ссылке [https://tgcrew.ru/terms-of-use](https://tgcrew.ru/terms-of-use). Договорные отношения между Разработчиком и Пользователем возникают только после принятия Пользовательского соглашения внутри Приложения. +1.5. **Политика конфиденциальности** -- документ, регулирующий порядок сбора, хранения и обработки данных (в том числе персональных) Пользователя, введенных им в ходе процедуры регистрации, использования Приложения, а также иных данных. Является неотъемлемым приложением к Пользовательскому соглашению. Актуальная (текущая) версия Политики конфиденциальности размещается в Приложении и на Сайте по ссылке [https://tgcrew.ru/privacy-policy](https://tgcrew.ru/privacy-policy). Согласие на обработку данных в рамках Политики конфиденциальности предоставляется Пользователем внутри Приложения. 1.6. **Разработчик** -- индивидуальный предприниматель Мартышкин Алексей Александрович (ИП Мартышкин А.А.), ОГРНИП 318774600262084, ИНН 366316608346 (Российская Федерация). @@ -34,19 +34,19 @@ 1.14. **Представители Разработчика** -- круг лиц, привлекаемых Разработчиком в рамках разработки и поддержки Приложения, действующие от имени и (или) по поручению Разработчика. -1.15. **Персональные данные (или ПДн)** -- любая информация, относящаяся к прямо или косвенно определенному или определяемому физическому лицу (субъекту персональных данных) (согласно N152-ФЗ, Глава 1, Статья 3, п. 1). +1.15. **Персональные данные (или ПДн)** -- любая информация, относящаяся к прямо или косвенно определенному или определяемому физическому лицу (субъекту персональных данных) (согласно № 152-ФЗ, Глава 1, Статья 3, п. 1). -1.16. **Обработка персональных данных** -- любое действие (операция) или совокупность действий (операций), совершаемых с использованием средств автоматизации или без использования таких средств с персональными данными, включая сбор, запись, систематизацию, накопление, хранение, уточнение (обновление, изменение), извлечение, использование, передачу (распространение, предоставление, доступ), обезличивание, блокирование, удаление, уничтожение персональных данных (согласно N152-ФЗ, Глава 1, Статья 3, п. 3). +1.16. **Обработка персональных данных** -- любое действие (операция) или совокупность действий (операций), совершаемых с использованием средств автоматизации или без использования таких средств с персональными данными, включая сбор, запись, систематизацию, накопление, хранение, уточнение (обновление, изменение), извлечение, использование, передачу (распространение, предоставление, доступ), обезличивание, блокирование, удаление, уничтожение персональных данных (согласно № 152-ФЗ, Глава 1, Статья 3, п. 3). -1.17. **Оператор** -- государственный орган, муниципальный орган, юридическое или физическое лицо, самостоятельно или совместно с другими лицами организующие и (или) осуществляющие обработку персональных данных, а также определяющие цели обработки персональных данных, состав персональных данных, подлежащих обработке, действия (операции), совершаемые с персональными данными (согласно N152-ФЗ, Глава 1, Статья 3, п. 2). +1.17. **Оператор** -- государственный орган, муниципальный орган, юридическое или физическое лицо, самостоятельно или совместно с другими лицами организующие и (или) осуществляющие обработку персональных данных, а также определяющие цели обработки персональных данных, состав персональных данных, подлежащих обработке, действия (операции), совершаемые с персональными данными (согласно № 152-ФЗ, Глава 1, Статья 3, п. 2). -1.18. **Автоматизированная обработка персональных данных** -- обработка персональных данных с помощью средств вычислительной техники (согласно N152-ФЗ, Глава 1, Статья 3, п. 4). +1.18. **Автоматизированная обработка персональных данных** -- обработка персональных данных с помощью средств вычислительной техники (согласно № 152-ФЗ, Глава 1, Статья 3, п. 4). -1.19. **Предоставление персональных данных** -- действия, направленные на раскрытие персональных данных определенному лицу или определенному кругу лиц (согласно N152-ФЗ, Глава 1, Статья 3, п. 6). +1.19. **Предоставление персональных данных** -- действия, направленные на раскрытие персональных данных определенному лицу или определенному кругу лиц (согласно № 152-ФЗ, Глава 1, Статья 3, п. 6). -1.20. **Трансграничная передача персональных данных** -- передача персональных данных на территорию иностранного государства органу власти иностранного государства, иностранному физическому лицу или иностранному юридическому лицу (согласно N152-ФЗ, Глава 1, Статья 3, п. 11). +1.20. **Трансграничная передача персональных данных** -- передача персональных данных на территорию иностранного государства органу власти иностранного государства, иностранному физическому лицу или иностранному юридическому лицу (согласно № 152-ФЗ, Глава 1, Статья 3, п. 11). -1.21. **Уничтожение персональных данных** -- действия, в результате которых становится невозможным восстановить содержание персональных данных в информационной системе персональных данных и (или) в результате которых уничтожаются материальные носители персональных данных (согласно N152-ФЗ, Глава 1, Статья 3, п. 8). +1.21. **Уничтожение персональных данных** -- действия, в результате которых становится невозможным восстановить содержание персональных данных в информационной системе персональных данных и (или) в результате которых уничтожаются материальные носители персональных данных (согласно № 152-ФЗ, Глава 1, Статья 3, п. 8). ## 2. Общие положения 2.1. Настоящая Политика конфиденциальности регулирует исключительно отношения между Разработчиком и Пользователем. Она не может регулировать отношения между мессенджером Telegram (далее - Telegram) и его пользователями и не заменяет Политику конфиденциальности Telegram. @@ -58,7 +58,7 @@ 2.3. Разработчик выступает в роли Оператора при Обработке персональных данных Пользователей Приложения. ## 3. Прием условий настоящей Политики конфиденциальности -3.1. Свидетельством полного и безоговорочного принятия условий настоящей Политики конфиденциальности (акцептом), является осуществление процедуры принятия Политики конфиденциальности путем проставления символа «V» (галочки) в чек-боксе интерфейса Приложения рядом с текстом: «Я даю Согласие на обработку своих персональных данных и принимаю условия Политики конфиденциальности» на соответствующих экранах в Приложении. +3.1. Свидетельством полного и безоговорочного принятия условий настоящей Политики конфиденциальности (акцептом), является осуществление процедуры принятия Политики конфиденциальности путем активации (проставления отметки) в соответствующем интерактивном элементе (поле для отметки) интерфейса Приложения рядом с текстом: «Я даю Согласие на обработку своих персональных данных и принимаю условия Политики конфиденциальности» на соответствующих экранах в Приложении. 3.2. Использование Приложения означает согласие Пользователя на сбор и обработку информации из Подключенных чатов в соответствии с Политикой конфиденциальности (см. пп. 4.2-4.4). @@ -71,7 +71,7 @@ 4.2.1. Приложение в автоматическом режиме собирает следующие данные Пользователей, которые могут быть определены как Персональные данные: -а) Данные предоставляемые Telegram через API: имя пользователя (Name, вкл. в себя First name и Last name), псевдоним (Username), идентификатор пользователя (ID), изображение профиля (аватар), языковые настройки клиента Telegram, данные транзакций Telegram Stars (только для Администратора). +а) Данные предоставляемые Telegram через API: имя пользователя (Name, включающее в себя first_name и last_name), псевдоним (Username), идентификатор пользователя (ID), идентификатор изображения профиля (используется для отображения аватара без сохранения копий файлов на серверах Разработчика), языковые настройки клиента Telegram, а также данные транзакций Telegram Stars (только для Администратора). б) Данные о взаимодействии Пользователя с серверами Приложения (технические данные): IP-адрес с которого осуществляется запрос, дата и время получения запроса сервером Приложения, запрошенный URL, HTTP-код ответа сервера Приложения, размер ответа в байтах, User-Agent (информация о браузере и операционной системе клиента), Referrer (URL страницы, с которой был сделан запрос, если доступно). 4.2.2. Администратор предоставляет: @@ -84,7 +84,7 @@ - сведения о месте работы (наименование организации, структурное подразделение, должность и (или) функциональная роль). Разработчик не несет ответственности за корректность и точность указанных данных, но как Оператор обеспечивает законность их обработки. Администратор обязан обеспечить наличие правовых оснований для предоставления персональных данных Пользователей в соответствии с применимым законодательством (в случае указания реальных данных). -Предоставление указанных данных о Пользователе в Приложении, которые могут быть определены как Персональные данные, другим Пользователям, осуществляется только для Пользователей, имеющих общий Подключенный чат. Принимая данную Политику конфиденциальности, Пользователь согласен с таким предоставлением его данных. При необходимости, пользователь может обратиться к Администратору для удаления или изменения выше указанных данных. +Предоставление указанных данных о Пользователе в Приложении, которые могут быть определены как Персональные данные, другим Пользователям, осуществляется только для Пользователей, имеющих общий Подключенный чат. Принимая данную Политику конфиденциальности, Пользователь согласен с таким предоставлением его данных. При необходимости, пользователь может обратиться к Администратору для удаления или изменения вышеуказанных данных. 4.2.4. Пользователи при обращении к Разработчику (например, при запросе в техническую поддержку Приложения) вправе предоставить любые следующие данные, которые могут быть определены как Персональные данные: - фамилия, имя, отчество; @@ -92,18 +92,22 @@ - адрес электронной почты; - сведения о месте работы (наименование организации, структурное подразделение, должность и (или) функциональная роль). -4.3. Приложение при создании и поддержания http-соединения использует HttpOnly cookie-файлы, которые не доступны из JavaScript через свойства Document.cookie API и используются для снижения риска XSS (Cross-Site Scripting - «межсайтовый скриптинг»). Другие cookie-файлы не устанавливаются и не используются. +4.3. Приложение при создании и поддержании http-соединения использует HttpOnly cookie-файлы, которые не доступны из JavaScript через свойства Document.cookie API и используются для снижения риска XSS (Cross-Site Scripting - «межсайтовый скриптинг»). Другие cookie-файлы не устанавливаются и не используются. -4.4. Приложение с помощью Бота отслеживает события в Подключенных чатах (такие как добавление/изменение/удаление сообщений, добавление/удаление файлов и т.п.). При необходимости для реализации функционала Приложения – эти изменения фиксируются в базе данных Приложения. +4.4. Приложение с помощью Бота отслеживает события в Подключенных чатах (такие как добавление/изменение/удаление сообщений, добавление/удаление файлов и т.п.), но только при условии - Боту предоставлены права Администратора на доступ к сообщениям в Подключенных чатах. 4.5. Приложение хранит данные, которые Пользователи вводят в Приложении, в том числе: - - данные проектов (имя, описание, логотип), + - данные проектов (имя, описание, логотип и т.п.), - данные компаний (название, адрес, контактный телефон, веб-сайт и т.п.), - данные задач и совещаний (описание, дата и время и т.п.). -4.6. Разработчик не хранит на своих серверах файлы из чатов, задач и совещаний (хранение осуществляется внутри Telegram). +4.6. Разработчик не хранит и не анализирует на собственных вычислительных мощностях (серверах) переписку из Подключенных чатов. -4.7. Приложение не собирает на стороне Пользователя никакую дополнительную информацию, которая может быть определена как Персональные данные, кроме той, что указана в п. 4.2, а также не осуществляет анализ информации, которая доступна ему в чатах. +4.7. Разработчик не хранит на собственных вычислительных мощностях (серверах) файлы из чатов, задач и совещаний. Хранение осуществляется внутри Telegram либо на подключаемых Администратором сторонних сервисах облачного хранения (Яндекс Диск или Google Drive). +Ответственность за выбор стороннего сервиса хранения, соблюдение его условий использования и политики конфиденциальности, а также за наличие правовых оснований для передачи данных в такие сервисы, целиком лежит на Администраторе. Разработчик не является оператором хранения в отношении указанных сторонних сервисов и не несет ответственности за их доступность, сохранность данных или инциденты информационной безопасности на стороне провайдеров облачных услуг. +При подключении Администратором сторонних сервисов хранения (Яндекс Диск или Google Drive), взаимодействие Приложения с указанными сервисами осуществляется исключительно через API соответствующих сервисов. Разработчик не запрашивает, не собирает и не хранит авторизационные данные этих сервисов. Авторизация в таких сервисах происходит на стороне соответствующих провайдеров. + +4.8. Приложение не собирает на стороне Пользователя никакую дополнительную информацию, которая может быть определена как Персональные данные, кроме той, что указана в п. 4.2, а также не осуществляет анализ информации, которая доступна ему в чатах. ## 5. Цели сбора данных 5.1. Сбор данных осуществляется со следующими целями: @@ -127,17 +131,19 @@ 6.3. Только уполномоченный персонал Разработчика имеет доступ к Персональным данным Пользователей, и этот персонал обязан относиться к Персональным данным как к конфиденциальным. Представители Разработчика не получают доступа к данным Пользователей (в том числе персональным). Меры безопасности могут периодически пересматриваться в соответствии с юридическими и техническими изменениями. ## 7. Передача данных -7.1. Разработчик не осуществляет передачу данных (в том числе ПДн), полученных от Пользователей, третьим лицам, кроме случаев предоставления данных судам и(или) государственным органам и(или) правоохранительным органам в случаях, когда это требуется законами и нормативными актами. +7.1. Разработчик не осуществляет передачу данных, полученных от Пользователей (включая технические метрики, данные проектов и иную информацию), третьим сторонам для маркетинговых, рекламных или иных коммерческих целей. Передача данных осуществляется исключительно в объеме, необходимом для обеспечения функциональности Приложения: мессенджеру Telegram и сервисам облачного хранения (согласно п.4.7), инициируемым Администратором. -7.2. Разработчик гарантирует Пользователю, что не будет продавать, обменивать или передавать ваши данные (в том числе ПДн) третьим лицам без вашего явного согласия. +7.2. Разработчик не осуществляет передачу персональных данных, полученных от Пользователей, третьим лицам, кроме случаев предоставления данных судам и(или) государственным органам и(или) правоохранительным органам в случаях, когда это требуется законами и нормативными актами Российской Федерации. -7.3. Все сервера Приложения находятся на территории Российской Федерации. Трансграничная передача персональных данных не осуществляется. +7.3. Разработчик гарантирует Пользователю, что не будет продавать, обменивать или передавать ваши данные (в том числе ПДн) третьим лицам без вашего явного согласия. + +7.4. Все сервера Приложения находятся на территории Российской Федерации. Трансграничная передача персональных данных не осуществляется. ## 8. Права пользователей 8.1. Основные права Пользователя как субъекта Персональных данных включают: - - **Право на доступ к Персональным данным.** Пользователь может запросить у Разработчика предоставление ему копии своих Персональных данных, к которым у Разработчика есть доступ. Разработчик предоставляет такую информацию Пользователю в разумные сроки (не более 30 календарных дней). + - **Право на доступ к Персональным данным.** Пользователь может запросить у Разработчика предоставление ему копии своих Персональных данных, к которым у Разработчика есть доступ. Разработчик предоставляет информацию Пользователю в течение 10 (десяти) рабочих дней с момента получения запроса. Этот срок может быть продлен не более чем на 5 (пять) рабочих дней в случае направления Разработчиком в адрес Пользователя мотивированного уведомления о причинах продления. - **Право на исправление Персональных данных.** Пользователь может потребовать от Разработчика исправить или обновить любые свои Персональные данные. Пользователь может сделать это с помощью соответствующей функциональности Приложения, запросив Администратора или связавшись с нами напрямую. Разработчик оставляет за собой право отказывать в персональной помощи в случаях, когда исправление Персональных данных доступно через функциональность Приложения или с помощью Администратора. - - **Право на удаление Персональных данных.** Пользователь может потребовать от Разработчика удалить свои Персональные данные, с учетом применимого законодательства. В некоторых случаях Приложение автоматически удалит Персональные данные при закрытии Учетной записи в Приложении. Если Пользователь закрывает свою Учетную запись, Разработчик не будет использовать его Персональные данные для каких-либо дальнейших целей, а также передавать их третьим лицам, за исключением случаев, предусмотренных законом. Разработчик не всегда сможет выполнить запрос Пользователя на удаление по конкретным юридическим причинам, о которых будет сообщено Пользователю при наличии соответствующих оснований (например, если обработка необходима для достижения целей, предусмотренных законом, для исполнения судебного акта, для осуществления прав и законных интересов Разработчика или третьих лиц). + - **Право на удаление Персональных данных.** Пользователь может потребовать от Разработчика удалить свои Персональные данные, с учетом применимого законодательства. В некоторых случаях Приложение автоматически удалит Персональные данные при закрытии Учетной записи в Приложении. Если Пользователь закрывает свою Учетную запись, Разработчик не будет использовать его Персональные данные для каких-либо дальнейших целей, а также передавать их третьим лицам, за исключением случаев, предусмотренных законом. Разработчик может быть лишен возможности выполнить запрос Пользователя на удаление в силу юридических обязательств, о которых будет сообщено Пользователю при наличии соответствующих оснований (например, если обработка необходима для достижения целей, предусмотренных законом, для исполнения судебного акта, для осуществления прав и законных интересов Разработчика или третьих лиц). - **Право на отзыв согласия.** В той мере, в какой обработка Персональных данных Пользователя основана исключительно на его согласии, Пользователь может отозвать свое согласие в любое время. Это не повлияет на правомерность любой обработки, которая была осуществлена до отзыва. Любые действия по обработке, не основанные на согласии Пользователя, останутся незатронутыми. 8.2. Ни одно из прав не является абсолютным, что означает, что они, как правило, должны быть взвешены против собственных юридических обязательств Разработчика, а также его законных интересов и интересов третьих лиц. Если будет принято решение отклонить запрос Пользователя, то Разработчик проинформирует его об этом вместе с причинами такого решения. @@ -159,14 +165,14 @@ 10.3. После публикации обновленной версии Политики конфиденциальности дальнейшее использование Приложения считается принятием условий обновленной Политики конфиденциальности. ## 11. Прочие положения -11.1. Если какие-либо положения настоящей Политики конфиденциальности остались неясными, Разработчик готов разъяснить ее положения. Для этого свяжитесь с Разработчиком по адресу электронной почты [a-mart@ya.ru](mailto:a-mart@ya.ru). +11.1. Если какие-либо положения настоящей Политики конфиденциальности остались неясными, Разработчик готов разъяснить ее положения. Для этого свяжитесь с Разработчиком по адресу электронной почты [support@tgcrew.ru](mailto:support@tgcrew.ru). 11.2. Пользователь может использовать контактные данные, приведенные в разделе 12, по любой причине, предусмотренной настоящей Политикой. ## 12. Контактная информация и реквизиты Разработчика Индивидуальный предприниматель Мартышкин Алексей Александрович -Юридический адрес: 111394, Российская Федерация, г. Москва, ул. Перовская, д. 66, к.3, кв. 187 +Юридический адрес: 111394, Российская Федерация, город Москва, улица Перовская, дом 66, корпус 3, квартира 187 ОГРНИП 318774600262084 ИНН 366316608346 -Телефон: +7 (926)339-04-25 -Электронная почта: [a-mart@ya.ru](mailto:a-mart@ya.ru) +Телефон: +7 (916) 439-04-25 +Электронная почта: [info@tgcrew.ru](mailto:info@tgcrew.ru) diff --git a/src/assets/docs/Subscription_guide_en.md b/src/assets/docs/Subscription_guide_en.md index 7cb6be4..6ef537c 100644 --- a/src/assets/docs/Subscription_guide_en.md +++ b/src/assets/docs/Subscription_guide_en.md @@ -1,44 +1,47 @@ -*This document is an English adaptation of the Subscription Plan Terms originally drafted in Russian. In the event of any disputes subject to resolution in courts of the Russian Federation, the Russian-language version shall prevail.* +*This document is an English adaptation of «Положение о Тарифных планах подписки» originally drafted in Russian. In the event of any disputes subject to resolution in courts of the Russian Federation, the Russian-language version shall prevail.* -# Subscription Plan Terms -###### Version 1.02 dated 02.09.2025 +###### Version 1.04 dated March 15, 2026 The text of this document is an integral part of the Terms of Use. ## 1. General Principles +1.1. All Tariffs provide identical functionality, except for limitations on the number of supported (active) Connected Chats. +1.2. The term "day" in the system is defined as an interval of 24 hours. +1.3. The maximum subscription period is 730 days (2 years). +1.4. Upon expiration of the subscription, access to the Application's functionality may be suspended. Data created during the period without an active subscription may not be displayed in the Application. +1.5. Notification regarding the need to renew the subscription is sent to the Administrator via the Bot or by email (depending on the authentication method) no later than 14 calendar days before its expiration. +1.6. Renewal and change of subscription plans are carried out exclusively through the Admin Panel in the "Settings > Subscription" section. +1.7. The sole method of paying remuneration to the Developer is the use of Telegram's internal currency (Telegram Stars). +1.8. The Developer is entitled to unilaterally extend the subscription period without charging additional fees (within marketing promotions or for other reasons). +1.9. The subscription remains active throughout the paid period, regardless of whether the Users and the Administrator use the Application or not. -1.1. All Plans provide identical functionality, except for the limitations on the number of supported (active) Connected Chats. -1.2. The maximum subscription term is 730 days (2 years). -1.3. Upon termination of the subscription, access to the Application's functionality may be suspended. Data created during the period without an active subscription may not be displayed in the Application. -1.4. A notification of the need to renew the subscription is sent to the Administrator via the bot or by email (depending on the authentication method) no later than 14 calendar days before its expiration. -1.5. Renewal and changes of subscription plans are performed exclusively through the Admin Panel in the "Settings > Subscribe" section. -1.6. The Developer has the right to unilaterally extend the subscription term without additional charge (within the framework of marketing promotions or for other reasons). +## 2. Subscription Renewal +2.1. If the Tariff selected during payment matches the current one, it is considered a subscription renewal; otherwise, it is a change of subscription (see Section 3). +2.2. Subscription renewal is performed by shifting the expiration date of the previously paid period by the number of days specified during payment. +2.3. Upon subscription renewal, unused days of the current Tariff are preserved and added to the new period. +2.4. A discount corresponding to the selected renewal period is applied upon subscription renewal. -## 2. Changing Subscription Plans -2.1. The Application Administrator has the right to change the subscription plan after 14 (fourteen) calendar days from the moment of the previous Plan change (unless the TEST Plan is used). -2.2. The change of the subscription plan is performed automatically (except for the case specified in clause 2.5.5), after confirmation of the remuneration transfer is received. -2.3. When changing the Plan, the cost of the unused period of the current subscription is credited towards the payment for the new plan in the form of additional days. -2.4. Upgrade to a Plan with a Higher Number of Chats -2.4.1. When switching from the TEST Plan, no additional days are accrued. -2.4.2. The base daily cost is calculated using the formula: +## 3. Change of Subscription (Modification of the Active Tariff Plan) +3.1. The Application Administrator is entitled to change the tariff plan one Day after the previous Tariff modification. +3.2. Transition to a new Tariff is performed automatically (except for the case specified in clause 3.9) after the Developer receives the processed payment data from Telegram. +3.3. Upon changing the Tariff, the restrictions of the new Tariff (maximum number of chats) apply immediately. +3.4. Transition to a Tariff with fewer chats is possible only if the number of current (active) Connected Chats in the Application does not exceed the limit of the new Tariff. +3.5. Upon changing the Tariff, the value of the unused period of the current subscription is credited towards the new tariff plan in the form of additional days in accordance with the calculation rules set forth in clauses 3.7–3.9 of this Provision. +3.6. For paid Tariffs, the base daily cost when paying for a period is determined according to the formula: -Base Daily Cost = (Base Plan Cost / 30) * (100% - Period Discount) +**Base Daily Cost = (Base Tariff Cost / 30) * (100% - Period Discount)** -2.4.3. The number of additional days is calculated using the formula, with the result rounded up to a whole number: +3.7. Number of additional days: +**Number of Additional Days = (Base Daily Cost of the Current Tariff * Number of Unused Days) / Base Daily Cost of the New Tariff** -Number of Additional Days = (Base Daily Cost on the current Plan * Number of unused days) / Base Daily Cost on the new Plan +3.8. The discount rate used for calculating the Base Daily Cost is taken as follows: +-- For the current Tariff: the discount for the last paid period; +-- For the new Tariff: the discount for the selected period. -2.5. Downgrade to a Plan with a Lower Number of Chats -2.5.1. A Plan change is only possible if the number of current (active) Connected Chats in the Application does not exceed the number supported by the new Plan. -2.5.2. When calculating the daily cost of the current Plan, the period discount is not taken into account if more than 14 days remain until the subscription expiration. -2.5.3. The base daily cost is determined according to the formula, taking into account clause 2.5.2: +3.9. Transition to a Tariff without payment (free) is carried out only through a support request followed by manual recalculation and a refund. +3.10. All calculations are performed using rounding. A discrepancy of up to 3 (three) additional days is recognized by the Administrator and the Developer as an acceptable technical tolerance, and no claims shall be made regarding such discrepancy. +3.11. If signs of abuse of the Tariff change mechanism are detected (e.g., frequent switching between Tariffs), the Developer reserves the right to suspend the Administrator's account, cancel recalculation results, and, in exceptional cases, fully block the account without a refund (in accordance with clause 8.12 of the Terms of Use). -Base Daily Cost = (Base Plan Cost / 30) * (100% - Period Discount) - -2.5.4. The number of additional days is calculated using the formula, with the result rounded up to a whole number or zero: - -Number of Additional Days = (Paid cost of the current Plan – (Base Daily Cost on the current Plan * Number of days used)) / Base Daily Cost on the new Plan - -2.5.5. Transition to the TEST Plan is performed only by contacting support, followed by a manual recalculation and refund. -2.6. All calculations are performed using rounding. Claims for the under-accrual of up to 3 (Three) additional days are not accepted by the Developer. -2.7. The Developer reserves the right to suspend the Administrator's account or cancel the results of the recalculation if signs of systematic abuse of the plan change mechanism are detected (e.g., frequent cyclic switching between Plans). In such cases, the Administrator's account may be blocked without a refund. \ No newline at end of file +## 4. Use of Promo Codes +4.1. Promo codes are provided for a specific amount of Telegram Stars, which are converted into additional days according to the active Tariff. The Base Daily Cost takes into account the period discount of the paid subscription (if any). +4.2. Promo codes are not available for non-paid (free) Tariffs. \ No newline at end of file diff --git a/src/assets/docs/Subscription_guide_ru.md b/src/assets/docs/Subscription_guide_ru.md index 16a213d..82a7d94 100644 --- a/src/assets/docs/Subscription_guide_ru.md +++ b/src/assets/docs/Subscription_guide_ru.md @@ -1,40 +1,43 @@ -# Положение о Тарифных планах подписки -###### Версия 1.02 от 02.09.2025 +###### Версия 1.04 от 15.03.2026 Текст настоящего документа является неотъемлемой частью Пользовательского соглашения. ## 1. Общие принципы 1.1. Все Тарифы обеспечивают идентичный функционал, за исключением ограничений на количество поддерживаемых (активных) Подключенных чатов. -1.2. Максимальный срок действия подписки составляет 730 дней (2 года). -1.3. При прекращении действия подписки доступ к функционалу Приложения может быть приостановлен. Данные, созданные в период отсутствия активной подписки, могут не отображаться в Приложении. -1.4. Уведомление о необходимости продления подписки направляется Администратору через бота или по электронной почте (в зависимости от способа аутентификации) не позднее чем за 14 календарных дней до истечения её срока действия. -1.5. Продление и смена тарифных планов осуществляются исключительно через Панель администратора в разделе «Настройки > Подписка». -1.6. Разработчик вправе в одностороннем порядке продлить действие подписки без взимания дополнительной платы (в рамках маркетинговых акций или по иным причинам). +1.2. Под понятием «день» в системе принимается интервал длительностью 24 часа. +1.3. Максимальный срок действия подписки составляет 730 дней (2 года). +1.4. При прекращении действия подписки доступ к функционалу Приложения может быть приостановлен. Данные, созданные в период отсутствия активной подписки, могут не отображаться в Приложении. +1.5. Уведомление о необходимости продления подписки направляется Администратору через бота или по электронной почте (в зависимости от способа аутентификации) не позднее чем за 14 календарных дней до истечения её срока действия. +1.6. Продление и смена тарифных планов осуществляются исключительно через Панель администратора в разделе «Настройки > Подписка». +1.7. Единственным способом выплаты вознаграждения Разработчику является использование внутренней валюты Telegram (Telegram Stars). +1.8. Разработчик вправе в одностороннем порядке продлить действие подписки без взимания дополнительной платы (в рамках маркетинговых акций или по иным причинам). +1.9. Подписка активна в течение оплаченного периода, вне зависимости используют ли Пользователи и Администратор Приложение или нет. -## 2. Смена тарифных планов -2.1. Администратор Приложения вправе сменить тарифный план по истечении 14 (четырнадцати) календарных дней с момента предыдущего изменения Тарифа (если не используется Тариф TEST). -2.2. Смена тарифного плана производится в автоматическом режиме (за исключением случая, указанного в п. 2.5.5), после получения подтверждения перечисления вознаграждения. -2.3. При смене Тарифа стоимость неиспользованного периода текущей подписки засчитывается в счёт оплаты нового тарифного плана в виде дополнительных дней. -2.4. Переход на Тариф с большим количеством чатов -2.4.1. При переходе с Тарифа TEST дополнительные дни не начисляются. -2.4.2. Базовая стоимость дня рассчитывается по формуле: +## 2. Продление подписки +2.1. Если при оплате выбранный Тариф совпадает с текущим, то считается, что происходит продление подписки, иначе – это смена подписки см. раздел 3. +2.2. Продление подписки происходит сдвигом даты окончания ранее оплаченного периода на количество дней, указываемых при оплате. +2.3. При продлении подписки неиспользованные дни текущего тарифа сохраняются и суммируются с новым периодом. +2.4. При продлении подписки применяется скидка, соответствующая выбранному периоду продления. + +## 3. Смена подписки (изменение действующего тарифного плана) +3.1. Администратор Приложения вправе сменить тарифный план через один День с момента предыдущего изменения Тарифа. +3.2. Переход на новый Тариф производится в автоматическом режиме (за исключением случая, указанного в п. 3.9), после получения результатов обработки данных об оплате от Telegram в сторону Разработчика. +3.3. При смене Тарифа ограничения нового Тарифа (максимальное количество чатов) применяются немедленно. +3.4. Переход на Тариф с меньшим количеством чатов возможен, только если количество текущих (активных) Подключенных чатов в Приложении не превышает ограничения нового Тарифа. +3.5. При смене Тарифа стоимость неиспользованного периода текущей подписки засчитывается в счёт оплаты нового тарифного плана в виде дополнительных дней в соответствии с правилами расчета, изложенными в п. 3.7–3.9 настоящего Положения. +3.6. Для платных Тарифов базовая стоимость дня при оплате периода принимается согласно формуле: **Базовая стоимость дня = (Базовая стоимость Тарифа / 30) * (100% - Скидка за период)** -2.4.3. Количество дополнительных дней рассчитывается по формуле, с округлением полученного результата вверх до целого значения: - +3.7. Количество дополнительных дней **Количество дополнительных дней = (Базовая стоимость дня на текущем Тарифе * Количество неиспользованных дней) / Базовая стоимость дня на новом Тарифе** +3.8. Размер скидки при расчете Базовой стоимости дня принимается: +-- на текущем Тарифе: скидка за последний оплаченный период, +-- на новом Тарифе: скидка за выбранный период, -2.5. Переход на Тариф с меньшим количеством чатов -2.5.1. Смена Тарифа возможна, только если количество текущих (активных) Подключенных чатов в Приложении не превышает количества, которое поддерживает новый Тариф. -2.5.2. При расчете стоимости дня текущего Тарифа скидка за период не учитывается, если до окончания срока действия подписки осталось более 14 дней. -2.5.3. Базовая стоимость дня принимается согласно формуле, с учетом п. 2.5.2: +3.9. Переход на Тариф без оплаты (бесплатный) осуществляется только через обращение в поддержку с последующим ручным перерасчетом и возвратом средств. +3.10. Все расчеты производятся с применением округлений. Погрешность до 3 (Трех) дополнительных дней признается Администратором и Разработчиком допустимым техническим допуском, претензии по которому не предъявляются. +3.11. При выявлении признаков злоупотребления механизмом смены Тарифов (например, частых переключений между Тарифами) Разработчик оставляет за собой право на приостановку действия аккаунта Администратора, отмены результатов перерасчета, а в особых случаях и полной блокировки без возврата средств (согласно п. 8.12 Пользовательского соглашения). -**Базовая стоимость дня = (Базовая стоимость Тарифа / 30) * (100% - Скидка за период)** - -2.5.4. Количество дополнительных дней рассчитывается по формуле, с округлением полученного результата вверх до целого значения или нуля: - -**Количество дополнительных дней = (Оплаченная стоимость текущего Тарифа – (Базовая стоимость дня на текущем Тарифе * Количество использованных дней)) / Базовая стоимость дня на новом Тарифе** - -2.5.5. Переход на Тариф TEST осуществляется только через обращение в поддержку с последующим ручным перерасчетом и возвратом средств. -2.6. Все расчеты производятся с применением округлений. Претензии по недоначислению до 3 (Трех) дополнительных дней не принимаются Разработчиком. -2.7. Разработчик оставляет за собой право приостановить действие аккаунта Администратора или отменить результаты перерасчета при выявлении признаков систематического злоупотребления механизмом смены тарифных планов (например, частых циклических переключений между Тарифами). В таких случаях аккаунт Администратора может быть заблокирован без возврата средств. +## 4. Использование промокодов +4.1. Промокоды предоставляются на количество Telegram Stars, которые конвертируются в дополнительные дни согласно действующему Тарифу. Базовая стоимость дня учитывает скидку за период в оплаченной подписке (при ее наличии). +4.2. На Тарифах без оплаты промокоды недоступны. diff --git a/src/assets/docs/Terms_of_use_en.md b/src/assets/docs/Terms_of_use_en.md index 276501e..6b7e2de 100644 --- a/src/assets/docs/Terms_of_use_en.md +++ b/src/assets/docs/Terms_of_use_en.md @@ -1,153 +1,144 @@ -*This document is an English adaptation of the Terms of Use originally drafted in Russian. In the event of any disputes subject to resolution in courts of the Russian Federation, the Russian-language version shall prevail.* +*This document is an English adaptation of «Пользовательское соглашение» originally drafted in Russian. In the event of any disputes subject to resolution in courts of the Russian Federation, the Russian-language version shall prevail.* -# Terms of Use -###### Version 1.01 dated 15.08.2025 +###### Version 1.04 dated March 15, 2026 -This Terms of Use constitutes a Public Offer by Individual Entrepreneur Martyshkin A.A. (IE Martyshkin A.A.) addressed to any individual, individual entrepreneur, and/or legal entity under the terms specified herein. +The text of these Terms of Use constitutes a public offer by IE Martyshkin A.A. addressed to any natural person, individual entrepreneur, and/or legal entity under the conditions set forth herein. + +The current versions of the Terms of Use and the Privacy Policy are available within the Application interface. Information posted on the Website is for reference purposes only. In the event of discrepancies between the text on the Website and in the Application, the version hosted within the Application shall prevail and be legally binding. ## 1. Terms and Definitions -1.1. **Bot** — An account named @tgCrewBot located at [https://t.me/tgCrewBot](https://t.me/tgCrewBot) within the Telegram messenger, programmatically managed by the Developer via API (Application Programming Interface). The Bot provides access to the Application and supports basic interaction via inline mode. +1.1. **Bot** — an account named @tgCrewBot with the address [https://t.me/tgCrewBot](https://t.me/tgCrewBot) in the Telegram messenger, programmatically managed by the Developer via API (Application Programming Interface). The Bot provides access to the Application and may be used for basic interaction from the text string (inline-mode). +1.2. **Application** — the tgCrew mini-app operating within the Telegram messenger environment as part of the Telegram Mini Apps (TMA) ecosystem and accessible through interaction with the Bot. Although the Application uses the Telegram platform for its functioning and distribution, it is developed and provided exclusively by the Developer. The Application is not a product of the Telegram messenger development company, is not supported by it, is not endorsed by it, and is not legally or organizationally affiliated with it. The Application's functionality is available only after the acceptance of the Terms of Use and the Privacy Policy. +1.3. **Website** — the website located at [https://tgcrew.ru](https://tgcrew.ru), which hosts information about the Application and its documentation. +1.4. **Terms of Use** — this document, the current version of which is posted in the Application and on the Website at [https://tgcrew.ru/terms-of-use](https://tgcrew.ru/terms-of-use). Contractual relations between the Developer and the User arise only after the acceptance of the Terms of Use within the Application. +1.5. **Privacy Policy** — a document governing the procedure for collecting, storing, and processing User data (including personal data) entered during registration, use of the Application, and other data. It is an integral appendix to the Terms of Use. The current version of the Privacy Policy is posted in the Application and on the Website at [https://tgcrew.ru/privacy-policy](https://tgcrew.ru/privacy-policy). Consent for data processing within the framework of the Privacy Policy is provided by the User inside the Application. +1.6. **Developer** — Individual Entrepreneur Martyshkin Alexey Alexandrovich (IE Martyshkin A.A.), OGRNIP 318774600262084, INN 366316608346 (Russian Federation). +1.7. **User** — a natural person, individual entrepreneur, legal entity, or their authorized representative who has accepted the conditions of the Terms of Use and the Privacy Policy by explicit confirmation within the Application interface. +1.8. **Administrator** — a User of the Application who manages the Application using the Admin Panel. +1.9. **Administrator Account** — the account through which the Administrator authenticates to access the Admin Panel. +1.10. **Chat Member** — a participant of a Connected Chat who may not be a User of the Application. +1.11. **Admin Panel** — the Application interface for managing the Application, including the following functions: + - connecting chats to the Application (see clause 1.12 – Connected Chat); + - entering additional information for Users; + - monitoring and making payments of remuneration to the Developer for the use of the Application. -1.2. **Application** — The tgCrew mini-application operating within the Telegram messenger as part of the Telegram Mini Apps (TMA) ecosystem, accessible via interaction with the Bot. While the Application utilizes Telegram’s platform for operation and distribution, it is developed and provided solely by the Developer. The Application is not a product of Telegram Messenger LLP, is not endorsed, supported, or affiliated with it legally or organizationally. Functionality requires acceptance of this Terms of Use and the Privacy Policy. +1.12. **Connected Chat** (to the Application) — a Telegram chat to which the Bot has been added with the necessary access rights. Information is only available in the Application from Connected Chats. +1.13. **Use of the Application** — actions performed by the User to view and/or use the available functionality of the Application via reproducible online interfaces on the screen of the User's device. +1.14. **Developer's Representatives** — the circle of persons engaged by the Developer within the framework of development and support of the Application, acting on behalf of and/or as instructed by the Developer. +1.15. **Tariff** (or Subscription Tariffs) — an offer generated by the Developer for the Administrator regarding the use of the Application, which includes, among other things: functionality and the Developer's remuneration for the use of the Application. The description of the Tariff(s) is available on the Website and in the Application. Tariffs may be changed by the Developer no more than once every 30 (thirty) days. If discrepancies arise between the Tariff information on the Website and the information available in the Application, the information in the Application shall prevail. Changes to Tariffs do not apply to periods already paid for by the Administrator. New Tariffs apply only to subsequent payment periods (renewals). -1.3. **Website** — The web platform located at: [https://tgcrew.ru](https://tgcrew.ru), hosting information and documentation about the Application. - -1.4. **Terms of Use** — This document, the current version of which is published on the Website at [https://tgcrew.ru/terms-of-use](https://tgcrew.ru/terms-of-use) and within the Application. In case of discrepancies between the Website and Application versions, the Application version prevails. Contractual relations commence upon acceptance within the Application. - -1.5. **Privacy Policy** — The document governing the collection, storage, and processing of User data (including personal data) entered during registration, application use, or otherwise. It is an integral annex to this Terms of Use. The current version resides at [https://tgcrew.ru/privacy-policy](https://tgcrew.ru/privacy-policy) and within the Application. The Application version prevails in case of discrepancies. Consent under the Privacy Policy is granted within the Application. - -1.6. **Developer** — Individual Entrepreneur Martyshkin Alexey Alexandrovich (IE Martyshkin A.A.), OGRNIP (Primary State Registration Number of Individual Entrepreneur) 318774600262084, TIN (Taxpayer Identification Number) 366316608346 (Russian Federation). - -1.7. **User** — An individual, individual entrepreneur, legal entity, or authorized representative accepting this Terms of Use and Privacy Policy via explicit confirmation within the Application interface. - -1.8. **Administrator** — A User managing the Application via the Admin Panel. - -1.9. **Administrator Account** — The account used by the Administrator to authenticate and access the Admin Panel. - -1.10. **Chat Participant** — A participant in a Connected Chat who may not be an Application User. - -1.11. **Admin Panel** — The Application interface for management functions, including: - - Connecting chats to the Application (see 1.12 – Connected Chat); - - Adding supplementary User information; - - Managing payments to the Developer. - -1.12. **Connected Chat** — A Telegram chat where the Bot has been added with necessary permissions. The Application only processes data from Connected Chats. - -1.13. **Application Use** — Actions performed by the User to view and/or utilize Application functionality via online interfaces rendered on the User’s device. - -1.14. **Developer’s Representatives** — Parties engaged by the Developer for development and support, acting on behalf of the Developer. - -1.15. **Tariff Plan** — The Developer’s offering to the Administrator for Application use, including functionality and remuneration. Tariffs are described on the Website and in the Application. Tariffs may be modified by the Developer no more than once per 3 (three) months. The Application version prevails in case of discrepancies. - -## 2. Subject Matter of the Terms of Use -2.1. This Terms of Use grants the User the right to use the Application under the terms herein. - -2.2. Use within Telegram may require User account registration. +## 2. Subject of the Terms of Use +2.1. These Terms of Use grant the User the right to use the Application under the conditions specified in this document. +2.2. To use the Application in the Telegram messenger (hereinafter - Telegram), the User may be required to register an account. ## 3. User Warranties and Representations -3.1. By accepting these Terms, the User warrants: - 3.1.1. They are at least 18 years old (or the age of majority in their jurisdiction) and capable of fulfilling obligations under these Terms. - 3.1.2. Application use is permitted under their jurisdiction’s laws. If prohibited, use must cease immediately. - 3.1.3. They have read and fully understand these Terms and the Privacy Policy. - 3.1.4. Use will comply with applicable laws. - 3.1.5. They will take reasonable steps to secure their Telegram account. Loss of Administrator Account access requires immediate notification to the Developer at [a-mart@ya.ru](mailto:a-mart@ya.ru) and cooperation to resolve the issue. - 3.1.6. If warranties (3.1.1-3.1.5) are breached, the User must cease use immediately and notify the Developer. The Developer may suspend or terminate access. +3.1. By accepting these Terms of Use, the User warrants that: +3.1.1. The User has reached the age of 18 (as well as the age of majority in their country of residence) and that there are no circumstances preventing the User from fully performing their obligations under these Terms of Use. +3.1.2. The legislation of the User's country of residence permits the use of the Application. In the event of a prohibition, the User is obliged to immediately cease use. +3.1.3. The User has fully read the text of the Terms of Use and the Privacy Policy, understands their terms, and accepts them in full. +3.1.4. The use of the Application will be carried out within the framework of applicable legislation. +3.1.5. The User takes reasonable measures to maintain control over their Telegram account. In case of loss of access to the account used to manage the Application as an Administrator, the User must immediately notify the Developer via email at [support@tgcrew.ru](mailto:support@tgcrew.ru) and cooperate to resolve the situation. +3.1.6. Upon ceasing to meet the warranties (clauses 3.1.1-3.1.5), the User is obliged to immediately stop using the Application and notify the Developer. In this case, the Developer is entitled to suspend or terminate the User's access to the Application (by blocking the Administrator Account). +3.2. The User is not entitled to use the Application if they do not comply with the warranties in clause 3.1. -3.2. Use is prohibited if warranties are not met. +## 4. Acceptance of the Offer +4.1. Evidence of full and unconditional acceptance of the terms of these Terms of Use (acceptance) is the completion of the acceptance procedure by activating (checking) the corresponding interactive element (checkbox) in the Application interface next to the text: "I accept the Terms of Use" on the relevant screens in the Application. +4.2. Use of the Application signifies the User's consent to the collection and processing of information from Connected Chats in accordance with the Privacy Policy. +4.3. All actions performed within the Application's functionality by the User are recognized by the Developer and such User as conclusive actions (conclusive facts) giving rise to corresponding legal consequences. Furthermore, the User agrees that the primary evidence of the performance or non-performance of a certain action using the Application interfaces for the Developer shall be an extract from its database containing information recorded by software logging of the history of actions of such person or other similar methods. In case of a dispute, such information shall be provided in the form chosen by the Developer and shall be recognized as exhaustive evidence of the actions specified in this clause. +4.4. If the User does not agree with the terms of the Terms of Use, they must immediately leave the Application and not start/cease the Use of the Application. -## 4. Acceptance of Offer -4.1. Full acceptance is evidenced by checking "✔ I accept the Terms of Use" within the Application interface. +## 5. Duration of the Terms of Use +5.1. The Terms of Use are valid from the moment of acceptance by the User until the full performance of obligations by the Parties or termination of this agreement. +5.2. Early termination of access to the Application entails the termination of the Terms of Use. -4.2. Use implies consent to data processing from Connected Chats per the Privacy Policy. +## 6. Description of the Application +6.1. The User acknowledges and agrees that the functionality of the Application is provided "AS IS" and "AS AVAILABLE," without any warranties, including warranties regarding commercial value, fitness for a particular purpose, constant availability, etc. The Developer does not guarantee error-free operation of the Application, compliance of its functionality with User expectations, or the absence of defects, viruses, or other harmful components. +6.2. The Application allows the Administrator, using the Admin Panel, to consolidate information from different Telegram chats by adding the Bot to these chats. After adding the Bot (with necessary rights pre-configured in the Application) to a chat, the Bot gains access to all messages in that chat and aggregates the received information into the Application's database. +6.3. Chat Members can, via the Application's graphical interface, track information from these chats, such as: uploaded files, assigned tasks, and scheduled meetings, as well as see the list of connected chats. +6.4. The User can only access information in the Application from those chats of which they are a member and which have been connected to the Application by the Administrator. +6.5. Access of the Bot to messages in a chat is carried out exclusively after its explicit addition to the chat by a member possessing the necessary chat administrator rights in Telegram (chat owner or administrator with appropriate rights) and granting the Bot these chat administrator rights. -4.3. Actions within the Application constitute legally binding conclusive acts. Logs from the Developer’s database serve as primary evidence of such actions in disputes. +## 7. Remuneration Procedure and Methods +7.1. Payment of remuneration to the Developer is made only in the Admin Panel of the Application, according to the Tariff. +7.2. The sole method of paying remuneration to the Developer is the use of Telegram's internal currency (Telegram Stars). +7.3. The Administrator transfers Telegram Stars according to the selected Tariff. +7.4. Refund of Telegram Stars: + - Possible only upon termination of the use of the Application (withdrawal from the Terms of Use). + - Requires notification to the Developer via email at [support@tgcrew.ru](mailto:support@tgcrew.ru) stating the Administrator's Telegram account ID. + - Carried out by the Developer within 30 calendar days from the moment the Developer confirms the possibility and amount of the refund. + - Carried out minus the costs actually incurred by the Developer related to the execution of the Agreement and the processing of the refund (including payment system commissions, transaction costs, and bank fees). The Parties recognize that if the remaining balance is less than 300 (three hundred) Telegram Stars, the amount of actually incurred expenses for processing the refund exceeds the refund amount itself; therefore, the refund of amounts below this threshold is recognized by the Parties as economically impractical and shall not be performed. -4.4. Non-acceptance requires immediate cessation of use. +7.5. Chat Members perform the Use of the Application free of charge. +7.6. Regarding allegedly incorrect or erroneous charges, the Administrator must immediately report to the Developer via email at [support@tgcrew.ru](mailto:support@tgcrew.ru). The Developer undertakes to review the request within a reasonable timeframe, usually not exceeding 10 (ten) business days. +7.7. The Developer does not control and is not responsible for the operation of the Telegram Stars payment system. +7.8. The Developer does not provide fund storage services. Telegram Stars transferred to the Developer are not a bank deposit or other financial instrument and are intended solely for the payment of the Developer's remuneration in accordance with the Tariff. +7.9. Additional information on Tariffs is provided in the document "Provision on Subscription Tariffs," which is an integral part of these Terms of Use. The text of the document can be found on the website [https://tgcrew.ru](https://tgcrew.ru) or in the Application in the Admin Panel (see Settings > Provision on Subscription Tariffs). -## 5. Term -5.1. Effective upon acceptance until obligations are fulfilled or termination occurs. -5.2. Access termination ends these Terms. +## 8. Liability of the Parties +8.1. The Developer is entitled to carry out technical and other works aimed at improving and/or changing the functionality of the Application. During such works, the Application may be fully or partially unavailable. The Developer will, where possible, notify Users of prolonged planned works via the Application and/or the Website at least 24 hours in advance. +8.2. The Developer reserves the right to change, modify, or introduce additional restrictions at its discretion at any time without prior notice, except for changes to Tariffs (clause 1.15) and material changes to the terms of these Terms of Use (clause 13.1). +8.3. The Developer and its Representatives shall not be liable for any damages (direct, indirect, loss of profit) arising in connection with the use of the Application. +8.4. The User is solely responsible for the security and confidentiality of their Telegram account data. All actions performed using the User's account are deemed performed by the User. The User is solely responsible to third parties for all actions performed using the User's account. The Developer is not responsible for the unauthorized use of the User's account by third parties. +8.5. The User is prohibited from: + - decompiling, disassembling, reverse engineering, or reconstructing the source code of the Application or attempting to obtain it by other means; + - creating derivative works based on the Application; + - removing, hiding, or altering the Developer's intellectual property notices in the Application. -## 6. Application Description -6.1. Provided "AS IS" and "AS AVAILABLE". No warranties (fitness, availability, defect-free operation) are provided. -6.2. Allows Administrators via the Admin Panel to consolidate data from Telegram chats by adding the Bot. -6.3. Participants can track chat data (files, tasks, meetings) via the Application. -6.4. Users access data only from their participating Connected Chats. -6.5. Bot access requires explicit addition by a chat admin with appropriate rights. - -## 7. Remuneration Procedure -7.1. Payments are made solely via the Admin Panel per the Tariff Plan. -7.2. Telegram Stars are the exclusive payment method. -7.3. Administrators transfer Stars to the Application’s internal balance. Daily deductions occur per Tariff (~00:00 UTC+3). -7.4. Unused Stars refund: - - Only upon termination of use. - - Requires email notification to [a-mart@ya.ru](mailto:a-mart@ya.ru) with Administrator ID. - - Processed within 30 calendar days post-Developer confirmation. - - Not applicable if balance <100 Stars or technically infeasible. -7.5. Chat Participants use the Application free of charge. -7.6. Suspected incorrect deductions must be reported immediately to [a-mart@ya.ru](mailto:a-mart@ya.ru). Developer will investigate within 10 business days. -7.7. Developer bears no responsibility for Telegram Stars payment system operations. -7.8. Telegram Stars are not stored funds; solely for Developer remuneration. -7.9. Insufficient balance may suspend functionality until replenishment (notification via Bot/email). - -## 8. Liability -8.1. Developer may conduct maintenance, potentially causing downtime. Advance notice (24h+) for extended planned outages. -8.2. Developer may modify/restrict functionality at any time (except Tariffs (1.15) and material Terms changes (13.1)). -8.3. Developer and Representatives bear no liability for losses (direct, indirect, consequential) arising from use. -8.4. User is solely responsible for Telegram account security. Actions under their account are deemed theirs. -8.5. User Prohibitions: - - Reverse engineer, decompile, disassemble the Application. - - Create derivative works. - - Remove/hide Developer’s intellectual property notices. -8.6. No malware introduction, scraping, or unauthorized automated access. -8.7. No unauthorized access attempts or DDoS attacks. Violations result in immediate termination and legal reporting. -8.8. No illegal, obscene, offensive, or rights-infringing use. -8.9. User responsible for own IT setup. -8.10. Developer may suspend/terminate access for suspected Terms breaches or reputational harm. -8.11. Access may be terminated for Privacy Policy or legal violations. -8.12. For terminations under 8.10-8.11, Developer may retain unused Stars as penalty/compensation if permitted by Russian law. -8.13. Developer not liable for content processed/displayed via the Application or User actions in chats. Users bear content legality responsibility. -8.14. Developer may terminate the Application entirely, notifying Administrators 30+ days in advance. Unused Stars will be refunded per 7.4. +8.6. The User shall not abuse the Application by intentionally introducing viruses, trojans, worms, logic bombs, or other malicious or technologically harmful material. The User shall not use any kind of robots, spiders, automated information gathering (page scraping), or other automatic devices, algorithms, methodologies, or similar manual processes to copy, monitor, obtain, or access any part of the Application, or to attempt to obtain any information or materials by any means not deliberately made available through the Application. +8.7. The User shall not attempt to gain unauthorized access to any part or feature of the Application or computing devices (servers) where the Application is stored. The User must not attack the Application via a denial-of-service attack or a distributed denial-of-service attack. The Developer has the right to report any such breach to the relevant law enforcement authorities and will cooperate with those authorities by disclosing the identity of the User to them. In the event of such a breach, the User's right to use the Application will cease immediately. +8.8. The User may not use the Application for any purposes prohibited by these Terms of Use, or which are illegal, indecent, or offensive, or to induce the performance of any activity that violates the rights of any third parties or any illegal activity. +8.9. The User is responsible for configuring their information technology, computer programs, and platform to access the Application. +8.10. The Developer is entitled to suspend or terminate the User's access to the Use of the Application if the Developer has reason to believe that the use of the Application is or will be carried out by the User in violation of these Terms of Use, or if the User, at the Developer's discretion, performs actions that cause or may cause damage to the Developer's reputation or the security of the Application. +8.11. The Developer has the right to terminate access to the Application upon violation of the Privacy Policy or legislation. +8.12. In the event of termination of the User's access to the Application on the grounds specified in clauses 8.10 and 8.11, the Developer is entitled to withhold the unused balance of Telegram Stars as a penalty or compensation for damages, if the User's violation caused losses to the Developer and this is provided for by applicable law. +8.13. The Developer is not responsible for the content (messages, files, data) processed, transmitted, or displayed through the Application, nor for the actions of Users in connected chats. The Developer does not carry out pre-moderation, content analysis, storage, or modification of information provided by the User, including the Administrator. Responsibility for the content of posted files, compliance with copyrights, and information protection legislation during their upload to the chat lies entirely with the User who uploaded the file and the Chat Administrator. +8.14. The Developer reserves the right to cease providing access to the Application to all Users, or to completely shut down the Application or its significant functions, by notifying all Administrators at least 30 (thirty) calendar days in advance via the Application, the Bot, and/or by email to the address associated with their Administrator Account. In this case, Administrators will receive a refund of the unspent Telegram Stars balance in accordance with clause 7.4. +8.15. When using the functionality of connecting third-party cloud storages (Yandex Disk or Google Drive), the Administrator understands and agrees that: + - The Developer does not control the performance, limits, and security policies of these services. + - Loss of access to cloud storage, deletion of files by the service provider, or failures in the API of a third-party service are not the responsibility of the Developer. + - Any disputes related to access to files in third-party storages are resolved by the Administrator directly with the corresponding storage service provider. + - The Administrator independently bears the risks associated with cross-border data transfer or violation of the terms of use of third-party services. + - The Administrator is independently responsible for the safety of authorization data used for integration with third-party cloud storages. ## 9. Intellectual Property -9.1. Developer grants a limited, non-exclusive, non-transferable, revocable license to use the Application. All rights not expressly granted are reserved. License terminates automatically upon Terms termination. -9.2. Global intellectual property rights belong solely to the Developer. Rights are licensed, not sold. +9.1. Subject to the User's compliance with the Terms of Use, the Developer grants the User a limited, non-exclusive, non-sublicensable, revocable, non-transferable license to access the Application. Any rights not expressly granted in this section are reserved by the Developer. The license terminates automatically without notice upon termination of these Terms of Use. +9.2. All intellectual property rights in the Application throughout the world belong to the Developer, and the rights to the Application are licensed (not sold) to the User. The User has no intellectual property rights in or to the Application, except for the right to use them in accordance with these Terms of Use. ## 10. Force Majeure -10.1. Parties exempt from liability for force majeure (natural disasters, war, government actions, telecom failures, etc.). -10.2. Performance deadlines extended for the force majeure duration (max 30 calendar days). -10.3. Force majeure exceeding 30 days triggers negotiations for alternatives or termination without damages. +10.1. The Parties are released from liability upon the occurrence of force majeure circumstances (natural disasters, wars, government decisions, telecommunications failures, etc.). +10.2. The deadline for fulfilling obligations is postponed for the duration of the force majeure, but for no more than 30 (thirty) calendar days. +10.3. In case of force majeure lasting more than 30 days, the Parties shall hold negotiations on alternative solutions or termination of the Terms of Use without compensation for damages. ## 11. Severability -11.1. Invalidity of any provision does not affect the validity of others. Invalid provisions shall be replaced by valid ones reflecting the original intent as closely as possible. -11.2. Invalidity does not affect Sections 7 (Remuneration), 9 (IP), 12 (Governing Law), 15.4 (Indemnification), and 15.6 (No Waiver). +11.1. The User and the Developer agree that if any part of these Terms of Use or the Privacy Policy is found by a competent court to be invalid or unenforceable, in whole or in part, then only such part of these Terms of Use or the Privacy Policy that is declared invalid or unenforceable will be considered invalid in that jurisdiction, and only to the extent it was found so, and this will not affect the validity or enforceability in any aspect and in any jurisdiction of other parts of these Terms of Use or the Privacy Policy, which remain in full force and effect. In such cases, such invalid provisions shall be replaced by provisions as close as possible in meaning to the original ones that will be recognized as valid in the relevant jurisdiction and shall apply in modified form (including to already established legal relationships). +11.2. The invalidity or unenforceability of any provision shall not affect the validity or enforceability of the provisions of Sections 7 (Remuneration Procedure and Methods), 9 (Intellectual Property), 12 (Governing Law and Dispute Resolution), 15.4 (Indemnification), and 15.6 (No Waiver). ## 12. Governing Law and Dispute Resolution -12.1. Governed by and construed under the laws of the Russian Federation. Unforeseen matters resolved under Russian law. -12.2. Disputes resolved via negotiation/email (mandatory pre-trial claim procedure). Unresolved disputes after 30 calendar days subject to litigation in Moscow, Russia. +12.1. These Terms of Use are governed by and construed in accordance with the laws of the Russian Federation. Matters not regulated by the Terms of Use shall be resolved in accordance with the laws of the Russian Federation. +12.2. All disputes between the Parties under these Terms of Use shall be resolved through correspondence and negotiations using a mandatory pre-trial (claim) procedure. In the event of inability to reach an agreement between the Parties through negotiations within 30 (thirty) calendar days from the receipt by the other Party of a written claim sent in accordance with clause 15.2 of these Terms of Use, the dispute shall be submitted by any interested Party to the court at the Developer's location (Russian Federation, Moscow) in accordance with the rules of jurisdiction established by the Civil Procedure Code of the RF or the Arbitration Procedure Code of the RF. -## 13. Amendments -13.1. Developer may amend these Terms by publishing the revised version on the Website/Application. Changes effective the day after publication. User must review amendments regularly. -13.2. User may reject amendments, implying cessation of use. +## 13. Amendment Procedure +13.1. These Terms of Use (including appendices) may be amended by the Developer with notification to the User by posting a new version of the amended Terms of Use on the Website or in the Application. The amendments made by the Developer to the Terms of Use enter into force on the day following the day of publication of such changes on the Website or in the Application (whichever occurs earlier). The User undertakes to independently check these Terms of Use for any amendments. The User's failure to read the changes cannot serve as a basis for the User's failure to perform their obligations and non-compliance with the restrictions established by these Terms of Use. The Developer recommends that Users regularly familiarize themselves with the current version of the Terms of Use. +13.2. The User is entitled to refuse to accept changes and additions to these Terms of Use, which means the User's refusal to use all rights previously granted to them. -## 14. Assignment -14.1. Developer may assign rights/obligations without User consent. User may not assign without Developer’s prior written consent. -14.2. Developer’s assignment does not release it from pre-assignment liabilities unless otherwise agreed or required by law. +## 14. Assignment of Rights (Claims) +14.1. The Developer may assign or transfer rights under these Terms of Use and/or the Privacy Policy in whole or in part to any natural or legal person at any time with or without the User's consent. The User is not entitled to assign or transfer any rights and obligations arising from the Terms of Use or the Privacy Policy without the Developer's prior written consent, and any assignment or transfer of rights performed by the User without such consent shall be invalid. +14.2. The Developer's assignment of rights under this Agreement to a third party does not release the Developer from liability to the User for the performance of obligations under this Agreement that arose prior to the moment of assignment, unless otherwise agreed with the User or provided for by law. ## 15. Final Provisions -15.1. Russian language version prevails over translations. -15.2. Notices to Developer: [a-mart@ya.ru](mailto:a-mart@ya.ru) or methods specified in App/Website. Developer notices deemed received 1 day after publishing/sending. -15.3. Personal data processed per the Privacy Policy (integral annex). -15.4. User indemnifies Developer for losses (including legal costs) arising from User’s breach of Terms, law, or third-party rights. -15.5. Entire Terms supersedes prior arrangements. -15.6. Developer’s inaction on breach does not waive future rights. -15.7. No agency, partnership, joint venture, or franchise relationship created. -15.8. Compatibility with all devices/OS/Telegram versions not guaranteed. +15.1. These Terms of Use are drafted in Russian. In case of contradictions between the Russian version and any translations, the Russian version shall prevail. +15.2. All notices, requests, and claims in connection with these Terms of Use or the use of the Application shall be sent by the User to the Developer via email at [support@tgcrew.ru](mailto:support@tgcrew.ru) or by other means explicitly indicated by the Developer in the Application or on the Website. The Developer's notices to the User are considered properly sent if they are posted in the Application and/or on the Website and/or sent to the contact email address (if any) associated with the Administrator's account in Telegram and are considered received by the User on the day following their posting/sending. +15.3. The Developer processes User personal data exclusively in the manner and for the purposes defined by the Privacy Policy, which is an integral part of these Terms of Use. +15.4. The User undertakes to indemnify the Developer for any damages (including court costs and reasonable legal fees) incurred by the Developer in connection with the User's violation of these Terms of Use, the law, or the rights of third parties when using the Application, including damages resulting from the User's violation of third-party rights (including intellectual property rights and privacy rights) when using the Application. +15.5. These Terms of Use constitute the entire agreement between the User and the Developer regarding the use of the Application and supersede all previous oral or written arrangements and understandings between the Parties on this subject (if any). +15.6. Failure by the Developer to act in the event of a breach by the User of the provisions of these Terms of Use does not deprive the Developer of the right to take appropriate actions to protect its interests in the future, nor does it constitute a waiver of its rights in the event of subsequent similar or analogous breaches. +15.7. These Terms of Use do not create any agency, partnership, joint venture, or franchise relationship between the User and the Developer. +15.8. The Developer does not guarantee the compatibility of the Application with all devices, operating systems, and versions of the Telegram messenger. -## 16. Developer Contact & Details -**Individual Entrepreneur Martyshkin Alexey Alexandrovich** -Legal Address: 111394, Russian Federation, Moscow, Perovskaya St., 66, Bldg. 3, Apt. 187 -OGRNIP 318774600262084 -TIN 366316608346 -Phone: +7 (926) 339-04-25 -Email: [a-mart@ya.ru](mailto:a-mart@ya.ru) \ No newline at end of file +## 16. Developer Contact Information and Details +Individual Entrepreneur Martyshkin Alexey Alexandrovich +Legal Address: 111394, Russian Federation, Moscow, Perovskaya Street, House 66, Building 3, Apartment 187 +OGRNIP 318774600262084 +INN 366316608346 +Phone: +7 (916) 439-04-25 +Email: [info@tgcrew.ru](mailto:info@tgcrew.ru) \ No newline at end of file diff --git a/src/assets/docs/Terms_of_use_ru.md b/src/assets/docs/Terms_of_use_ru.md index 4dd0071..b67e8e8 100644 --- a/src/assets/docs/Terms_of_use_ru.md +++ b/src/assets/docs/Terms_of_use_ru.md @@ -1,197 +1,141 @@ -# Пользовательское соглашение -###### Версия 1.01 от 15.08.2025 - +###### Версия 1.04 от 15.03.2026 Текст настоящего Пользовательского соглашения является публичной офертой ИП Мартышкин А.А. и адресован любому физическому лицу, индивидуальному предпринимателю и (или) юридическому лицу на изложенных в нём условиях. +Актуальные версии Пользовательского соглашения и Политики конфиденциальности доступны внутри интерфейса Приложения. Информация, размещенная на Сайте, носит справочный характер. В случае расхождений между текстом на Сайте и в Приложении, юридическую силу имеет версия, размещенная в Приложении. + ## 1. Термины и определения 1.1. **Бот** -- аккаунт с именем @tgCrewBot и адресом [https://t.me/tgCrewBot](https://t.me/tgCrewBot) в мессенджере Telegram, управляемый программно Разработчиком через API (Application Programming Interface, программный интерфейс приложений). Бот предоставляет доступ к Приложению и может использоваться для базового взаимодействия из текстовой строки (inline-mode). - 1.2. **Приложение** -- мини-приложение tgCrew, работающее в среде мессенджера Telegram как часть экосистемы Telegram Mini Apps (TMA) и доступное через взаимодействие с Ботом. Хотя Приложение использует платформу Telegram для своего функционирования и распространения, оно разработано и предоставляется исключительно Разработчиком. Приложение не является продуктом компании-разработчика мессенджера Telegram, не поддерживается ею, не одобрено ею и никак не связано с ней юридически или организационно. Функционал Приложения доступен только после принятия Пользовательского соглашения и Политики конфиденциальности. - 1.3. **Сайт** -- веб-сайт, расположенный по адресу: [https://tgcrew.ru](https://tgcrew.ru), на котором размещается информация о Приложении и его документация. - -1.4. **Пользовательское соглашение** -- настоящий документ, актуальная (текущая) версия которого размещается на Сайте по ссылке [https://tgcrew.ru/terms-of-use](https://tgcrew.ru/terms-of-use), а также в Приложении. Если между текстом Пользовательского соглашения, размещенным на Сайте, и текстом, доступным в Приложении, возникают расхождения, то приоритет имеет текст, доступный в Приложении. Договорные отношения между Разработчиком и Пользователем возникают только после принятия Пользовательского соглашения внутри Приложения. - -1.5. **Политика конфиденциальности** -- документ, регулирующий порядок сбора, хранения и обработки данных (в том числе персональных) Пользователя, введенных им в ходе процедуры регистрации, использования Приложения, а также иных данных. Является неотъемлемым приложением к Пользовательскому соглашению. Актуальная (текущая) версия Политики конфиденциальности размещается на Сайте по ссылке [https://tgcrew.ru/privacy-policy](https://tgcrew.ru/privacy-policy), а также в Приложении. Если между информацией о Политике конфиденциальности, размещенной на Сайте, и информацией, доступной в Приложении, возникают расхождения, то приоритет имеет информация, доступная в Приложении. Согласие на обработку данных в рамках Политики конфиденциальности предоставляется Пользователем внутри Приложения. - +1.4. **Пользовательское соглашение** -- настоящий документ, актуальная (текущая) версия которого размещается в Приложении и на Сайте по ссылке [https://tgcrew.ru/terms-of-use](https://tgcrew.ru/terms-of-use). Договорные отношения между Разработчиком и Пользователем возникают только после принятия Пользовательского соглашения внутри Приложения. +1.5. **Политика конфиденциальности** -- документ, регулирующий порядок сбора, хранения и обработки данных (в том числе персональных) Пользователя, введенных им в ходе процедуры регистрации, использования Приложения, а также иных данных. Является неотъемлемым приложением к Пользовательскому соглашению. Актуальная (текущая) версия Политики конфиденциальности размещается в Приложении и на Сайте по ссылке [https://tgcrew.ru/privacy-policy](https://tgcrew.ru/privacy-policy). Согласие на обработку данных в рамках Политики конфиденциальности предоставляется Пользователем внутри Приложения. 1.6. **Разработчик** -- индивидуальный предприниматель Мартышкин Алексей Александрович (ИП Мартышкин А.А.), ОГРНИП 318774600262084, ИНН 366316608346 (Российская Федерация). - 1.7. **Пользователь** -- физическое лицо, индивидуальный предприниматель, юридическое лицо или их уполномоченный представитель, принявшее условия Пользовательского соглашения и Политики конфиденциальности путем их явного подтверждения внутри интерфейса Приложения. - 1.8. **Администратор** -- Пользователь Приложения, который осуществляет его управление Приложением с помощью Панели администратора. - 1.9. **Учетная запись Администратора** - учетная запись, с помощью которой Администратор осуществляет аутентификацию для доступа к Панели администратора. - 1.10. **Участник чата** -- участник Подключенного чата, который может не являться Пользователем Приложения. - 1.11. **Панель администратора** -- интерфейс Приложения для управления Приложением, в том числе осуществления следующих функций: - подключение чатов к Приложению (см. п. 1.12 – Подключенный чат); - внесение дополнительных информационных данных для Пользователей; - контроль и осуществление выплат вознаграждения Разработчику за использование Приложения. 1.12. **Подключенный чат** (к Приложению) -- чат в Telegram, в который добавлен Бот с необходимыми правами доступа. В Приложении доступна информация только из Подключенных чатов. - 1.13. **Использование Приложения** -- совершение Пользователем действий по просмотру и (или) использованию доступного функционала Приложения посредством воспроизводимых онлайн-интерфейсов на экране устройства Пользователя. - 1.14. **Представители Разработчика** -- круг лиц, привлекаемых Разработчиком в рамках разработки и поддержки Приложения, действующие от имени и (или) по поручению Разработчика. - -1.15. **Тариф** -- предложение, сформированное Разработчиком для Администратора по использованию Приложения, которое включает, в том числе: функциональность и вознаграждение Разработчика за использование Приложения. Описание Тарифа/Тарифов доступны на Сайте и в Приложении. Тарифы могут изменяться Разработчиком не чаще одного раза в 3 (Три) месяца. Если между информацией о Тарифе/Тарифах, размещенной на Сайте, и информацией, доступной в Приложении, возникают расхождения, то приоритет имеет информация, доступная в Приложении. +1.15. **Тариф** (или Тарифные планы) -- предложение, сформированное Разработчиком для Администратора по использованию Приложения, которое включает, в том числе: функциональность и вознаграждение Разработчика за использование Приложения. Описание Тарифа/Тарифов доступно на Сайте и в Приложении. Тарифы могут изменяться Разработчиком не чаще одного раза в 30 (Тридцать) дней. Если между информацией о Тарифе/Тарифах, размещенной на Сайте, и информацией, доступной в Приложении, возникают расхождения, то приоритет имеет информация, доступная в Приложении. Изменение Тарифов не распространяется на уже оплаченный Администратором период использования Приложения. Новые Тарифы применяются только к последующим периодам оплаты (продлениям доступа). ## 2. Предмет Пользовательского соглашения 2.1. Настоящее Пользовательское соглашение предоставляет Пользователю право использовать Приложение на условиях, определенных в данном документе. - 2.2. Для использования Приложения в мессенджере Telegram (далее - Telegram) от Пользователя может потребоваться регистрация учетной записи. ## 3. Гарантии и заверения Пользователя 3.1. Принимая данное Пользовательское соглашение, Пользователь гарантирует: - -3.1.1. Достиг возраста 18 лет (а также возраста совершеннолетия в своей стране проживания) и что не существует обстоятельств, препятствующих Пользователю в полном объеме исполнять свои обязательства по данному Пользовательскому соглашению. - +3.1.1. Пользователь достиг возраста 18 лет (а также возраста совершеннолетия в своей стране проживания) и что не существует обстоятельств, препятствующих Пользователю в полном объеме исполнять свои обязательства по данному Пользовательскому соглашению. 3.1.2. Законодательство страны проживания Пользователя разрешает использование Приложения. В случае запрета Пользователь обязан немедленно прекратить использование. - 3.1.3. Полностью ознакомился с текстом Пользовательского соглашения и Политикой конфиденциальности, понимает их условия и принимает их в полном объеме. - 3.1.4. Использование Приложения будет осуществляться в рамках применимого законодательства. - -3.1.5. Пользователь принимает разумные меры для сохранения контроля над своей учетной записью Telegram. В случае утраты доступа к учетной записи, используемой для управления Приложением в роли Администратора, Пользователь обязан незамедлительно уведомить Разработчика по электронной почте [a-mart@ya.ru](mailto:a-mart@ya.ru) и сотрудничать для разрешения ситуации. - +3.1.5. Пользователь принимает разумные меры для сохранения контроля над своей учетной записью Telegram. В случае утраты доступа к учетной записи, используемой для управления Приложением в роли Администратора, Пользователь обязан незамедлительно уведомить Разработчика по электронной почте [support@tgcrew.ru](mailto:support@tgcrew.ru) и сотрудничать для разрешения ситуации. 3.1.6. При прекращении соответствия гарантиям (пп. 3.1.1-3.1.5) Пользователь обязан немедленно прекратить использование Приложения и уведомить Разработчика. В этом случае Разработчик вправе приостановить или прекратить доступ Пользователя к Приложению (путем блокировки Учетной записи Администратора). - 3.2. Пользователь не вправе использовать Приложение, если не соответствует гарантиям в п. 3.1. ## 4. Прием оферты -4.1. Свидетельством полного и безоговорочного принятия условий настоящего Пользовательского соглашения (акцептом), является осуществление процедуры принятия Пользовательского соглашения путем проставления символа «V» (галочки) в чек-боксе интерфейса Приложения рядом с текстом: «Я принимаю Пользовательское соглашение» на соответствующих экранах в Приложении. - +4.1. Свидетельством полного и безоговорочного принятия условий настоящего Пользовательского соглашения (акцептом), является осуществление процедуры принятия Пользовательского соглашения путем активации (проставления отметки) в соответствующем интерактивном элементе (поле для отметки) интерфейса Приложения рядом с текстом: «Я принимаю Пользовательское соглашение» на соответствующих экранах в Приложении. 4.2. Использование Приложения означает согласие Пользователя на сбор и обработку информации из Подключенных чатов в соответствии с Политикой конфиденциальности. - -4.3. Все действия, совершенные в рамках функциональности Приложения Пользователем, признаются Разработчиком и таким Пользователем как конклюдентные действия, порождающие соответствующие юридические последствия. При этом Пользователь соглашается с тем, что основным доказательством совершения или несовершения определенного действия с использованием интерфейсов Приложения может служить для Разработчика предоставление выписки из своей базы данных о наличии информации, зафиксированной путем логирования (сохранения истории) действий такого лица (или иным аналогичным способом). В случае спора такая информация предоставляется в выбранной Разработчиком форме и признается исчерпывающим доказательством действий, указанных в настоящем пункте. - +4.3. Все действия, совершенные в рамках функциональности Приложения Пользователем, признаются Разработчиком и таким Пользователем как конклюдентные действия, порождающие соответствующие юридические последствия. При этом Пользователь соглашается с тем, что основным доказательством совершения или несовершения определенного действия с использованием интерфейсов Приложения может служить для Разработчика предоставление выписки из своей базы данных о наличии информации, зафиксированной путем программной фиксации (записи) истории действий такого лица или иным аналогичным способом. В случае спора такая информация предоставляется в выбранной Разработчиком форме и признается исчерпывающим доказательством действий, указанных в настоящем пункте. 4.4. В случае, если Пользователь не согласен с условиями Пользовательского соглашения, он обязан немедленно покинуть Приложение и не начинать/прекратить Использование Приложения. ## 5. Срок действия Пользовательского соглашения 5.1. Пользовательское соглашение действует с момента акцепта Пользователем до полного исполнения обязательств Сторонами или прекращения этого соглашения. - 5.2. Досрочное прекращение доступа к Приложению влечет прекращение действия Пользовательского соглашения. ## 6. Описание Приложения 6.1. Пользователь признает и соглашается с тем, что функциональность Приложения предоставляется "КАК ЕСТЬ" и "ПО МЕРЕ ДОСТУПНОСТИ" ("AS IS" и "AS AVAILABLE"), без каких-либо гарантий, включая гарантии в отношении коммерческой ценности, пригодности для конкретных целей, постоянной доступности и т.п. Разработчик не гарантирует безошибочную работу Приложения, соответствие его функциональности ожиданиям Пользователя, а также отсутствие дефектов, вирусов или иных вредоносных компонентов. - 6.2. Приложение позволяет Администратору с помощью Панели администратора объединять информацию из разных чатов Telegram путем добавления Бота в эти чаты. После добавления Бота (с предварительно настроенными в Приложении необходимыми правами) в чат, Бот получает доступ ко всем сообщениям в этом чате и сводит полученную информацию в базу данных Приложения. - 6.3. Участники Подключенных чатов могут с помощью графического интерфейса Приложения отслеживать информацию из этих чатов, такую как: загруженные файлы, поставленные задачи и назначенные совещания, а также видеть перечень подключенных чатов. - 6.4. Пользователю в Приложении доступна информация только из тех чатов, участником которых он является и которые были подключены к Приложению Администратором. - 6.5. Доступ Бота к сообщениям в чате осуществляется исключительно после его явного добавления в чат участником, обладающим необходимыми правами администратора чата в Telegram (владелец чата или администратор с соответствующими правами), и предоставления Боту этих прав администратора чата. ## 7. Порядок и способы выплаты вознаграждения 7.1. Выплата вознаграждения Разработчику производится только в Панели администратора Приложения, согласно Тарифу. - 7.2. Единственным способом выплаты вознаграждения Разработчику является использование внутренней валюты Telegram (Telegram Stars). - -7.3. Администратор перечисляет (переводит) Telegram Stars на внутренний баланс в Приложении, откуда происходит выплата (списание) вознаграждения Разработчику на ежедневной основе, согласно Тарифу (ориентировочное время списания 00:00 UTC +3:00, Европа/Москва). - -7.4. Возврат неизрасходованных Telegram Stars с баланса Приложения: +7.3. Администратор перечисляет (переводит) Telegram Stars согласно выбранному Тарифу. +7.4. Возврат Telegram Stars: - Возможен только при прекращении использования Приложения (отказ от Пользовательского соглашения). - - Требует уведомления Разработчика по электронной почте [a-mart@ya.ru](mailto:a-mart@ya.ru) с указанием идентификатора учетной записи Telegram Администратора. + - Требует уведомления Разработчика по электронной почте [support@tgcrew.ru](mailto:support@tgcrew.ru) с указанием идентификатора учетной записи Telegram Администратора. - Осуществляется Разработчиком в течение 30 календарных дней с момента подтверждения Разработчиком возможности и размера возврата. - - Не производится, если остаток менее 100 Telegram Stars или возврат технически невозможен со стороны платежной системы Telegram. + - Осуществляется за вычетом фактически понесенных Разработчиком расходов, связанных с исполнением Соглашения и осуществлением возврата (включая комиссии платежных систем, транзакционные издержки и банковские комиссии). Стороны признают, что при сумме остатка менее 300 (Трёхсот) Telegram Stars размер фактически понесенных расходов на обработку возврата превышает сумму самого возврата, в связи с чем возврат сумм менее указанного порога признается Сторонами экономически нецелесообразным и не производится. 7.5. Участники чата осуществляют Использование Приложения – бесплатно. - -7.6. По вопросам предположительно некорректных или ошибочных списаний Администратор должен незамедлительно сообщить Разработчику по электронной почте [a-mart@ya.ru](mailto:a-mart@ya.ru). Разработчик обязуется рассмотреть обращение в разумный срок, обычно не превышающий 10 (Десять) рабочих дней. - +7.6. По вопросам предположительно некорректных или ошибочных списаний Администратор должен незамедлительно сообщить Разработчику по электронной почте [support@tgcrew.ru](mailto:support@tgcrew.ru). Разработчик обязуется рассмотреть обращение в разумный срок, обычно не превышающий 10 (Десять) рабочих дней. 7.7. Разработчик не контролирует и не несет ответственности за работу платежной системы Telegram Stars. - -7.8. Разработчик не предоставляет услуги хранения средств. Telegram Stars, переведенные на баланс Приложения, не являются банковским вкладом или иным финансовым инструментом и предназначены исключительно для оплаты вознаграждения Разработчику в соответствии с Тарифом. - -7.9. В случае недостаточного баланса Telegram Stars на счету Администратора в Приложении для ежедневного списания, функционал Приложения может быть частично приостановлен до пополнения баланса. Администратор будет уведомлен о необходимости пополнения баланса через сообщение от Бота или по электронной почте (в зависимости от способа аутентификации). +7.8. Разработчик не предоставляет услуги хранения средств. Telegram Stars, переведенные Разработчику, не являются банковским вкладом или иным финансовым инструментом и предназначены исключительно для оплаты вознаграждения Разработчику в соответствии с Тарифом. +7.9. Дополнительная информация о Тарифах приведена в документе «Положение о Тарифных планах подписки», которое является неотъемлемой частью настоящего Пользовательского соглашения. С текстом документа можно ознакомиться на сайте [https://tgcrew.ru](https://tgcrew.ru) или в Приложении в Панели администратора (см. раздел Настройки > Положение о Тарифных планах подписки). ## 8. Ответственность сторон 8.1. Разработчик вправе проводить технические и иные работы, направленные на улучшение и (или) изменение функциональности Приложения. В период проведения таких работ Приложение может быть недоступно полностью или частично. Разработчик по возможности будет уведомлять Пользователей о длительных плановых работах через Приложение и (или) Сайт не менее чем за 24 часа. - -8.2. Разработчик оставляет за собой право изменять, модифицировать или вводить дополнительные ограничения по своему усмотрению в любое время без предварительного уведомления, за исключением изменений Тарифов (п. 1.1) и существенных изменений условий настоящего Пользовательского соглашения (п. 13.1). - +8.2. Разработчик оставляет за собой право изменять, модифицировать или вводить дополнительные ограничения по своему усмотрению в любое время без предварительного уведомления, за исключением изменений Тарифов (п.1.15) и существенных изменений условий настоящего Пользовательского соглашения (п. 13.1). 8.3. Разработчик и его Представители не несут ответственности за любые убытки (прямые, косвенные, упущенная выгода), возникшие в связи с использованием Приложения. - 8.4. Пользователь самостоятельно несет ответственность за сохранность и конфиденциальность данных своей учетной записи в Telegram. Все действия, осуществленные с использованием учетной записи Пользователя, считаются осуществленными Пользователем. Пользователь самостоятельно несет ответственность перед третьими лицами за все действия, совершенные с использованием учетной записи Пользователя. Разработчик не несет ответственности за несанкционированное использование учетной записи Пользователя третьими лицами. - -8.5. Пользователю запрещается: - - декомпилировать, дизассемблировать, осуществлять реверс-инжиниринг, реконструировать исходный код Приложения или пытаться получить его иными способами; +8.5. Пользователю запрещается: + - декомпилировать, дизассемблировать, осуществлять обратное проектирование (реверс-инжиниринг), реконструировать исходный код Приложения или пытаться получить его иными способами; - создавать производные работы на основе Приложения; - удалять, скрывать или изменять уведомления об интеллектуальной собственности Разработчика в Приложении. -8.6. Пользователь не должен злоупотреблять Приложением путем умышленного внедрения вирусов, троянов, червей, логических бомб или иного вредоносного или технологически опасного материала. Пользователь не должен использовать любого рода роботов, пауков (spider), скрапинг страниц или иные автоматические устройства, алгоритмы, методологии или аналогичные ручные процессы для копирования, мониторинга, получения или доступа к любой части Приложения, для попытки получения любой информации или материалов любыми средствами, которые специально не доступны через Приложение. - +8.6. Пользователь не должен злоупотреблять Приложением путем умышленного внедрения вирусов, троянов, червей, логических бомб или иного вредоносного или технологически опасного материала. Пользователь не должен использовать любого рода роботов, пауков (spider), автоматизированный сбор информации (скрапинг страниц) или иные автоматические устройства, алгоритмы, методологии или аналогичные ручные процессы для копирования, мониторинга, получения или доступа к любой части Приложения, для попытки получения любой информации или материалов любыми средствами, которые специально не доступны через Приложение. 8.7. Пользователь не должен пытаться получить несанкционированный доступ к любой части или функции Приложения, вычислительным устройствам (серверам), на которых хранится Приложение. Пользователь не должен атаковать Приложение посредством атаки типа "отказ в обслуживании" (denial-of-service) или распределенной атаки типа "отказ в обслуживании" (distributed denial-of-service attack). Разработчик имеет право сообщить о любом таком нарушении в соответствующие правоохранительные органы и будет сотрудничать с этими органами, раскрывая им личность Пользователя. В случае такого нарушения право Пользователя на использование Приложения немедленно прекращается. - 8.8. Пользователь не может использовать Приложение для любых целей, запрещенных настоящим Пользовательским соглашением, или которые являются незаконными, неприличными или оскорбительными, или для побуждения к совершению любой деятельности, нарушающей права любых третьих лиц, или любой незаконной деятельности. - -8.9. Пользователь несет ответственность за настройку своих информационных технологий, компьютерных программ и платформы для доступа к Приложению. - +8.9. Пользователь несет ответственность за настройку своих информационных технологий, компьютерных программ и платформы для доступа к Приложению. 8.10. Разработчик вправе приостановить или досрочно прекратить доступ Пользователя к Использованию Приложения, если у Разработчика есть основания полагать, что использование Приложения осуществляется или будет осуществляться Пользователем с нарушением настоящего Пользовательского соглашения, или Пользователь, по усмотрению Разработчика, совершает действия, наносящие или могущие нанести ущерб репутации Разработчика или безопасности Приложения. - 8.11. Разработчик имеет право прекратить доступ к Приложению при нарушении Политики конфиденциальности или законодательства. - 8.12. В случае прекращения доступа Пользователя к Приложению по основаниям, указанным в пп. 8.10 и 8.11, Разработчик вправе удержать неиспользованный остаток Telegram Stars на балансе в качестве штрафной санкции или компенсации ущерба, если нарушение Пользователя повлекло убытки для Разработчика и это предусмотрено применимым законодательством. - -8.13. Разработчик не несет ответственности за контент (сообщения, файлы, данные), обрабатываемый, передаваемый или отображаемый через Приложение, а также за действия Пользователей в подключенных чатах. Ответственность за законность контента и соответствие его правилам Telegram возлагается на Пользователей. - +8.13. Разработчик не несет ответственности за контент (сообщения, файлы, данные), обрабатываемый, передаваемый или отображаемый через Приложение, а также за действия Пользователей в подключенных чатах. Разработчик не осуществляет премодерацию, анализ содержимого, хранение или изменение информации, предоставляемой Пользователем, в том числе Администратором. Ответственность за содержание размещаемых файлов, соблюдение авторских прав и законодательства о защите информации при их загрузке в чат целиком лежит на Пользователе, загрузившем файл, и Администраторе чата. 8.14. Разработчик оставляет за собой право прекратить предоставление доступа к Приложению всем Пользователям, полностью прекратить работу Приложения или его существенных функций, уведомив об этом всех Администраторов не менее чем за 30 (Тридцать) календарных дней через Приложение, Бота и (или) по электронной почте на адрес, связанный с их Учетной записью Администратора. В этом случае Администраторам будет произведен возврат неизрасходованного остатка Telegram Stars в соответствии с п. 7.4. +8.15. При использовании функционала подключения сторонних облачных хранилищ (Яндекс Диск или Google Drive), Администратор понимает и соглашается, что: + - Разработчик не контролирует работоспособность, лимиты и политику безопасности данных сервисов. + - Утрата доступа к облачному хранилищу, удаление файлов провайдером сервиса или сбои в API стороннего сервиса не являются зоной ответственности Разработчика. + - Любые споры, связанные с доступом к файлам в сторонних хранилищах, решаются Администратором напрямую с соответствующим провайдером сервиса хранения. + - Администратор самостоятельно несет риски, связанные с трансграничной передачей данных или нарушением условий использования сторонних сервисов. + - Администратор самостоятельно несет ответственность за сохранность авторизационных данных, используемых для интеграции со сторонними облачными хранилищами. ## 9. Интеллектуальная собственность 9.1. При условии соблюдения Пользователем Пользовательского соглашения, Разработчик предоставляет Пользователю ограниченную, неисключительную, непередаваемую по сублицензии, отзывную, не подлежащую передаче лицензию на доступ к Приложению. Любые права, прямо не предоставленные в данном разделе, сохраняются за Разработчиком. Лицензия автоматически прекращается без уведомления при прекращении действия настоящего Пользовательского соглашения. - 9.2. Все права на интеллектуальную собственность в отношении Приложения по всему миру принадлежат Разработчику, и права на Приложение лицензированы (не проданы) Пользователю. Пользователь не имеет никаких прав на интеллектуальную собственность в отношении Приложения или на них, за исключением права использовать их в соответствии с настоящим Пользовательским соглашением. ## 10. Обстоятельства непреодолимой силы (форс-мажор) 10.1. Стороны освобождаются от ответственности при наступлении обстоятельств непреодолимой силы (стихийные бедствия, войны, решения госорганов, телекоммуникационные сбои и т.п.). - -10.2. Срок исполнения обязательств отодвигается на время действия форс-мажора, но не более чем на 30 (Тридцать) календарных дней. - +10.2. Срок исполнения обязательств отодвигается на время действия форс-мажора, но не более чем на 30 (тридцать) календарных дней. 10.3. При форс-мажоре длительностью более 30 дней Стороны проводят переговоры об альтернативных решениях или расторжении Пользовательского соглашения без возмещения убытков. ## 11. Разделимость положений 11.1. Пользователь и Разработчик соглашаются с тем, что если какая-либо часть настоящего Пользовательского соглашения или Политики конфиденциальности будет признана компетентным судом недействительной или не подлежащей защите, полностью или частично, то только такая часть настоящего Пользовательского соглашения или Политики конфиденциальности, которая объявлена недействительной или не подлежащей защите, будет считаться недействительной в данной юрисдикции, и только в той части, в которой она была признана таковой, и это не повлияет на действительность или возможность защиты в каком-либо аспекте и в любой юрисдикции других частей настоящего Пользовательского соглашения или Политики конфиденциальности, которые остаются в полной силе и действии. При этом такие недействительные положения подлежат замене положениями, максимально близкими по смыслу к исходным, которые будут признаны действительными в соответствующей юрисдикции, и подлежат применению в измененной форме (в том числе к уже установленным правоотношениям). - 11.2. Признание какого-либо положения недействительным или неисполнимым не затрагивает действительность или исполнимость положений разделов 7 (Порядок и способы выплаты вознаграждения), 9 (Интеллектуальная собственность), 12 (Применимое право и разрешение споров), 15.4 (Возмещение убытков) и 15.6 (Бездействие). ## 12. Применимое право и разрешение споров 12.1. Настоящее Пользовательское соглашение регулируется и толкуется в соответствии с законодательством Российской Федерации. Вопросы, не урегулированные Пользовательским соглашением, подлежат разрешению в соответствии с законодательством Российской Федерации. - -12.2. Все споры Сторон по настоящему Пользовательскому соглашению подлежат разрешению путем переписки и переговоров с использованием обязательного досудебного (претензионного) порядка. В случае невозможности достичь согласия между Сторонами путем переговоров в течение 30 (Тридцати) календарных дней с момента получения другой Стороной письменной претензии, направленной в соответствии с п. 15.2 настоящего Пользовательского соглашения, рассмотрение спора должно быть передано любой заинтересованной Стороной в суд по месту государственной регистрации Разработчика (Российская Федерация, г. Москва). +12.2. Все споры Сторон по настоящему Пользовательскому соглашению подлежат разрешению путем переписки и переговоров с использованием обязательного досудебного (претензионного) порядка. В случае невозможности достичь согласия между Сторонами путем переговоров в течение 30 (Тридцати) календарных дней с момента получения другой Стороной письменной претензии, направленной в соответствии с п. 15.2 настоящего Пользовательского соглашения, рассмотрение спора должно быть передано любой заинтересованной Стороной в суде по месту нахождения Разработчика (Российская Федерация, г. Москва) в соответствии с правилами о подсудности, установленными ГПК РФ или АПК РФ. ## 13. Порядок изменения Пользовательского соглашения 13.1. Настоящее Пользовательское соглашение (включая дополнения) могут быть изменены Разработчиком с уведомлением Пользователя посредством размещения новой редакции изменяемого Пользовательского соглашения на Сайте или Приложении. Внесенные Разработчиком изменения в Пользовательском соглашении, вступают в силу в день, следующий за днем опубликования таких изменений на Сайте или в Приложении (смотря что наступит раньше). Пользователь обязуется самостоятельно проверять настоящее Пользовательское соглашение на предмет внесенных изменений. Неосуществление Пользователем действий по ознакомлению не может служить основанием для неисполнения Пользователем своих обязательств и несоблюдения Пользователем ограничений, установленных настоящим Пользовательским соглашением. Разработчик рекомендует Пользователям регулярно знакомиться с актуальной редакцией Пользовательского соглашения. - 13.2. Пользователь вправе отказаться от принятия изменений и дополнений в настоящее Пользовательское соглашение, что означает отказ Пользователя от использования всех предоставленных ему ранее прав. ## 14. Уступка прав (требований) 14.1. Разработчик может уступить или передать права по настоящему Пользовательскому соглашению и (или) Политике конфиденциальности полностью или частично любому физическому или юридическому лицу в любое время с согласия Пользователя или без такового. Пользователь не вправе уступать или передавать какие-либо права и обязательства, вытекающие из Пользовательского соглашения или Политики конфиденциальности, без предварительного письменного согласия Разработчика, и любая уступка или передача прав, совершенная Пользователем без такого согласия, будет недействительной. - 14.2. Уступка Разработчиком прав по настоящему Соглашению третьему лицу не освобождает Разработчика от ответственности перед Пользователем за исполнение обязательств по настоящему Соглашению, возникших до момента уступки, если иное не согласовано с Пользователем или не предусмотрено законодательством. ## 15. Заключительные положения 15.1. Настоящее Пользовательское соглашение составлено на русском языке. В случае возникновения противоречий между русской версией и любыми переводами, приоритет имеет русская версия. - -15.2. Все уведомления, запросы и претензии в связи с настоящим Пользовательским соглашением или использованием Приложения направляются Пользователем Разработчику по электронной почте [a-mart@ya.ru](mailto:a-mart@ya.ru) или иными способами, явно указанными Разработчиком в Приложении или на Сайте. Уведомления Разработчика Пользователю считаются направленными надлежащим образом, если они размещены в Приложении и (или) на Сайте и (или) отправлены на контактный адрес электронной почты (при наличии), связанный с учетной записью Администратора в Telegram и считаются полученными Пользователем на следующий день после их размещения и (или) отправки. - +15.2. Все уведомления, запросы и претензии в связи с настоящим Пользовательским соглашением или использованием Приложения направляются Пользователем Разработчику по электронной почте [support@tgcrew.ru](mailto:support@tgcrew.ru) или иными способами, явно указанными Разработчиком в Приложении или на Сайте. Уведомления Разработчика Пользователю считаются направленными надлежащим образом, если они размещены в Приложении и (или) на Сайте и (или) отправлены на контактный адрес электронной почты (при наличии), связанный с учетной записью Администратора в Telegram и считаются полученными Пользователем на следующий день после их размещения/отправки. 15.3. Разработчик осуществляет обработку персональных данных Пользователей исключительно в порядке и целях, определенных Политикой конфиденциальности, являющейся неотъемлемой частью настоящего Пользовательского соглашения. - 15.4. Пользователь обязуется возместить Разработчику любые убытки (включая судебные издержки и разумные расходы на юридические услуги), понесенные Разработчиком в связи с нарушением Пользователем настоящего Пользовательского соглашения, законодательства или прав третьих лиц при использовании Приложения, включая убытки, возникшие в результате нарушения Пользователем прав третьих лиц (в том числе права на интеллектуальную собственность и права на конфиденциальность) при использовании Приложения. - 15.5. Настоящее Пользовательское соглашение представляет собой полное соглашение между Пользователем и Разработчиком в отношении использования Приложения и заменяет собой все предыдущие устные или письменные договоренности и понимания между Сторонами по данному предмету (при их наличии). - 15.6. Бездействие со стороны Разработчика в случае нарушения Пользователем положений настоящего Пользовательского соглашения не лишает Разработчика права предпринять соответствующие действия для защиты своих интересов в будущем, а также не означает отказа от своих прав в случае последующих подобных или сходных нарушений. - 15.7. Настоящее Пользовательское соглашение не создает агентских, партнерских, совместных отношений или отношений франчайзинга между Пользователем и Разработчиком. - 15.8. Разработчик не гарантирует совместимость Приложения со всеми устройствами, операционными системами и версиями мессенджера Telegram. ## 16. Контактная информация и реквизиты Разработчика Индивидуальный предприниматель Мартышкин Алексей Александрович -Юридический адрес: 111394, Российская Федерация, г. Москва, ул. Перовская, д. 66, к.3, кв. 187 +Юридический адрес: 111394, Российская Федерация, город Москва, улица Перовская, дом 66, корпус 3, квартира 187 ОГРНИП 318774600262084 ИНН 366316608346 -Телефон: +7 (926)339-04-25 -Электронная почта: [a-mart@ya.ru](mailto:a-mart@ya.ru) +Телефон: +7 (916) 439-04-25 +Электронная почта: [info@tgcrew.ru](mailto:info@tgcrew.ru) diff --git a/src/boot/axios.ts b/src/boot/axios.ts index 8a4cf0f..d287c2d 100644 --- a/src/boot/axios.ts +++ b/src/boot/axios.ts @@ -25,7 +25,7 @@ const api = axios.create({ api.interceptors.response.use( response => response, - async (error: AxiosError<{ error?: { code: string; message: string } }>) => { + (error: AxiosError<{ error?: { code: string; message: string } }>) => { const errorData = error.response?.data?.error || { code: 'ZERO', message: error.message || 'Unknown error' @@ -38,7 +38,6 @@ api.interceptors.response.use( type: 'negative', message: errorData.code + ': ' + errorData.message, icon: 'mdi-alert-outline', - position: 'bottom' }) } diff --git a/src/boot/telegram-boot.ts b/src/boot/telegram-boot.ts index cf6cb91..fb95e69 100644 --- a/src/boot/telegram-boot.ts +++ b/src/boot/telegram-boot.ts @@ -3,9 +3,7 @@ import type { WebApp } from "@twa-dev/types" declare global { interface Window { - Telegram: { - WebApp: WebApp - } + Telegram: { WebApp: WebApp } } } @@ -13,6 +11,7 @@ export default defineBoot(({ app }) => { const tg = window.Telegram?.WebApp tg.ready() + tg.disableVerticalSwipes() sessionStorage.setItem('isTelegram', tg.initData ? 'true' : 'false') const platform = tg.platform.toLowerCase() diff --git a/src/components/BaseLogo.vue b/src/components/BaseLogo.vue index a15937f..f49a83a 100644 --- a/src/components/BaseLogo.vue +++ b/src/components/BaseLogo.vue @@ -10,7 +10,11 @@ :style="{ color: iconColor }" /> -

+
tg Crew
@@ -27,7 +31,7 @@ } withDefaults(defineProps(), { - textColor: 'brand', + textColor: 'primary', iconColor: 'white', withBackground: true, animated: true @@ -36,8 +40,8 @@ diff --git a/src/components/pnAccountBlockName.vue b/src/components/pnAccountBlockName.vue index 7250aa3..a9a143f 100644 --- a/src/components/pnAccountBlockName.vue +++ b/src/components/pnAccountBlockName.vue @@ -2,7 +2,7 @@
- + @@ -15,7 +15,7 @@ - diff --git a/src/components/pnActionBar.vue b/src/components/pnActionBar.vue index fb60754..ffe2043 100644 --- a/src/components/pnActionBar.vue +++ b/src/components/pnActionBar.vue @@ -4,9 +4,9 @@ > @@ -27,13 +27,14 @@ + class="rounded-fix" + :class="shadows ? 'shadow-t' : ''" + > @@ -43,9 +44,9 @@
@@ -71,23 +72,24 @@ default: '' }) - defineProps({ - placeholder: { - type: String, - default: 'Search...' - }, - showCalendarBtn: { - type: Boolean, - default: true - }, - showFilterBtn: { - type: Boolean, - default: true - }, - calendarActive: Boolean, - filterActive: Boolean, - calendarBadge: Boolean, - filterBadge: Boolean + withDefaults(defineProps<{ + placeholder?: string + showCalendarBtn?: boolean + showFilterBtn?: boolean + calendarActive?: boolean, + filterActive?: boolean, + calendarBadge?: boolean, + filterBadge?: boolean, + shadows?: boolean + }>(), { + placeholder: 'Search...', + showCalendarBtn: true, + showFilterBtn: true, + calendarActive: false, + filterActive: false, + calendarBadge: false, + filterBadge: false, + shadows: false }) const emit = defineEmits([ diff --git a/src/components/pnAutoAvatar.vue b/src/components/pnAutoAvatar.vue index 8b9d51f..be8c99f 100644 --- a/src/components/pnAutoAvatar.vue +++ b/src/components/pnAutoAvatar.vue @@ -50,6 +50,3 @@ } - - diff --git a/src/components/pnBottomSheetDialog.vue b/src/components/pnBottomSheetDialog.vue index f057c67..65667f8 100644 --- a/src/components/pnBottomSheetDialog.vue +++ b/src/components/pnBottomSheetDialog.vue @@ -15,19 +15,30 @@ max-height: calc(100vh - 48px - var(--tg-content-safe-area-inset-top) - var(--tg-safe-area-inset-top)); " > -
+
-
- +
+ {{ $t(title) }} {{ $t(caption) }}
-
- - + +
+ +
@@ -103,7 +114,7 @@ interface SizeParams { height: number; width: number } const onHeaderResize = (size: SizeParams) => headerHeight.value = size.height const onFooterResize = (size: SizeParams) => footerHeight.value = hasFooter.value ? size.height : 0 - const onInnerBodyResize = (size: SizeParams) => bodyInnerHeight.value = size.height + const onInnerBodyResize = (size: SizeParams) => bodyInnerHeight.value = size.height + 32 const handleWindowResize = () => { windowHeight.value = window.innerHeight diff --git a/src/components/pnChatTypeItem.vue b/src/components/pnChatTypeItem.vue index a470cdf..65eed5b 100644 --- a/src/components/pnChatTypeItem.vue +++ b/src/components/pnChatTypeItem.vue @@ -37,8 +37,8 @@ function getDate (d: number) { return new Date(d * 1000).getFullYear() === new Date(Date.now()).getFullYear() - ? date.formatDate(d * 1000, 'DD MMM') - : date.formatDate(d * 1000, 'DD MMM YY') + ? date.formatDate(d * 1000, 'D MMM') + : date.formatDate(d * 1000, 'D MMM YY') } diff --git a/src/components/pnCutterLongText.vue b/src/components/pnCutterLongText.vue index a28e914..9619614 100644 --- a/src/components/pnCutterLongText.vue +++ b/src/components/pnCutterLongText.vue @@ -30,6 +30,3 @@ return props.text.slice(-props.tailLength) }) - - diff --git a/src/components/pnGlassBtn.vue b/src/components/pnGlassBtn.vue index 4d23e5b..ff37df4 100644 --- a/src/components/pnGlassBtn.vue +++ b/src/components/pnGlassBtn.vue @@ -23,6 +23,7 @@ const typeClass = computed(() => { switch (props.type) { case 'fab': return 'q-btn--fab q-btn--rounded' + case 'round': return 'q-btn--rounded' case 'rounded': return 'q-btn--rounded' default: return '' } diff --git a/src/components/pnItemBtmDialog.vue b/src/components/pnItemBtmDialog.vue index dac8421..b63ade8 100644 --- a/src/components/pnItemBtmDialog.vue +++ b/src/components/pnItemBtmDialog.vue @@ -14,7 +14,7 @@ /> - + {{ $t(title) }} diff --git a/src/components/pnListSelector.vue b/src/components/pnListSelector.vue index 57b6e95..8a83916 100644 --- a/src/components/pnListSelector.vue +++ b/src/components/pnListSelector.vue @@ -4,20 +4,23 @@ v-for="(option, index) in options" :key="index" flat - no-caps dense - class="w100" + no-caps + dense + class="w100 q-pt-none" align="left" - @click="selectItem(option)" + @click="model = option.value" :class="isSelected(option.value) ? 'text-primary' : ''" - > - - + > + + + {{ $te(option.label) ? $t(option.label) : option.label }} @@ -43,10 +46,6 @@ const isSelected = computed(() => (value: string | number) => { return model.value === value }) - - const selectItem = (option: ListOption) => { - model.value = option.value - } diff --git a/src/components/pnPageCard.vue b/src/components/pnPageCard.vue index a4625ee..db41175 100644 --- a/src/components/pnPageCard.vue +++ b/src/components/pnPageCard.vue @@ -1,11 +1,11 @@ diff --git a/src/components/pnSimpleScrollDialog.vue b/src/components/pnSimpleScrollDialog.vue index 47eca7a..96cfc53 100644 --- a/src/components/pnSimpleScrollDialog.vue +++ b/src/components/pnSimpleScrollDialog.vue @@ -18,8 +18,12 @@ {{ $t(title)}} - - + +
@@ -96,8 +100,4 @@ } return 0 } - - - diff --git a/src/components/pnSmallDialog.vue b/src/components/pnSmallDialog.vue index 2e29f57..b7a0073 100644 --- a/src/components/pnSmallDialog.vue +++ b/src/components/pnSmallDialog.vue @@ -37,7 +37,7 @@ @click="emit('clickAuxBtn')" />
-
+
- - diff --git a/src/components/pnTabs.vue b/src/components/pnTabs.vue index 9d2d828..bf138e1 100644 --- a/src/components/pnTabs.vue +++ b/src/components/pnTabs.vue @@ -37,7 +37,7 @@
diff --git a/src/components/pnUserListItemBody.vue b/src/components/pnUserListItemBody.vue index 60145cd..4c7ed4c 100644 --- a/src/components/pnUserListItemBody.vue +++ b/src/components/pnUserListItemBody.vue @@ -52,6 +52,3 @@ }>() - - diff --git a/src/components/projectBlock.vue b/src/components/projectBlock.vue index 495a29e..70cbf34 100644 --- a/src/components/projectBlock.vue +++ b/src/components/projectBlock.vue @@ -30,15 +30,15 @@ class="q-gutter-y-lg w100" > @@ -232,10 +233,9 @@ async function clickSendPromocode () { const result = await sendPromocode(promocode.value) - if (result) { - showNotify('success') - } else - showNotify('fail') + + if (result) showNotify('success') + else showNotify('fail') promocode.value = '' } @@ -244,7 +244,6 @@ $q.notify({ message: t(message === 'success' ? 'subscribe__promocode_success' : 'subscribe__promocode_fail'), type: message === 'success' ? 'positive' : 'negative', - position: 'bottom', timeout: 1000, multiLine: true }) diff --git a/src/components/subscribe/subscribeUpgrade.vue b/src/components/subscribe/subscribeUpgrade.vue index 91f28c9..183a253 100644 --- a/src/components/subscribe/subscribeUpgrade.vue +++ b/src/components/subscribe/subscribeUpgrade.vue @@ -4,7 +4,7 @@ class="column w100" v-if="testTariffId && tariffs.length > 0 && periods.length > 0" > -
+
{{ $t('subscribe__tariffs') }}
-
+
{{ $t('subscribe__tariffs_interval') }}
-
+
{ + try { + await copyToClipboard(text) + $q.notify({ + message: t('copy') || 'Copied', + classes: 'bg-grey-8 text-white', + timeout: 1500 + }) + return true + } catch { + return false + } + } + + return { copy } +} diff --git a/src/composables/useInputRules.ts b/src/composables/useInputRules.ts index 231b5b0..3236d7c 100644 --- a/src/composables/useInputRules.ts +++ b/src/composables/useInputRules.ts @@ -4,16 +4,18 @@ import { useI18n } from 'vue-i18n' export const useInputRules = () => { const { t } = useI18n() + const EMAIL_REGEX = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z]{2,})+$/ return { inputRules: { require: (val: string) => !!val?.trim() || t('input_rules__require'), - email: (val: string) => /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/.test(val) || t('input_rules__incorrect_email'), + email: (val: string) => EMAIL_REGEX.test(val) || t('input_rules__incorrect_email'), password: (val: string) => val.length >= 8 || t('input_rules__password_require'), middleText: (val: string) => !val || val.length <= 60 || t('input_rules__middle_text'), longText: (val: string) => !val || val.length <= 250 || t('input_rules__long_text'), editorText: (val: string) => !val || val.length <= 7800 || t('input_rules__editor_text'), - editorPlainText: (val: string) => !val || val.length <= 3800 || t('input_rules__editor_text') + editorPlainText: (val: string) => !val || val.length <= 3800 || t('input_rules__editor_text'), + isEquil: (target: string | undefined, text: string) => (val: string) => val !== target || t(text) } } } diff --git a/src/composables/useNotify.ts b/src/composables/useNotify.ts deleted file mode 100644 index 7566268..0000000 --- a/src/composables/useNotify.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { useQuasar } from 'quasar' -import { useI18n } from 'vue-i18n' -import type { ServerError } from 'boot/axios' - -export type { ServerError } - -export function useNotify() { - const $q = useQuasar() - const { t } = useI18n() - - const notifyError = (error: ServerError) => { - $q.notify({ - message: `${t(error.message)} (${t('code')}: ${error.code})`, - type: 'negative', - position: 'bottom', - timeout: 1000, - multiLine: true - }) - } - - return { notifyError } -} diff --git a/src/css/app.scss b/src/css/app.scss index f9062b8..2ea34f3 100644 --- a/src/css/app.scss +++ b/src/css/app.scss @@ -1,4 +1,40 @@ // app global css in SCSS form +.bg-t-primary { + background: $t-bg-color !important; +} + +.bg-t-secondary { + background: $t-secondary-bg-color !important; +} + +.bg-t-bottom-bar { + background: $t-bottom-bar-bg-color !important; +} + +.t-section-separator { + color: $t-section-separator-color !important; +} + +.t-text { + color: $t-text-color !important; +} + +.t-text-hint { + color: $t-hint-color !important; +} + +.t-text-subtitle { + color: $t-subtitle-text-color !important; +} + +.t-text-accent { + color: $t-accent-text-color !important; +} + +.t-text-section-header { + color: $t-section-header-text-color !important; +} + .text-brand { color: $brand !important; } @@ -27,14 +63,11 @@ $base-width: 100; body, html, #q-app { font-family: $typography-font-family; + background-color: transparent !important; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } -#q-app { - height: 100vh; -} - * { font-family: inherit; } @@ -44,6 +77,25 @@ body, html, #q-app { --top-radius: 12px; --logo-color-bg-white: grey; --dynamic-font-size: 16px; + + --t-bg-color: #{$t-bg-color}; + --t-secondary-bg-color: #{$t-secondary-bg-color}; + --t-section-bg-color: #{$t-section-bg-color}; + --t-header-bg-color: #{$t-header-bg-color}; + --t-bottom-bar-bg-color: #{$t-bottom-bar-bg-color}; + + --t-text-color: #{$t-text-color}; + --t-hint-color: #{$t-hint-color}; + --t-subtitle-text-color: #{$t-subtitle-text-color}; + --t-accent-text-color: #{$t-accent-text-color}; + --t-section-header-text-color: #{$t-section-header-text-color}; + + --t-button-color: #{$t-button-color}; + --t-button-text-color: #{$t-button-text-color}; + --t-link-color: #{$t-link-color}; + --t-destructive-text-color: #{$t-destructive-text-color}; + + --t-section-separator-color: #{$t-section-separator-color}; } body { @@ -96,23 +148,112 @@ body { opacity: 1; } -.q-field--filled .q-field__control:after { - height: 1px !important +.q-field--filled { + .q-field__control { + background: $t-secondary-bg-color !important; + transition: none !important; + + &:hover { + background: $t-secondary-bg-color !important; + } + } + + &.q-field--focused { + .q-field__control { + background: $t-secondary-bg-color !important; + } + } + + .q-field__control { + &:before { + border-bottom: none !important; + display: none !important; + } + + &:after { + border-bottom: none !important; + display: none !important; + transform: none !important; + } + } + + .q-field__control-container { + padding-bottom: 0 !important; + } + + input, textarea { + caret-color: var(--q-primary) !important; + } + + &.q-field--focused { + input, textarea { + caret-color: var(--q-primary) !important; + } + } } -.q-field--filled.q-field--focused .q-field__control::before { - background: $grey-4 !important; - opacity: 1 !important; +@mixin shadow-t($opacity: 0.12, $blur: 16px, $spread: -4px) { + box-shadow: 0 0 1px 0 rgba(0, 0, 0, $opacity), + 0 0 $blur $spread rgba(0, 0, 0, $opacity * 0.67) !important; } -.q-field--filled.q-field--error .q-field__control::before { - background: $grey-2; - opacity: 1 !important; +.shadow-t { + & { + @include shadow-t; + transition: box-shadow 0.3s cubic-bezier(0.4, 0, 0.2, 1); + } + + &.q-btn { + overflow: visible !important; + + &:hover { + @include shadow-t(0.16, 20px, -2px); + } + + &:active { + @include shadow-t(0.08, 12px, -6px); + transform: translateY(1px); + } + + &.q-btn--flat, + &.q-btn--outline { + box-shadow: none; + + &.shadow-t { + @include shadow-t; + } + } + } + + &.q-field { + .q-field__control { + overflow: visible !important; + transition: box-shadow 0.3s cubic-bezier(0.4, 0, 0.2, 1); + } + + &.q-field--focused { + .q-field__control { + @include shadow-t(0.2, 24px, 0px); + } + } + } + + &.q-card { + transition: box-shadow 0.3s cubic-bezier(0.4, 0, 0.2, 1); + + &:hover { + @include shadow-t(0.16, 24px, 0px); + } + } + + &.div + &.q-menu, + &.q-popup, + &.q-dialog { + @include shadow-t(0.2, 24px, 0px); + } } -.shadow-tg { - box-shadow: 0 0 1px 0 rgba(0, 0, 0, 0.12), 0 0 16px -4px rgba(0, 0, 0, 0.08) !important; -} @font-face { font-family: 'myFont'; diff --git a/src/css/quasar.variables.scss b/src/css/quasar.variables.scss index 7de16fe..39c8b98 100644 --- a/src/css/quasar.variables.scss +++ b/src/css/quasar.variables.scss @@ -1,4 +1,45 @@ -$primary : #419FD9; +/* telegram theme on Android 2026 +bg-color: #ffffff +secondary-bg-color: #f1f1f3 +section-bg-color: #ffffff +header-bg-color: #ffffff +bottom-bar-bg-color: #f1f1f3 + +text-color: #1a1d21 +hint-color: #a8a8a8 +subtitle-text-color: #82868a +accent-text-color: #1c93e3 +section-header-text-color: #298acf + + +button-color: #229af0 +button-text-color: #ffffff +link-color: #2678b6 +destructive-text-color: #cc2929 + +section-separator-color: #d9d9d9 +*/ + +$t-bg-color: #ffffff; +$t-secondary-bg-color: #f1f1f3; +$t-section-bg-color: #ffffff; +$t-header-bg-color: #ffffff; +$t-bottom-bar-bg-color: #f1f1f3; + +$t-text-color: #1a1d21; +$t-hint-color: #a8a8a8; +$t-subtitle-text-color: #82868a; +$t-accent-text-color: #1c93e3; +$t-section-header-text-color: #298acf; + +$t-button-color: #229af0; +$t-button-text-color: #ffffff; +$t-link-color: #2678b6; +$t-destructive-text-color: #cc2929; + +$t-section-separator-color: #d9d9d9; + +$primary : $t-button-color; $secondary : #26A69A; $accent : #9C27B0; @@ -6,11 +47,11 @@ $dark : #1D1D1D; $dark-page : #121212; $positive : #21BA45; -$negative : #C10015; +$negative : $t-destructive-text-color; $info : #31CCEC; $warning : #F2C037; -$lightgrey : #DCDCDC; +$lightgrey : $t-secondary-bg-color; $brand: #419FD9; $base-bg: #517DA2; diff --git a/src/i18n/en-US/index.ts b/src/i18n/en-US/index.ts index 6a0173e..852824b 100644 --- a/src/i18n/en-US/index.ts +++ b/src/i18n/en-US/index.ts @@ -1 +1 @@ -export default { EN: 'EN', RU: 'RU', '': '', continue: 'Continue', back: 'Back', close: 'Close', cancel: 'Cancel', code: 'Code', month: 'month', months: 'months', slogan: 'Work together - it\'s magic!', B: 'B', kB: 'kB', MB: 'MB', GB: 'GB', TB: 'TB', login__email: 'E-mail', login__password: 'Password', login__forgot_password: 'Forgot Password?', login__sign_in: 'Log in', login__or_continue_as: 'or continue as', login__register: 'Create account', login__register_title: 'Register', projects__title: 'Projects', projects__search: 'Search', projects__show_archive: 'Show archive', projects__hide_archive: 'Hide archive', projects__dialog_archive_title: 'Archive project?', projects__dialog_archive_message: 'Chat tracking will stop.', projects__dialog_archive_message2: 'Chat data during archiving will be lost!', projects__dialog_archive_ok: 'Archive', projects__dialog_restore_title: 'Restore project?', projects__dialog_restore_message: 'Chat tracking will resume.', projects__dialog_restore_message2: 'Archive period data won\'t be recovered!', projects__dialog_restore_ok: 'Restore', projects__lets_start: 'Create a Project', projects__lets_start_description: 'Bring multiple chats together in one place', header__to_projects: 'Projects', project__chats: 'Chats', project__users: 'Team', project__companies: 'Companies', project_create__title_card: 'New project', project_create__btn: 'Create', project_edit__title_card: 'Edit project', project_edit__btn: 'Apply', project_block__project_name: 'Name', project_block__project_description: 'Description', project_block__project_chat_info: 'Additional info for pinned messages', project_block__error_name: 'Field is required', chats__search: 'Search', chats__show_obsolete_chats: 'Show disabled and deleted chats', chats__hide_obsolete_chats: 'Hide disabled and deleted chats', chats__attach_dialog_title: 'Chat connection', chats__attach_chat_private_title: 'Private Mode', chats__attach_chat_private_title_description: 'No message access. Chat files are not tracked. Notifications only', chats__attach_private_chat: 'Add chat', chats__attach_private_chat_description: 'You must have permission to add members to the chat', chats__send_private_chat: 'Send request', chats__send_private_chat_description: 'For a chat member with permission to add others', chats__attach_chat_title: 'Full functionality', chats__attach_chat_title_description: 'Message access enabled. Chat files tracked with backup', chats__attach_chat: 'Add chat', chats__attach_chat_description: 'You must be the chat administrator', chats__send_chat: 'Send request', chats__send_chat_description: 'For the chat administrator', chats_disabled_FAB: 'Adding chats is only available in the Telegram app', chats__disable_add_chat: 'Unable to add chat — change your subscription plan or detach other chats', chats__disable_add_chat_description: 'Upgrade your plan or remove several chats from tracking', chats__send_chat_title: 'To connect the chat to app tgCrew, add the bot to it using the provided link:', chats__dialog_unlink_title: 'Unlink chat?', chats__dialog_unlink_message: 'Chat tracking will be discontinued.', chats__dialog_unlink_message2: 'All tasks and meetings will be detached from this chat.', chats__dialog_unlink_ok: 'Unlink', chats__onboard_msg1: 'Attach chats to the project', chats__onboard_msg2: 'Chat control is enabled from the moment of attachment.', chats__help_chat_type: 'Chat types', chats__filters: 'Filters', chats__filters_reset: 'Reset filters', chats__filters_type: 'Chat connection type', chats__filters_continue: 'Continue', chat_card__title: 'Chat card', chat_card__go_chat: 'Go to chat', chat_card__members: 'Members', chat_card__owner: 'Chat owner', chat_page__user_blocked: 'Blocked', chat__help_title: 'Chat connection types', chat_type__label_no_access: 'Access Denied', chat_type__description_no_access: 'Chat access is unavailable', chat_type__label_notify: 'Notifications mode', chat_type__description_notify: 'No message access. Notifications only', chat_type__label_full: 'Full functionality', chat_type__description_full: 'Message access enabled', chat_type__label_new: 'First Connection', chat_type__description_new: 'App controls all its messages', chat_type__label_reconnect: 'Reconnected', chat_type__description_reconnect: 'Chat was reconnected. App can\'t manage its own messages sent before reconnection', chat_type__label_detach: 'Disabled', chat_type__description_detach: 'App doesn\'t manage the chat', chat_type__label_delete: 'Deleted', chat_type__description_delete: 'Chat deleted or bot removed. App doesn\'t manage the chat', chat_type__dialog_func_title: 'In private mode, the following are not available:', chat_type__dialog_func_point1: 'Tracking and backup of chat files', chat_type__dialog_func_point2: 'Ability to remove user from chat if they left the project.', chat_type__dialog_func_point3: 'Pinning informational messages.', chat_type__dialog_administrator_rights: 'For full functionality, the bot requires administrator rights including "Ban user".', users__search: 'Search', users__show_blocked_users: 'Show Blocked', users__hide_blocked_users: 'Hide Blocked', users__show_left_users: 'Show Leavers (inactive)', users__hide_left_users: 'Hide Leavers (inactive)', users__dialog_block_title: 'Block Employee?', users__dialog_block_message: 'System access will be disabled.', users__dialog_block_message2: 'The employee will be removed from all chats (except those where they are the owner).', users__dialog_block_ok: 'Block', users__dialog_restore_title: 'Restore Employee?', users__dialog_restore_message: 'System access will be restored.', users__dialog_restore_message2: 'Add them to chats manually if required.', users__dialog_restore_ok: 'Restore', users__onboard_msg1: 'Project Contact List', users__onboard_msg2: 'After attaching chats, members are imported automatically. You’ll need to define who is who', user_edit__title_card: 'Edit employee', user_edit__btn: 'Apply', user_block__name: 'Name', user_block__company: 'Company', user_block__department: 'Department', user_block__role: 'Role', user_block__no_company: 'Not specified', user_status__user_leave: 'Inactive', user_status__user_pending: 'Consent pending', companies__dialog_delete_title: 'Delete company?', companies__dialog_delete_message: 'This action cannot be undone!', companies__dialog_delete_message2: 'Company employees will be moved to \'No Company\'', companies__dialog_delete_ok: 'Delete', companies__mask: 'Cloaking', companies__my_company: 'My company', companies__onboard_msg1: 'Add Companies', companies__onboard_msg2: 'Recommended for projects with employees from 3+ companies.', company_add__title_card: 'Add company', company_add__btn: 'Add', company_edit__title_card: 'Edit company', company_edit__btn: 'Apply', company_edit__my_company: 'My company', company_edit__my_company_hint: 'Form pre-filling is configured in Settings:', company_edit__my_company_href: 'My company', company_block__name: 'Name', company_block__error_name: 'Field is required', company_block__description: 'Description', mask__title: 'Companies cloaking ', mask__help_title: 'Cloaking ', mask__help_message1: 'Cloaking conceals a company by making its personnel appear as if they belong to other companies, except those listed as "Visible"', mask__help_message2: 'Use the Toggle to enable or disable cloaking. Configure exceptions using the "+" button.', mask__info_block: 'Your company\'s employees will see all companies, regardless of the cloaking settings.', mask__table_header_company: 'Company', mask__table_header_visible: 'Visible', mask__table_visible_none: 'None', mask__table_visible_all: 'All', mask__btn_ok: 'Apply', account_helper__enter_email: 'Enter account e-mail', account_helper__email: 'E-mail', account_helper__confirm_email: 'Confirm e-mail', account_helper__confirm_email_message: 'Enter the Code from e-mail to continue. If you haven\'t received an e-mail with the Code, check the Spam folder.', account_helper__code: 'Code', account_helper__code_error: 'Incorrect code. Ensure your e-mail is correct and try again.', account_helper__agreement: 'Agreements', account_helper__agreement_btn: 'Agree', account_helper__set_password: 'Set password', account_helper__password: 'Password', account_helper__finish: 'Finish', account_helper__register_message1: 'Welcome!', account_helper__forgot_password_message1: 'Password set!', account_helper__change_password_message1: 'Password changed!', account_helper__change_method_message1: 'Login method changed!', account_helper__go_projects: 'Go to projects…', account_change_email__title: 'Change account e-mail', account_change_email__current_email: 'Current account e-mail', account_change_email__email: 'E-mail', account_change_email__confirm_current_email: 'Confirm current e-mail', account_change_email__confirm_email_message: 'Enter the Code from e-mail to continue. If you haven\'t received an e-mail with the Code, check the Spam folder.', account_change_email__code: 'Code', account_change_email__code_error: 'Incorrect code. Ensure your e-mail is correct and try again.', account_change_email__new_email: 'New account e-mail', account_change_email__confirm_new_email: 'Confirm new e-mail', account_change_email__set_password: 'Set password', account_change_email__password: 'Password', account_change_email__finish: 'Finish', account_change_email__finish_after_message: 'Done!', account_change_email__ok_message1: 'The email address has been successfully updated!', account_change_email__ok_message2: 'Go to Settings…', account__change_auth_message_2: 'After creating a user, all data from the Telegram account will be transferred to the new account.', account__change_auth_btn: 'Create account', account__change_auth_warning: 'WARNING!', account__change_auth_warning_message: 'Reverse data transfer is not possible.', account__chats: 'Chats', account__chats_active: 'Active', account__chats_unbound: 'Detached', account__chats_free: 'Free', account__chats_total: 'Total', account__subscribe: 'Subscription', account__subscribe_description: 'With a subscription, you can attach more active chats.', account__auth_change_method: 'Change authorization method', account__auth_change_method_description: 'In case of corporate use, it is recommended to log in with a username and password.', account__auth_change_password: 'Change account password', account__auth_change_password_description: 'Access to the email address used for system login is required.', account__auth_change_account: 'Change account e-mail', account__auth_change_account_description: 'Access to both the current and new email addresses used for system authentication is required.', account__backup: 'File Backups', account__backup_description: 'Archived files from chats, tasks, and meetings.', account__company_data: 'My company', account__company_data_description: 'The description will be automatically added to your company list for new projects.', account__manual: 'Guides', account__manual_description: 'Go to our Telegram channel with video tutorials.', account__settings: 'App Parametrs', account__settings_description: 'Text size, language, and more.', account__support: 'Support', account__support_description: 'Need help? Contact us!', account__3rd_party_software_description: 'List of third-party software packages included in the software', account__terms_of_use: 'Terms of use', account__privacy: 'Privacy Policy', account__consent_pd: 'Consent to the processing of my personal data', account__tarrifs_info: 'Provision on subscription tariffs', account__stop_using: 'Opt-Out from Application Usage', account__stop_using_description: 'Includes Withdrawal of Consent for Personal Data Processing.', account__stop_using_dialog_title: 'Refuse to Use the Application?', account__stop_using_dialog_message1: 'The action is irreversible - your data will become inaccessible!', account__stop_using_dialog_message2: 'This action also entails the withdrawal of Consent for Personal Data Processing.', account__stop_using_dialog_btn_ok: 'Confirm', account__change_password: 'Change password', account__change_auth_method: 'Change authorization method', account_company__title_card: 'My company', account_company__btn: 'Apply', forgot_password__password_recovery: 'Password recovery', settings__title: 'App Parametrs', settings__software_title: 'Application', settings__bot_title: 'Messages in chats (bot)', settings__language: 'Language', settings__display_mode: 'Display mode', settings__display_mode_full: 'Full screen', settings__display_mode_window: 'Standard', settings__display_mode_android_warning: 'In full-screen mode, an initial tap brings up the system navigation bar. Following this, the app will respond to your input.', settings__font_size: 'Font size', settings__fontsize_small: 'Small', settings__fontsize_medium: 'Medium (default)', settings__fontsize_large: 'Large', settings__timezone: 'Time zone', settings__timezone_search: 'Search', subscribe__title: 'Subscription', subscribe__current_tariff_title: 'Current tariff', subscribe__current_tariff_date: 'Subscription is active until', subscribe__current_tariff_chat_limit: 'Rated (active) chats', subscribe__tariffs: 'Tariffs', subscribe__dialog_select_tariff_show: 'Change tariff', subscribe__dialog_select_tariff_title: 'Change tariff', subscribe__dialog_select_tariff_btn: 'Apply', subscribe__dialog_select_tariff_btn_cancel: 'Cancel', subscribe__dialog_select_tariff_recalc_msg: 'Tariff will be active until', subscribe_tariffs__description: 'Unlimited everything: users, projects, tasks.', subscribe_tariffs__per_month: '/month', subscribe_tariffs__chats_max: 'max.', subscribe_tariffs__chats: 'chats', subscribe_tariffs__free_tax: 'FREE', subscribe__dialog_select_tariff_notes_title: 'Notes:', subscribe__dialog_select_tariff_notes_1: '1. Tariff changes are limited to once per day.', subscribe__dialog_select_tariff_notes_2: '2. To switch to the TEST tariff, please contact customer support.', subscribe__dialog_select_tariff_notes_3: '3. When changing a tariff, the balance of the unused period is recalculated. The total subscription validity period cannot exceed 730 days.', subscribe__dialog_select_tariff_notes_more: 'Learn more about tariff changes…', subscribe__dialog_select_tariff_warn_debt_msg_1: 'Tariff change is on hold', subscribe__dialog_select_tariff_warn_debt_msg_2: 'Renew your subscription to proceed', subscribe__dialog_select_tariff_warn_once_day_msg_1: 'Daily tariff change limit reached', subscribe__dialog_select_tariff_warn_once_day_msg_2: 'Try again tomorrow', subscribe__tariffs_interval: 'Subscription period', subscribe__tariffs_interval_renewal: 'Renewal period', subscribe__1month: '1 month', subscribe__3months: '3 months', subscribe__1year: '1 year', subscribe__30days: '30 days', subscribe__91days: '91 days', subscribe__365days: '365 days', subscribe__tariffs_period_notes: 'Switching plans will recalculate your unused billing period. The total subscription term cannot exceed 730 days.', subscribe__plans_period_notes_more_info: 'More…', suscribe__credit_from: 'For period since', suscribe__credit_description: 'This amount will be added to your renewal payment.', subscribe__promocode_description: 'Activate free period', subscribe__promocode: 'Promo code', subscribe__promocode_success: 'Promo code successfully applied!', subscribe__promocode_fail: 'Promo code is invalid!', subscribe__pay: 'Subscribe for', subscribe__pay_renew: 'Renew for', subscribe__tariff_exp: 'exp.', support__title: 'Support', support__ask_question: 'Ask Question', support__work_time_text: 'Support is available on weekdays', support__work_time_time: '10:00 - 19:00 (Moscow, GMT+3)', support__or: 'or contact us via email', backup__title: 'File Backups', backup__project: 'Project', backup__files_search: 'Files search', backup__empty_description: 'No files yet', error404: 'Oops. Nothing here…', agreements__title: 'Agreements', agreements__description: 'To use the application:', agreements__description_update: 'The documents have been significantly updated.', agreements__checkbox_agreement_terms: 'I accept the', agreements__checkbox_agreement_terms_doc: 'Terms of Use', agreements__checkbox_agreement_consent: 'I', agreements__checkbox_agreement_consent_doc: 'consent to the processing of my personal data', agreements__checkbox_agreement_privacy: 'and accept the', agreements__checkbox_agreement_privacy_doc: 'Privacy Policy', agreements__btn_agree: 'Agree and continue', agreements__btn_decline: 'Decline', agreements__btn_decline_description: '(close app)', only_telegram__continue: 'Continue', input_rules__require: 'Field is required', input_rules__incorrect_email: 'Please enter a valid email address', input_rules__password_require: 'At least 8 characters', input_rules__middle_text: 'Max 60 characters', input_rules__long_text: 'Max 250 characters', input_rules__editor_text: 'Maximum content size exceeded', instance_close_dialog__title: 'App is open in another window', instance_close_dialog__description: 'Please switch to the most recently opened window. This one can be closed.', instance_close_dialog__btn: 'Close' } \ No newline at end of file +export default { EN: 'EN', RU: 'RU', '': '', continue: 'Continue', back: 'Back', close: 'Close', cancel: 'Cancel', copy: 'Copied!', code: 'Code', month: 'month', months: 'months', slogan: 'Work together!', B: 'B', kB: 'kB', MB: 'MB', GB: 'GB', TB: 'TB', login__email: 'E-mail', login__password: 'Password', login__forgot_password: 'Forgot Password?', login__sign_in: 'Log in', login__or_continue_as: 'or continue as', login__register: 'Create account', login__register_title: 'Register', projects__title: 'Projects', projects__search: 'Search', projects__show_archive: 'Show archive', projects__hide_archive: 'Hide archive', projects__dialog_archive_title: 'Archive project?', projects__dialog_archive_message: 'Chat tracking will stop.', projects__dialog_archive_message2: 'Chat data during archiving will be lost!', projects__dialog_archive_ok: 'Archive', projects__dialog_restore_title: 'Restore project?', projects__dialog_restore_message: 'Chat tracking will resume.', projects__dialog_restore_message2: 'Archive period data won\'t be recovered!', projects__dialog_restore_ok: 'Restore', projects__lets_start: 'Create a Project', projects__lets_start_description: 'Bring multiple chats together in one place', header__to_projects: 'Projects', project__chats: 'Chats', project__users: 'Team', project__companies: 'Companies', project__backup: 'Backup', project_create__title_card: 'New project', project_create__btn: 'Create', project_edit__title_card: 'Edit project', project_edit__btn: 'Apply', project_block__project_name: 'Name', project_block__project_description: 'Description', project_block__project_chat_info: 'Additional info for pinned messages', project_block__error_name: 'Field is required', chats__search: 'Search', chats__show_obsolete_chats: 'Show disabled and deleted chats', chats__hide_obsolete_chats: 'Hide disabled and deleted chats', chats__attach_dialog_title: 'Chat connection', chats__attach_chat_private_title: 'Private Mode', chats__attach_chat_private_title_description: 'No message access. Chat files are not tracked. Notifications only', chats__attach_private_chat: 'Add chat', chats__attach_private_chat_description: 'Member add permissions required', chats__send_private_chat: 'Send request', chats__send_private_chat_description: 'To a member with invite permissions', chats__attach_chat_title: 'Full functionality', chats__attach_chat_title_description: 'Message access enabled. Chat files tracked with backup', chats__attach_chat: 'Add chat', chats__attach_chat_description: 'You must be the chat administrator', chats__send_chat: 'Send request', chats__send_chat_description: 'To a chat administrator', chats__show_manual_connect_chat: 'Manual connection', chats__hide_manual_connect_chat: 'Hide', chats__manual_connect_chat_subtitle: 'For advanced users', chats__manual_connect_chat_btn: 'Connect chat manually', chats__manual_connect_chat_description: 'Bot joins as a member (temporary chat admin rights are not required).', chats_disabled_FAB: 'Adding chats is only available in the Telegram app', chats__disable_add_chat: 'Unable to add chat — change your subscription plan or detach other chats', chats__disable_add_chat_description: 'Upgrade your plan or remove several chats from tracking', chats__send_chat_title: 'To connect the chat to app tgCrew, add the bot to it using the provided link:', chats__dialog_unlink_title: 'Unlink chat?', chats__dialog_unlink_message: 'Chat tracking will be discontinued.', chats__dialog_unlink_message2: 'All tasks and meetings will be detached from this chat.', chats__dialog_unlink_ok: 'Unlink', chats__onboard_msg1: 'Attach chats to the project', chats__onboard_msg2: 'Chat control is enabled from the moment of attachment.', chats__help_chat_type: 'Chat types', chats__filters: 'Filters', chats__filters_reset: 'Reset filters', chats__filters_type: 'Chat connection type', chats__filters_continue: 'Continue', chat_card__title: 'Chat card', chat_card__go_chat: 'Go to chat', chat_card__members: 'Members', chat_card__owner: 'Chat owner', chat_page__user_blocked: 'Blocked', chat__help_title: 'Chat connection types', chat_type__label_no_access: 'Access Denied', chat_type__description_no_access: 'Chat access is unavailable', chat_type__label_notify: 'Notifications mode', chat_type__description_notify: 'No access to chat messages — notifications only. Features unavailable: file backup, removing participants, pinning messages.', chat_type__label_full: 'Full functionality', chat_type__description_full: 'Access to chat messages granted. To operate, the bot requires administrator rights, incl. "Block Users".', chat_type__label_new: 'First connection', chat_type__description_new: 'App controls all its messages.', chat_type__label_reconnect: 'Reconnected', chat_type__description_reconnect: 'Chat was reconnected. App can\'t manage its own messages sent before reconnection.', chat_type__label_detach: 'Disabled', chat_type__description_detach: 'App doesn\'t manage the chat.', chat_type__label_delete: 'Deleted', chat_type__description_delete: 'Chat deleted or bot removed. App doesn\'t manage the chat.', users__search: 'Search', users__show_blocked_users: 'Show Blocked', users__hide_blocked_users: 'Hide Blocked', users__show_left_users: 'Show Leavers (inactive)', users__hide_left_users: 'Hide Leavers (inactive)', users__dialog_block_title: 'Block Employee?', users__dialog_block_message: 'System access will be disabled.', users__dialog_block_message2: 'The employee will be removed from all chats (except those where they are the owner).', users__dialog_block_ok: 'Block', users__dialog_restore_title: 'Restore Employee?', users__dialog_restore_message: 'System access will be restored.', users__dialog_restore_message2: 'Add them to chats manually if required.', users__dialog_restore_ok: 'Restore', users__onboard_msg1: 'Project Contact List', users__onboard_msg2: 'After attaching chats, members are imported automatically. You’ll need to define who is who', user_edit__title_card: 'Edit employee', user_edit__btn: 'Apply', user_block__name: 'Name', user_block__company: 'Company', user_block__department: 'Department', user_block__role: 'Role', user_block__no_company: 'Not specified', user_status__user_leave: 'Inactive', user_status__user_pending: 'Consent pending', companies__dialog_delete_title: 'Delete company?', companies__dialog_delete_message: 'This action cannot be undone!', companies__dialog_delete_message2: 'Company employees will be moved to \'No Company\'', companies__dialog_delete_ok: 'Delete', companies__mask: 'Cloaking', companies__my_company: 'My company', companies__onboard_msg1: 'Add Companies', companies__onboard_msg2: 'Recommended for projects with employees from 3+ companies.', company_add__title_card: 'Add company', company_add__btn: 'Add', company_edit__title_card: 'Edit company', company_edit__btn: 'Apply', company_edit__my_company: 'My company', company_edit__my_company_href: 'Edit template', company_block__name: 'Name', company_block__error_name: 'Field is required', company_block__description: 'Description', mask__title: 'Companies cloaking ', mask__help_title: 'Cloaking ', mask__help_message1: 'Cloaking conceals a company by making its personnel appear as if they belong to other companies, except those listed as "Visible"', mask__help_message2: 'Use the Toggle to enable or disable cloaking. Configure exceptions using the "+" button.', mask__info_block: 'Your company\'s employees will see all companies, regardless of the cloaking settings.', mask__table_header_company: 'Company', mask__table_header_visible: 'Visible', mask__table_visible_none: 'None', mask__table_visible_all: 'All', mask__btn_ok: 'Apply', backup__files_search: 'Files search', backup__onboard_msg1: 'File backup', backup__onboard_msg2: 'Archived files (backup) from chats, tasks, and meetings.', account_helper__enter_email: 'Enter account e-mail', account_helper__email: 'E-mail', account_helper__confirm_email: 'Confirm e-mail', account_helper__confirm_email_message: 'Enter the Code from e-mail to continue. If you haven\'t received an e-mail with the Code, check the Spam folder.', account_helper__code: 'Code', account_helper__code_error: 'Incorrect code. Ensure your e-mail is correct and try again.', account_helper__agreement: 'Agreements', account_helper__agreement_btn: 'Agree', account_helper__set_password: 'Set password', account_helper__password: 'Password', account_helper__finish: 'Finish', account_helper__register_message1: 'Welcome!', account_helper__forgot_password_message1: 'Password set!', account_helper__change_password_message1: 'Password changed!', account_helper__change_method_message1: 'Login method changed!', account_helper__go_projects: 'Go to projects…', account_change_email__title: 'Change account e-mail', account_change_email__current_email: 'Current account e-mail', account_change_email__email: 'E-mail', account_change_email__confirm_current_email: 'Confirm current e-mail', account_change_email__confirm_email_message: 'Enter the Code from e-mail to continue. If you haven\'t received an e-mail with the Code, check the Spam folder.', account_change_email__code: 'Code', account_change_email__code_error: 'Incorrect code. Ensure your e-mail is correct and try again.', account_change_email__new_email: 'New account e-mail', account_change_email__different_email: 'New email must be different from the current one', account_change_email__confirm_new_email: 'Confirm new e-mail', account_change_email__set_password: 'Set password', account_change_email__password: 'Password', account_change_email__finish: 'Finish', account_change_email__finish_after_message: 'Done!', account_change_email__ok_message1: 'The email address has been successfully updated!', account_change_email__ok_message2: 'Go to Settings…', account__change_auth_message_2: 'After creating a user, all data from the Telegram account will be transferred to the new account.', account__change_auth_btn: 'Create account', account__change_auth_warning: 'WARNING!', account__change_auth_warning_message: 'Reverse data transfer is not possible.', account__chats: 'Chats', account__chats_active: 'Active', account__chats_unbound: 'Detached', account__chats_free: 'Free', account__chats_total: 'Total', account__subscribe: 'Subscription', account__subscribe_description: 'Manage connected chat limits', account__auth_change_method: 'Change sign-in method', account__auth_change_method_description: 'Login and password access (recommended for corporate accounts)', account__auth_change_password: 'Change account password', account__auth_change_password_description: 'Access to the email address used for system login is required', account__auth_change_account: 'Change account email', account__auth_change_account_description: 'Access to both current and new email addresses is required', account__storage: 'File storage', account__storage_description: 'Configure file storage', account__company_data: 'My company', account__company_data_description: 'Template for company card in new projects', account__settings: 'App Parametrs', account__settings_description: 'Text size, language, and more.', account__support: 'Support', account__support_description: 'Need help? Contact us!', account__3rd_party_software_description: 'List of third-party software packages included in the software', account__terms_of_use: 'Terms of use', account__privacy: 'Privacy Policy', account__consent_pd: 'Consent to the processing of my personal data', account__tariffs_info: 'Provision on subscription tariffs', account__stop_using: 'Opt-Out from Application Usage', account__stop_using_description: 'Includes Withdrawal of Consent for Personal Data Processing', account__stop_using_dialog_title: 'Refuse to Use the Application?', account__stop_using_dialog_message1: 'The action is irreversible - your data will become inaccessible!', account__stop_using_dialog_message2: 'This action also entails the withdrawal of Consent for Personal Data Processing.', account__stop_using_dialog_btn_ok: 'Confirm', account__change_password: 'Change password', account__change_auth_method: 'Change authorization method', account_company__title_card: 'My company', account_company__btn: 'Apply', forgot_password__password_recovery: 'Password recovery', settings__title: 'App Parametrs', settings__software_title: 'Application', settings__bot_title: 'Messages in chats (bot)', settings__language: 'Language', settings__display_mode: 'Display mode', settings__display_mode_only_mobile: 'Only for mobile devices', settings__display_mode_full: 'Full screen', settings__display_mode_window: 'Standard', settings__display_mode_android_warning: 'In full-screen mode, an initial tap brings up the system navigation bar. Following this, the app will respond to your input.', settings__font_size: 'Font size', settings__fontsize_small: 'Small', settings__fontsize_medium: 'Medium (default)', settings__fontsize_large: 'Large', settings__timezone: 'Time zone', settings__timezone_search: 'Search', subscribe__title: 'Subscription', subscribe__current_tariff_title: 'Current tariff', subscribe__current_tariff_date: 'Subscription is active until', subscribe__current_tariff_chat_limit: 'Rated (active) chats', subscribe__tariffs: 'Tariffs', subscribe__dialog_select_tariff_show: 'Change tariff', subscribe__dialog_select_tariff_title: 'Change tariff', subscribe__dialog_select_tariff_btn: 'Apply', subscribe__dialog_select_tariff_btn_cancel: 'Cancel', subscribe__dialog_select_tariff_recalc_msg: 'Tariff will be active until', subscribe__test_warning: 'App in early access', subscribe__test_warning_description: 'Tariff changes are currently locked', subscribe_tariffs__description: 'Unlimited users, projects and tasks on all tariffs', subscribe_tariffs__per_month: '/month', subscribe_tariffs__chats_max: 'max.', subscribe_tariffs__chats: 'chats', subscribe_tariffs__free_tax: 'FREE', subscribe__dialog_select_tariff_notes_title: 'Notes:', subscribe__dialog_select_tariff_notes_1: '1. Tariff changes are limited to once per day.', subscribe__dialog_select_tariff_notes_2: '2. To switch to the TEST tariff, please contact customer support.', subscribe__dialog_select_tariff_notes_3: '3. When changing a tariff, the balance of the unused period is recalculated. The total subscription validity period cannot exceed 730 days.', subscribe__dialog_select_tariff_notes_more: 'Learn more about tariff changes…', subscribe__dialog_select_tariff_warn_debt_msg_1: 'Tariff change is on hold', subscribe__dialog_select_tariff_warn_debt_msg_2: 'Renew your subscription to proceed', subscribe__dialog_select_tariff_warn_once_day_msg_1: 'Daily tariff change limit reached', subscribe__dialog_select_tariff_warn_once_day_msg_2: 'Try again tomorrow', subscribe__tariffs_interval: 'Subscription period', subscribe__tariffs_interval_renewal: 'Renewal period', subscribe__1month: '1 month', subscribe__3months: '3 months', subscribe__1year: '1 year', subscribe__30days: '30 days', subscribe__91days: '91 days', subscribe__365days: '365 days', subscribe__tariffs_period_notes: 'Switching plans will recalculate your unused billing period. The total subscription term cannot exceed 730 days.', subscribe__plans_period_notes_more_info: 'More…', suscribe__credit_from: 'For period since', suscribe__credit_description: 'This amount will be added to your renewal payment.', subscribe__promocode_description: 'Activate free period', subscribe__promocode: 'Promo code', subscribe__promocode_success: 'Promo code successfully applied!', subscribe__promocode_fail: 'Promo code is invalid!', subscribe__pay: 'Subscribe for', subscribe__pay_renew: 'Renew for', subscribe__tariff_exp: 'exp.', subscribe_corp_dialog__btn: 'Terms for individual entrepreneurs and legal entities', subscribe_corp_dialog__title: 'Terms for individual entrepreneurs and legal entities', subscribe_corp_dialog__tariffs_title: 'Base plans (for companies in Russia)', subscribe_corp_dialog__notes: 'Notes:', subscribe_corp_dialog__doc: '1. Payment via bank transfer (service agreement). Closing documents are provided.', subscribe_corp_dialog__min_period: '2. Minimum payment period: 3 months.', subscribe_corp_dialog__sale: '3. 15% discount for annual payments.', subscribe_corp_dialog__sale_contact: 'To receive a commercial proposal (invoice), please contact us via email', subscribe_corp_dialog__tid: 'Include your technical ID (tID) in the message', support__title: 'Support', support__ask_question: 'Ask Question', support__work_time_text: 'Support is available on weekdays', support__work_time_time: '10:00 - 19:00 (Moscow, GMT+3)', support__or: 'or contact us via email', storage__title: 'File storage', storage__select_dialog_title: 'Add storage', storage__select_dialog_header_description: 'New files will be saved to the selected service', storage__telegram: 'Telegram', storage__telegram_description: 'Based on a hidden chat', storage__yandex_disk: 'Yandex Disk', storage__yandex_disk_description: 'Files up to 50 MB', storage__google_drive: 'Google Drive', storage__google_drive_description: 'Files up to 50 MB', storage__onboard_msg1: 'Add external storage', storage__onboard_msg2: 'To enable uploading larger files', storage__storage_active: 'Active', storage__storage_passive: 'Archived', storage__storage_connect: 'Linked', storage__storage_system: 'System (based on Telegram chat)', storage__now: 'Present', storage__max_file_size: 'Max attachment', storage__total_space: 'Total space', storage__available_space: 'Available space', storage__app_files_size: 'App files', storage__storage_delete: 'Delete', storage__storage_activate: 'Activate', storage__storage_migrate: 'Copy archive', storage__delete_dialog_title: 'Delete storage?', storage__delete_dialog_message: 'Files will remain in the storage but will be inaccessible in the app', storage__delete_dialog_ok: 'Delete', storage__migrate_dialog_title: 'Copy archive?', storage__migrate_dialog_message1: 'Files from archived storages (except Telegram) will be copied to the active storage.', storage__migrate_dialog_message2: 'The process may take some time. The bot will notify you when it’s ready.', storage__migrate_dialog_ok: 'Copy', error404: 'Oops. Nothing here…', agreements__title: 'Agreements', agreements__description: 'To use the application:', agreements__description_update: 'The documents have been significantly updated.', agreements__checkbox_agreement_terms: 'I accept the', agreements__checkbox_agreement_terms_doc: 'Terms of Use', agreements__checkbox_agreement_consent: 'I', agreements__checkbox_agreement_consent_doc: 'consent to the processing of my personal data', agreements__checkbox_agreement_privacy: 'and accept the', agreements__checkbox_agreement_privacy_doc: 'Privacy Policy', agreements__btn_agree: 'Agree and continue', agreements__btn_decline: 'Decline', agreements__btn_decline_description: '(close app)', only_telegram__continue: 'Continue', input_rules__require: 'Field is required', input_rules__incorrect_email: 'Please enter a valid email address', input_rules__password_require: 'At least 8 characters', input_rules__middle_text: 'Max 60 characters', input_rules__long_text: 'Max 250 characters', input_rules__editor_text: 'Maximum content size exceeded', instance_close_dialog__title: 'App is open in another window', instance_close_dialog__description: 'Please switch to the most recently opened window. This one can be closed.', instance_close_dialog__btn: 'Close', telegram_auth_error__title: 'Session expired', telegram_auth_error__description: 'Restart the app to continue', telegram_auth_error__btn: 'Close' } \ No newline at end of file diff --git a/src/i18n/ru-RU/index.ts b/src/i18n/ru-RU/index.ts index d632446..aa9570f 100644 --- a/src/i18n/ru-RU/index.ts +++ b/src/i18n/ru-RU/index.ts @@ -1 +1 @@ -export default { EN: 'EN', RU: 'RU', '': '', continue: 'Продолжить', back: 'Назад', close: 'Закрыть', cancel: 'Отмена', code: 'Код', month: 'мес.', months: 'мес.', slogan: 'Работайте вместе - это волшебство!', B: 'Б', kB: 'КБ', MB: 'МБ', GB: 'ГБ', TB: 'ТБ', login__email: 'Электронная почта', login__password: 'Пароль', login__forgot_password: 'Забыли пароль?', login__sign_in: 'Войти', login__or_continue_as: 'или продолжить', login__register: 'Зарегистрироваться', login__register_title: 'Регистрация', projects__title: 'Проекты', projects__search: 'Поиск', projects__show_archive: 'Показать архив', projects__hide_archive: 'Скрыть архив', projects__dialog_archive_title: 'Отправить проект в архив?', projects__dialog_archive_message: 'Отслеживание чатов будет остановлено.', projects__dialog_archive_message2: 'Данные из чатов за период архивации будут утеряны!', projects__dialog_archive_ok: 'В архив', projects__dialog_restore_title: 'Восстановить проект из архива?', projects__dialog_restore_message: 'Отслеживание чатов будет восстановлено.', projects__dialog_restore_message2: 'При восстановлении данные из чатов за период архивации не будут добавлены!', projects__dialog_restore_ok: 'Восстановить', projects__lets_start: 'Создайте проект', projects__lets_start_description: 'Объедините несколько чатов в одном месте', header__to_projects: 'Проекты', project__chats: 'Чаты', project__users: 'Команда', project__companies: 'Компании', project_create__title_card: 'Новый проект', project_create__btn: 'Создать', project_edit__title_card: 'Редактировать проект', project_edit__btn: 'Сохранить', project_block__project_name: 'Название', project_block__project_description: 'Описание', project_block__project_chat_info: 'Дополнение для закрепленных сообщений', project_block__error_name: 'Поле обязательно к заполнению', chats__search: 'Поиск', chats__show_obsolete_chats: 'Показать открепленные и удаленные чаты', chats__hide_obsolete_chats: 'Скрыть открепленные и удаленные чаты', chats__attach_dialog_title: 'Подключение чата', chats__attach_chat_private_title: 'Приватный режим', chats__attach_chat_private_title_description: 'Без доступа к сообщениям в чате. Файлы в чатах не отслеживаются. Только уведомления', chats__attach_private_chat: 'Добавить чат', chats__attach_private_chat_description: 'Вы должны иметь права на добавление участников в чат', chats__send_private_chat: 'Отправить запрос', chats__send_private_chat_description: 'Для участника чата с правом добавлять других участников', chats__attach_chat_title: 'Полный функционал', chats__attach_chat_title_description: 'Предоставлен доступ к сообщениям в чате. Файлы в чатах отслеживаются и архивируются', chats__attach_chat: 'Добавить чат', chats__attach_chat_description: 'Вы должны быть администратором чата', chats__send_chat: 'Отправить запрос', chats__send_chat_description: 'Для администратора чата', chats_disabled_FAB: 'Добавление чатов возможно только в приложении Telegram', chats__disable_add_chat: 'Добавление чата невозможно - измените план подписки или открепите другие чаты', chats__disable_add_chat_description: 'Измените тарифный план или отключите от отслеживания несколько чатов', chats__send_chat_title: 'Для присоединения чата к приложению tgCrew необходимо добавить в него бота с помощью ссылки:', chats__dialog_unlink_title: 'Открепить чат?', chats__dialog_unlink_message: 'Отслеживание чата будет прекращено.', chats__dialog_unlink_message2: 'Все задачи и совещания в чате будут от него откреплены.', chats__dialog_unlink_ok: 'Открепить', chats__onboard_msg1: 'Прикрепите чаты к проекту', chats__onboard_msg2: 'Контроль чатов осуществляется только с момента прикрепления.', chats__help_chat_type: 'Типы чатов', chats__filters: 'Фильтры', chats__filters_reset: 'Сбросить фильтры', chats__filters_type: 'Тип подключения чата', chats__filters_continue: 'Продолжить', chat_card__title: 'Карточка чата', chat_card__go_chat: 'Перейти к чату', chat_card__members: 'Участники', chat_card__owner: 'Владелец чата', chat_page__user_blocked: 'Заблокирован', chat__help_title: 'Типы подключения чатов', chat_type__label_no_access: 'Нет доступа', chat_type__description_no_access: 'Доступа к чату нет', chat_type__label_notify: 'Приватный режим', chat_type__description_notify: 'Без доступа к сообщениям в чате. Только уведомления', chat_type__label_full: 'Полный функционал', chat_type__description_full: 'Предоставлен доступ к сообщениям в чате', chat_type__label_new: 'Подключен впервые', chat_type__description_new: 'Приложение управляет всеми своими сообщениями', chat_type__label_reconnect: 'Переподключен', chat_type__description_reconnect: 'Чат был отлючен и повторно подключен. Приложение не управляет своими сообщениями до переподключения', chat_type__label_detach: 'Отключен', chat_type__description_detach: 'Приложение не отслеживает чат', chat_type__label_delete: 'Удален', chat_type__description_delete: 'Чат удален или бот исключен из чата. Приложение не отслеживает чат', chat_type__dialog_func_title: 'В приватном режиме не доступно:', chat_type__dialog_func_point1: 'Учет и резервное копирование файлов из чата.', chat_type__dialog_func_point2: 'Возможность исключить пользователя из чата, если он покинул проект.', chat_type__dialog_func_point3: 'Закрепление информационных сообщений.', chat_type__dialog_administrator_rights: 'Для обеспечения полного функционала боту необходимы права администратора, вкл. "Блокировка пользователей".', users__search: 'Поиск', users__show_blocked_users: 'Показать заблокированных', users__hide_blocked_users: 'Скрыть заблокированных', users__show_left_users: 'Показать неактивных', users__hide_left_users: 'Скрыть неактивных', users__dialog_block_title: 'Заблокировать сотрудника?', users__dialog_block_message: 'Доступ к системе будет отключен.', users__dialog_block_message2: 'Сотрудник будет исключен из всех чатов (кроме тех, где он является владельцем).', users__dialog_block_ok: 'Заблокировать', users__dialog_restore_title: 'Восстановить сотрудника?', users__dialog_restore_message: 'Доступ к системе будет восстановлен.', users__dialog_restore_message2: 'При необходимости нужно добавить сотрудника в чаты вручную.', users__dialog_restore_ok: 'Восстановить', users__onboard_msg1: 'Адресная книга проекта', users__onboard_msg2: 'После прикрепления чатов их участники добавляются автоматически. Остается указать — кто есть кто. ', user_edit__title_card: 'Редактирование сотрудника', user_edit__btn: 'Сохранить', user_block__name: 'ФИО', user_block__company: 'Компания', user_block__department: 'Подразделение', user_block__role: 'Функционал (должность)', user_block__no_company: 'Не указано', user_status__user_leave: 'Неактивный', user_status__user_pending: 'Ожидание согласия', companies__dialog_delete_title: 'Удалить компанию?', companies__dialog_delete_message: 'Это действие нельзя отменить!', companies__dialog_delete_message2: 'Сотрудники компании будут помечены "Без компании".', companies__dialog_delete_ok: 'Удалить', companies__mask: 'Маскировка', companies__my_company: 'Моя компания', companies__onboard_msg1: 'Добавьте компании', companies__onboard_msg2: 'Рекомендуется, если в проекте участвуют сотрудники 3 и более компаний.', company_add__title_card: 'Добавить компанию', company_add__btn: 'Создать', company_edit__title_card: 'Редактировать компанию', company_edit__btn: 'Сохранить', company_edit__my_company: 'Моя компания', company_edit__my_company_hint: 'Заполнение формы преднастраивается в Настройках:', company_edit__my_company_href: 'Моя компания', company_block__name: 'Название', company_block__error_name: 'Поле обязательно к заполнению', company_block__description: 'Описание', mask__title: 'Маскировка компаний', mask__help_title: 'Маскировка', mask__help_message1: 'Маскировка позволяет скрывать компанию, представляя ее персонал как собственный для других компаний, кроме тех, кто есть в перечне исключений "Видно". ', mask__help_message2: 'Для включения и отключения маскировки используйте Переключатель. Настройка исключений осуществляется с помощью "+".', mask__info_block: 'Сотрудники вашей компании будут видеть все компании, независимо от настроек маскировки.', mask__table_header_company: 'Компания', mask__table_header_visible: 'Видно', mask__table_visible_none: 'Никому', mask__table_visible_all: 'Всем', mask__btn_ok: 'Сохранить', account_helper__enter_email: 'Введите электронную почту', account_helper__email: 'Электронная почта', account_helper__confirm_email: 'Подтверждение электронной почты', account_helper__confirm_email_message: 'Введите код из письма для продолжения. Если не получили письмо с кодом - проверьте папку Спам', account_helper__code: 'Код', account_helper__code_error: 'Был введен неверный код. Проверьте адрес электронной почты и повторите попытку.', account_helper__agreement: 'Соглашения', account_helper__agreement_btn: 'Подтвердить', account_helper__set_password: 'Установка пароля', account_helper__password: 'Пароль', account_helper__finish: 'Отправить', account_helper__register_message1: 'Добро пожаловать!', account_helper__forgot_password_message1: 'Пароль установлен!', account_helper__change_password_message1: 'Пароль изменен!', account_helper__change_method_message1: 'Способ входа в систему изменен!', account_helper__go_projects: 'Переходим к проектам…', account_change_email__title: 'Изменение адреса электронной почты учетной записи', account_change_email__current_email: 'Текущий адрес электронной почты ', account_change_email__email: 'Электронная почта', account_change_email__confirm_current_email: 'Подтверждение адреса текущей электронной почты', account_change_email__confirm_email_message: 'Введите код из письма для продолжения. Если не получили письмо с кодом - проверьте папку Спам', account_change_email__code: 'Код', account_change_email__code_error: 'Был введен неверный код. Проверьте адрес электронной почты и повторите попытку.', account_change_email__new_email: 'Новый адрес электронной почты ', account_change_email__confirm_new_email: 'Подтверждение адреса новой электронной почты', account_change_email__set_password: 'Установка пароля', account_change_email__password: 'Пароль', account_change_email__finish: 'Отправить', account_change_email__finish_after_message: 'Готово!', account_change_email__ok_message1: 'Адрес электронной почты успешно изменен!', account_change_email__ok_message2: 'Переходим в Настройки…', account__change_auth_message_2: 'После создания пользователя все данные с учетной записи Telegram будут перенесены на новую учетную запись.', account__change_auth_btn: 'Создать пользователя', account__change_auth_warning: 'ВНИМАНИЕ!', account__change_auth_warning_message: 'Обратный перенос данных не возможен.', account__chats: 'Чаты', account__chats_active: 'Активные', account__chats_unbound: 'Открепленные', account__chats_free: 'Бесплатные', account__chats_total: 'Всего', account__subscribe: 'Подписка', account__subscribe_description: 'С помощью подписки можно подключить дополнительные чаты.', account__auth_change_method: 'Изменить способ авторизации', account__auth_change_method_description: 'В случае корпоративного использования рекомендуется входить в систему, указав логин и пароль.', account__auth_change_password: 'Изменить пароль учетной записи', account__auth_change_password_description: 'Необходим доступ к электронной почте, используемой для входа в систему.', account__auth_change_account: 'Изменить электронную почту учетной записи', account__auth_change_account_description: 'Необходим доступ к текущей и новой электронной почте, используемым для входа в систему.', account__backup: 'Файловый архив', account__backup_description: 'Резервные копии файлов из чатов, задач и совещаний.', account__company_data: 'Моя компания', account__company_data_description: 'Описание будет автоматически добавляться в перечень компаний для новых проектов. ', account__manual: 'Инструкции', account__manual_description: 'Перейдите в наш Telegram-канал с обучающими видеороликами.', account__settings: 'Параметры приложения', account__settings_description: 'Размер текста, язык и т.п.', account__support: 'Поддержка', account__support_description: 'Есть вопросы - напишите нам!', account__3rd_party_software_description: 'Список сторонних программных пакетов, включённых в ПО', account__terms_of_use: 'Пользовательское соглашение', account__privacy: 'Политика конфиденциальности', account__consent_pd: 'Согласие на обработку персональных данных (ПДн)', account__tarrifs_info: 'Положение о Тарифных планах подписки', account__stop_using: 'Отказ от использования приложения', account__stop_using_description: 'Включает отзыв Согласия на обработку ПДн.', account__stop_using_dialog_title: 'Отказаться от использования приложения?', account__stop_using_dialog_message1: 'Действие необратимо - ваши данные станут недоступны!', account__stop_using_dialog_message2: 'Это также отзовет ваше Cогласие на обработку данных.', account__stop_using_dialog_btn_ok: 'Подтвердить', account__change_password: 'Изменить пароль', account__change_auth_method: 'Изменить способ авторизации', account_company__title_card: 'Моя компания', account_company__btn: 'Применить', forgot_password__password_recovery: 'Восстановление пароля', settings__title: 'Параметры приложения', settings__software_title: 'Приложение', settings__bot_title: 'Сообщения в чатах (бот)', settings__language: 'Язык', settings__display_mode: 'Режим отображения', settings__display_mode_full: 'Полноэкранный', settings__display_mode_window: 'В окне', settings__display_mode_android_warning: 'В полноэкранном режиме первое нажатие активирует кнопки управления телефоном. После этого приложение готово к работе.', settings__font_size: 'Размер текста', settings__fontsize_small: 'Мелкий', settings__fontsize_medium: 'Средний (по умолчанию)', settings__fontsize_large: 'Большой', settings__timezone: 'Часовой пояс', settings__timezone_search: 'Поиск', subscribe__title: 'Подписка', subscribe__current_tariff_title: 'Текущий тариф', subscribe__current_tariff_date: 'Подписка активна', subscribe__current_tariff_chat_limit: 'Тарифицируемые (активные) чаты', subscribe__tariffs: 'Тарифы', subscribe__dialog_select_tariff_show: 'Сменить тариф', subscribe__dialog_select_tariff_title: 'Сменить тариф', subscribe__dialog_select_tariff_btn: 'Применить', subscribe__dialog_select_tariff_btn_cancel: 'Закрыть', subscribe__dialog_select_tariff_recalc_msg: 'Тариф будет действовать до', subscribe_tariffs__description: 'Без ограничений: пользователи, проекты, задачи.', subscribe_tariffs__per_month: '/мес.', subscribe_tariffs__chats_max: 'макс.', subscribe_tariffs__chats: 'чатов', subscribe_tariffs__free_tax: 'БЕСПЛАТНО', subscribe__dialog_select_tariff_notes_title: 'Примечания:', subscribe__dialog_select_tariff_notes_1: '1. Смена тарифа не чаще 1 раза в день.', subscribe__dialog_select_tariff_notes_2: '2. Переключение на тариф TEST осуществляется через поддержку.', subscribe__dialog_select_tariff_notes_3: '3. При смене тарифа остаток неиспользованного периода пересчитывается. Общий срок действия подписки не может превышать 730 дней.', subscribe__dialog_select_tariff_notes_more: 'Подробнее о смене тарифа…', subscribe__dialog_select_tariff_warn_debt_msg_1: 'Смена тарифа временно недоступна', subscribe__dialog_select_tariff_warn_debt_msg_2: 'Необходимо продлить текущую подписку', subscribe__dialog_select_tariff_warn_once_day_msg_1: 'Смена тарифа на сегодня исчерпана', subscribe__dialog_select_tariff_warn_once_day_msg_2: 'Возможность будет доступна завтра', subscribe__tariffs_interval: 'Период подписки', subscribe__tariffs_interval_renewal: 'Продление подписки', subscribe__1month: '1 месяц', subscribe__3months: '3 месяца', subscribe__1year: '1 год', subscribe__30days: '30 дней', subscribe__91days: '91 день', subscribe__365days: '365 дней', subscribe__tariffs_period_notes: 'При смене тарифа остаток неиспользованного периода пересчитывается. Общий срок действия подписки не может превышать 730 дней.', subscribe__plans_period_notes_more_info: 'Подробнее…', suscribe__credit_from: 'За период с', suscribe__credit_description: 'Эта сумма будет добавлена к оплате за продление.', subscribe__promocode_description: 'Активируйте бесплатный период', subscribe__promocode: 'Промокод', subscribe__promocode_success: 'Промокод успешно применен!', subscribe__promocode_fail: 'Промокод не действителен!', subscribe__pay: 'Подключить за', subscribe__pay_renew: 'Продлить за', subscribe__tariff_exp: 'до', support__title: 'Поддержка', support__ask_question: 'Задайте вопрос', support__work_time_text: 'Поддержка оказывается в рабочие дни', support__work_time_time: '10:00 - 19:00 (Москва, GMT+3)', support__or: 'или напишите нам на электронную почту', backup__title: 'Файловый архив', backup__project: 'Проект', backup__files_search: 'Поиск файла', backup__empty_description: 'Файлов пока нет', error404: 'Тут ничего нет. Как вы сюда попали?', agreements__title: 'Соглашения', agreements__description: 'Для доступа к приложению:', agreements__description_update: 'Документы существенно обновлены.', agreements__checkbox_agreement_terms: 'Я принимаю', agreements__checkbox_agreement_terms_doc: 'Пользовательское соглашение', agreements__checkbox_agreement_consent: 'Я даю', agreements__checkbox_agreement_consent_doc: 'Согласие на обработку своих персональных данных', agreements__checkbox_agreement_privacy: 'и принимаю условия', agreements__checkbox_agreement_privacy_doc: 'Политики конфиденциальности', agreements__btn_agree: 'Подтвердить и продолжить', agreements__btn_decline: 'Отклонить', agreements__btn_decline_description: '(закрыть приложение)', only_telegram__continue: 'Продолжить', input_rules__require: 'Поле обязательно к заполнению', input_rules__incorrect_email: 'Адрес почты некорректный', input_rules__password_require: 'Мин. 8 символов', input_rules__middle_text: 'Макс. 60 символов ', input_rules__long_text: 'Макс. 250 символов ', input_rules__editor_text: 'Превышен максимальный размер содержимого', instance_close_dialog__title: 'Приложение запущено повторно', instance_close_dialog__description: ' Пожалуйста, перейдите в последнее открытое окно. Это можно закрыть.', instance_close_dialog__btn: 'Закрыть' } \ No newline at end of file +export default { EN: 'EN', RU: 'RU', '': '', continue: 'Продолжить', back: 'Назад', close: 'Закрыть', cancel: 'Отмена', copy: 'Скопировано!', code: 'Код', month: 'мес.', months: 'мес.', slogan: 'Работайте вместе!', B: 'Б', kB: 'КБ', MB: 'МБ', GB: 'ГБ', TB: 'ТБ', login__email: 'Электронная почта', login__password: 'Пароль', login__forgot_password: 'Забыли пароль?', login__sign_in: 'Войти', login__or_continue_as: 'или продолжить', login__register: 'Зарегистрироваться', login__register_title: 'Регистрация', projects__title: 'Проекты', projects__search: 'Поиск', projects__show_archive: 'Показать архив', projects__hide_archive: 'Скрыть архив', projects__dialog_archive_title: 'Отправить проект в архив?', projects__dialog_archive_message: 'Отслеживание чатов будет остановлено.', projects__dialog_archive_message2: 'Данные из чатов за период архивации будут утеряны!', projects__dialog_archive_ok: 'В архив', projects__dialog_restore_title: 'Восстановить проект из архива?', projects__dialog_restore_message: 'Отслеживание чатов будет восстановлено.', projects__dialog_restore_message2: 'При восстановлении данные из чатов за период архивации не будут добавлены!', projects__dialog_restore_ok: 'Восстановить', projects__lets_start: 'Создайте проект', projects__lets_start_description: 'Объедините несколько чатов в одном месте', header__to_projects: 'Проекты', project__chats: 'Чаты', project__users: 'Команда', project__companies: 'Компании', project__backup: 'Бэкап', project_create__title_card: 'Новый проект', project_create__btn: 'Создать', project_edit__title_card: 'Редактировать проект', project_edit__btn: 'Сохранить', project_block__project_name: 'Название', project_block__project_description: 'Описание', project_block__project_chat_info: 'Дополнение для закрепленных сообщений', project_block__error_name: 'Поле обязательно к заполнению', chats__search: 'Поиск', chats__show_obsolete_chats: 'Показать открепленные и удаленные чаты', chats__hide_obsolete_chats: 'Скрыть открепленные и удаленные чаты', chats__attach_dialog_title: 'Подключение чата', chats__attach_chat_private_title: 'Приватный режим', chats__attach_chat_private_title_description: 'Без доступа к сообщениям в чате. Файлы в чатах не отслеживаются. Только уведомления', chats__attach_private_chat: 'Добавить чат', chats__attach_private_chat_description: 'Требуются права на добавление участников в чат', chats__send_private_chat: 'Отправить запрос', chats__send_private_chat_description: 'Участнику чата с правом добавления участников', chats__attach_chat_title: 'Полный функционал', chats__attach_chat_title_description: 'Предоставлен доступ к сообщениям в чате. Файлы в чатах отслеживаются и архивируются', chats__attach_chat: 'Добавить чат', chats__attach_chat_description: 'Вы должны быть администратором чата', chats__send_chat: 'Отправить запрос', chats__send_chat_description: 'Администратору чата', chats__show_manual_connect_chat: 'Ручное подключение', chats__hide_manual_connect_chat: 'Скрыть', chats__manual_connect_chat_subtitle: 'Для продвинутых пользователей', chats__manual_connect_chat_btn: 'Добавить чат вручную', chats__manual_connect_chat_description: 'Бот подключается как участник (не требуются временные права администратора чата)', chats_disabled_FAB: 'Добавление чатов возможно только в приложении Telegram', chats__disable_add_chat: 'Добавление чата невозможно - измените план подписки или открепите другие чаты', chats__disable_add_chat_description: 'Измените тарифный план или отключите от отслеживания несколько чатов', chats__send_chat_title: 'Для присоединения чата к приложению tgCrew необходимо добавить в него бота с помощью ссылки:', chats__dialog_unlink_title: 'Открепить чат?', chats__dialog_unlink_message: 'Отслеживание чата будет прекращено.', chats__dialog_unlink_message2: 'Все задачи и совещания в чате будут от него откреплены.', chats__dialog_unlink_ok: 'Открепить', chats__onboard_msg1: 'Прикрепите чаты к проекту', chats__onboard_msg2: 'Контроль чатов осуществляется только с момента прикрепления.', chats__help_chat_type: 'Типы чатов', chats__filters: 'Фильтры', chats__filters_reset: 'Сбросить фильтры', chats__filters_type: 'Тип подключения чата', chats__filters_continue: 'Продолжить', chat_card__title: 'Карточка чата', chat_card__go_chat: 'Перейти к чату', chat_card__members: 'Участники', chat_card__owner: 'Владелец чата', chat_page__user_blocked: 'Заблокирован', chat__help_title: 'Типы подключения чатов', chat_type__label_no_access: 'Нет доступа', chat_type__description_no_access: 'Доступа к чату нет', chat_type__label_notify: 'Приватный режим', chat_type__description_notify: 'Без доступа к сообщениям в чате — только уведомления. Недоступны: резервное копирование файлов, исключение участников и закрепление сообщений.', chat_type__label_full: 'Полный функционал', chat_type__description_full: 'Предоставлен доступ к сообщениям в чате. Для работы боту требуются права администратора, вкл. «Блокировка пользователей».', chat_type__label_new: 'Подключен впервые', chat_type__description_new: 'Приложение управляет всеми своими сообщениями.', chat_type__label_reconnect: 'Переподключен', chat_type__description_reconnect: 'Чат был отключен и повторно подключен. Приложение не управляет своими сообщениями до переподключения.', chat_type__label_detach: 'Отключен', chat_type__description_detach: 'Приложение не отслеживает чат.', chat_type__label_delete: 'Удален', chat_type__description_delete: 'Чат удален или бот исключен из чата. Приложение не отслеживает чат.', users__search: 'Поиск', users__show_blocked_users: 'Показать заблокированных', users__hide_blocked_users: 'Скрыть заблокированных', users__show_left_users: 'Показать неактивных', users__hide_left_users: 'Скрыть неактивных', users__dialog_block_title: 'Заблокировать сотрудника?', users__dialog_block_message: 'Доступ к системе будет отключен.', users__dialog_block_message2: 'Сотрудник будет исключен из всех чатов (кроме тех, где он является владельцем).', users__dialog_block_ok: 'Заблокировать', users__dialog_restore_title: 'Восстановить сотрудника?', users__dialog_restore_message: 'Доступ к системе будет восстановлен.', users__dialog_restore_message2: 'При необходимости нужно добавить сотрудника в чаты вручную.', users__dialog_restore_ok: 'Восстановить', users__onboard_msg1: 'Адресная книга проекта', users__onboard_msg2: 'После прикрепления чатов их участники добавляются автоматически. Остается указать — кто есть кто. ', user_edit__title_card: 'Редактирование сотрудника', user_edit__btn: 'Сохранить', user_block__name: 'ФИО', user_block__company: 'Компания', user_block__department: 'Подразделение', user_block__role: 'Функционал (должность)', user_block__no_company: 'Не указано', user_status__user_leave: 'Неактивный', user_status__user_pending: 'Ожидание согласия', companies__dialog_delete_title: 'Удалить компанию?', companies__dialog_delete_message: 'Это действие нельзя отменить!', companies__dialog_delete_message2: 'Сотрудники компании будут помечены "Без компании".', companies__dialog_delete_ok: 'Удалить', companies__mask: 'Маскировка', companies__my_company: 'Моя компания', companies__onboard_msg1: 'Добавьте компании', companies__onboard_msg2: 'Рекомендуется, если в проекте участвуют сотрудники 3 и более компаний.', company_add__title_card: 'Добавить компанию', company_add__btn: 'Создать', company_edit__title_card: 'Редактирование компании', company_edit__btn: 'Сохранить', company_edit__my_company: 'Моя компания', company_edit__my_company_href: 'Редактирование шаблона', company_block__name: 'Название', company_block__error_name: 'Поле обязательно к заполнению', company_block__description: 'Описание', mask__title: 'Маскировка компаний', mask__help_title: 'Маскировка', mask__help_message1: 'Маскировка позволяет скрывать компанию, представляя ее персонал как собственный для других компаний, кроме тех, кто есть в перечне исключений "Видно". ', mask__help_message2: 'Для включения и отключения маскировки используйте Переключатель. Настройка исключений осуществляется с помощью "+".', mask__info_block: 'Сотрудники вашей компании будут видеть все компании, независимо от настроек маскировки.', mask__table_header_company: 'Компания', mask__table_header_visible: 'Видно', mask__table_visible_none: 'Никому', mask__table_visible_all: 'Всем', mask__btn_ok: 'Сохранить', backup__files_search: 'Поиск файла', backup__onboard_msg1: 'Файловый архив', backup__onboard_msg2: 'Резервные копии файлов (бэкап) из чатов, задач и совещаний.', account_helper__enter_email: 'Введите электронную почту', account_helper__email: 'Электронная почта', account_helper__confirm_email: 'Подтверждение электронной почты', account_helper__confirm_email_message: 'Введите код из письма для продолжения. Если не получили письмо с кодом - проверьте папку Спам', account_helper__code: 'Код', account_helper__code_error: 'Был введен неверный код. Проверьте адрес электронной почты и повторите попытку.', account_helper__agreement: 'Соглашения', account_helper__agreement_btn: 'Подтвердить', account_helper__set_password: 'Установка пароля', account_helper__password: 'Пароль', account_helper__finish: 'Отправить', account_helper__register_message1: 'Добро пожаловать!', account_helper__forgot_password_message1: 'Пароль установлен!', account_helper__change_password_message1: 'Пароль изменен!', account_helper__change_method_message1: 'Способ входа в систему изменен!', account_helper__go_projects: 'Переходим к проектам…', account_change_email__title: 'Изменение адреса электронной почты учетной записи', account_change_email__current_email: 'Текущий адрес электронной почты ', account_change_email__email: 'Электронная почта', account_change_email__confirm_current_email: 'Подтверждение адреса текущей электронной почты', account_change_email__confirm_email_message: 'Введите код из письма для продолжения. Если не получили письмо с кодом - проверьте папку Спам', account_change_email__code: 'Код', account_change_email__code_error: 'Был введен неверный код. Проверьте адрес электронной почты и повторите попытку.', account_change_email__new_email: 'Новый адрес электронной почты ', account_change_email__different_email: 'Новый адрес не должен совпадать с текущим', account_change_email__confirm_new_email: 'Подтверждение адреса новой электронной почты', account_change_email__set_password: 'Установка пароля', account_change_email__password: 'Пароль', account_change_email__finish: 'Отправить', account_change_email__finish_after_message: 'Готово!', account_change_email__ok_message1: 'Адрес электронной почты успешно изменен!', account_change_email__ok_message2: 'Переходим в Настройки…', account__change_auth_message_2: 'После создания пользователя все данные с учетной записи Telegram будут перенесены на новую учетную запись.', account__change_auth_btn: 'Создать пользователя', account__change_auth_warning: 'ВНИМАНИЕ!', account__change_auth_warning_message: 'Обратный перенос данных не возможен.', account__chats: 'Чаты', account__chats_active: 'Активные', account__chats_unbound: 'Открепленные', account__chats_free: 'Бесплатные', account__chats_total: 'Всего', account__subscribe: 'Подписка', account__subscribe_description: 'Управление количеством подключаемых чатов', account__auth_change_method: 'Изменить способ входа', account__auth_change_method_description: 'Использование логина и пароля (рекомендуется для корпоративных аккаунтов)', account__auth_change_password: 'Изменить пароль', account__auth_change_password_description: 'Необходим доступ к электронной почте, используемой для входа в систему', account__auth_change_account: 'Изменить электронную почту', account__auth_change_account_description: 'Необходим доступ к текущему и новому адресам электронной почты', account__storage: 'Файловое хранилище', account__storage_description: 'Настройка хранения файлов', account__company_data: 'Моя компания', account__company_data_description: 'Шаблон для карточки компании в новых проектах ', account__settings: 'Параметры приложения', account__settings_description: 'Размер текста, язык и т.п.', account__support: 'Поддержка', account__support_description: 'Есть вопросы - напишите нам!', account__3rd_party_software_description: 'Список сторонних программных пакетов, включённых в ПО', account__terms_of_use: 'Пользовательское соглашение', account__privacy: 'Политика конфиденциальности', account__consent_pd: 'Согласие на обработку персональных данных (ПДн)', account__tariffs_info: 'Положение о Тарифных планах подписки', account__stop_using: 'Отказ от использования приложения', account__stop_using_description: 'Включает отзыв Согласия на обработку ПДн', account__stop_using_dialog_title: 'Отказаться от использования приложения?', account__stop_using_dialog_message1: 'Действие необратимо - ваши данные станут недоступны!', account__stop_using_dialog_message2: 'Это также отзовет ваше Cогласие на обработку данных.', account__stop_using_dialog_btn_ok: 'Подтвердить', account__change_password: 'Изменить пароль', account__change_auth_method: 'Изменить способ авторизации', account_company__title_card: 'Моя компания', account_company__btn: 'Применить', forgot_password__password_recovery: 'Восстановление пароля', settings__title: 'Параметры приложения', settings__software_title: 'Приложение', settings__bot_title: 'Сообщения в чатах (бот)', settings__language: 'Язык', settings__display_mode: 'Режим отображения', settings__display_mode_only_mobile: 'Только для мобильных устройств', settings__display_mode_full: 'Полноэкранный', settings__display_mode_window: 'В окне', settings__display_mode_android_warning: 'В полноэкранном режиме первое нажатие активирует кнопки управления телефоном. После этого приложение готово к работе.', settings__font_size: 'Размер текста', settings__fontsize_small: 'Мелкий', settings__fontsize_medium: 'Средний (по умолчанию)', settings__fontsize_large: 'Большой', settings__timezone: 'Часовой пояс', settings__timezone_search: 'Поиск', subscribe__title: 'Подписка', subscribe__current_tariff_title: 'Текущий тариф', subscribe__current_tariff_date: 'Подписка активна', subscribe__current_tariff_chat_limit: 'Тарифицируемые (активные) чаты', subscribe__tariffs: 'Тарифы', subscribe__dialog_select_tariff_show: 'Сменить тариф', subscribe__dialog_select_tariff_title: 'Сменить тариф', subscribe__dialog_select_tariff_btn: 'Применить', subscribe__dialog_select_tariff_btn_cancel: 'Закрыть', subscribe__dialog_select_tariff_recalc_msg: 'Тариф будет действовать до', subscribe__test_warning: 'Режим тестирования приложения', subscribe__test_warning_description: 'Смена тарифов временно ограничена', subscribe_tariffs__description: 'Пользователи, проекты, задачи - без ограничений', subscribe_tariffs__per_month: '/мес.', subscribe_tariffs__chats_max: 'макс.', subscribe_tariffs__chats: 'чатов', subscribe_tariffs__free_tax: 'БЕСПЛАТНО', subscribe__dialog_select_tariff_notes_title: 'Примечания:', subscribe__dialog_select_tariff_notes_1: '1. Смена тарифа не чаще 1 раза в день.', subscribe__dialog_select_tariff_notes_2: '2. Переключение на тариф TEST осуществляется через поддержку.', subscribe__dialog_select_tariff_notes_3: '3. При смене тарифа остаток неиспользованного периода пересчитывается. Общий срок действия подписки не может превышать 730 дней.', subscribe__dialog_select_tariff_notes_more: 'Подробнее о смене тарифа…', subscribe__dialog_select_tariff_warn_debt_msg_1: 'Смена тарифа временно недоступна', subscribe__dialog_select_tariff_warn_debt_msg_2: 'Необходимо продлить текущую подписку', subscribe__dialog_select_tariff_warn_once_day_msg_1: 'Смена тарифа на сегодня исчерпана', subscribe__dialog_select_tariff_warn_once_day_msg_2: 'Возможность будет доступна завтра', subscribe__tariffs_interval: 'Период подписки', subscribe__tariffs_interval_renewal: 'Продление подписки', subscribe__1month: '1 месяц', subscribe__3months: '3 месяца', subscribe__1year: '1 год', subscribe__30days: '30 дней', subscribe__91days: '91 день', subscribe__365days: '365 дней', subscribe__tariffs_period_notes: 'При смене тарифа остаток неиспользованного периода пересчитывается. Общий срок действия подписки не может превышать 730 дней.', subscribe__plans_period_notes_more_info: 'Подробнее…', suscribe__credit_from: 'За период с', suscribe__credit_description: 'Эта сумма будет добавлена к оплате за продление.', subscribe__promocode_description: 'Активируйте бесплатный период', subscribe__promocode: 'Промокод', subscribe__promocode_success: 'Промокод успешно применен!', subscribe__promocode_fail: 'Промокод не действителен!', subscribe__pay: 'Подключить за', subscribe__pay_renew: 'Продлить за', subscribe__tariff_exp: 'до', subscribe_corp_dialog__btn: 'Условия для ИП и юридических лиц', subscribe_corp_dialog__title: 'Условия для ИП и юридических лиц', subscribe_corp_dialog__tariffs_title: 'Базовые тарифы (для компаний из России)', subscribe_corp_dialog__notes: 'Примечания:', subscribe_corp_dialog__doc: '1. Оплата по безналичному расчету (счет-договор). Предоставляются закрывающие документы.', subscribe_corp_dialog__min_period: '2. Минимальный период оплаты - 3 месяца.', subscribe_corp_dialog__sale: '3. Скидка при оплате за год - 15%.', subscribe_corp_dialog__sale_contact: 'Для получения коммерческого предложения (счета) напишите на электронную почту', subscribe_corp_dialog__tid: 'В письме укажите технический идентификатор пользователя tID', support__title: 'Поддержка', support__ask_question: 'Задайте вопрос', support__work_time_text: 'Поддержка оказывается в рабочие дни', support__work_time_time: '10:00 - 19:00 (Москва, GMT+3)', support__or: 'или напишите нам на электронную почту', storage__title: 'Файловое хранилище', storage__select_dialog_title: 'Добавить хранилище', storage__select_dialog_header_description: 'Новые файлы будут сохраняться в выбранном сервисе', storage__telegram: 'Telegram', storage__telegram_description: 'На базе скрытого чата', storage__yandex_disk: 'Яндекс Диск', storage__yandex_disk_description: 'Файлы до 50 Мб', storage__google_drive: 'Google Диск', storage__google_drive_description: 'Файлы до 50 Мб', storage__onboard_msg1: 'Добавить внешнее хранилище', storage__onboard_msg2: 'Для возможности загрузки файлов большего размера ', storage__storage_active: 'Активное', storage__storage_passive: 'Архивное', storage__storage_connect: 'Подкл.', storage__storage_system: 'Системное (на базе Telegram-чата)', storage__now: 'н.в.', storage__max_file_size: 'Макс. вложение', storage__total_space: 'Размер хранилища', storage__available_space: 'Доступно в хранилище', storage__app_files_size: 'Файлы приложения', storage__storage_delete: 'Удалить', storage__storage_activate: 'Активировать', storage__storage_migrate: 'Скопировать архив', storage__delete_dialog_title: 'Удалить хранилище?', storage__delete_dialog_message: 'Файлы останутся в хранилище, но будут недоступны в приложении', storage__delete_dialog_ok: 'Удалить', storage__migrate_dialog_title: 'Скопировать архив?', storage__migrate_dialog_message1: 'Файлы из архивных хранилищ (кроме Telegram) будут скопированы в активное. ', storage__migrate_dialog_message2: 'Процесс может занять некоторое время. Бот уведомит, когда все будет готово.', storage__migrate_dialog_ok: 'Скопировать', error404: 'Тут ничего нет. Как вы сюда попали?', agreements__title: 'Соглашения', agreements__description: 'Для доступа к приложению:', agreements__description_update: 'Документы существенно обновлены.', agreements__checkbox_agreement_terms: 'Я принимаю', agreements__checkbox_agreement_terms_doc: 'Пользовательское соглашение', agreements__checkbox_agreement_consent: 'Я даю', agreements__checkbox_agreement_consent_doc: 'Согласие на обработку своих персональных данных', agreements__checkbox_agreement_privacy: 'и принимаю условия', agreements__checkbox_agreement_privacy_doc: 'Политики конфиденциальности', agreements__btn_agree: 'Подтвердить и продолжить', agreements__btn_decline: 'Отклонить', agreements__btn_decline_description: '(закрыть приложение)', only_telegram__continue: 'Продолжить', input_rules__require: 'Поле обязательно к заполнению', input_rules__incorrect_email: 'Адрес почты некорректный', input_rules__password_require: 'Мин. 8 символов', input_rules__middle_text: 'Макс. 60 символов ', input_rules__long_text: 'Макс. 250 символов ', input_rules__editor_text: 'Превышен максимальный размер содержимого', instance_close_dialog__title: 'Приложение запущено повторно', instance_close_dialog__description: ' Пожалуйста, перейдите в последнее открытое окно. Это можно закрыть.', instance_close_dialog__btn: 'Закрыть', telegram_auth_error__title: 'Требуется повторный вход', telegram_auth_error__description: 'Для продожения перезапустите приложение', telegram_auth_error__btn: 'Закрыть' } \ No newline at end of file diff --git a/src/layouts/MainLayout.vue b/src/layouts/MainLayout.vue index 7eee427..21c896a 100644 --- a/src/layouts/MainLayout.vue +++ b/src/layouts/MainLayout.vue @@ -1,5 +1,4 @@ - - diff --git a/src/pages/AccountPage.vue b/src/pages/AccountPage.vue index 1e91220..5a659cd 100644 --- a/src/pages/AccountPage.vue +++ b/src/pages/AccountPage.vue @@ -21,17 +21,17 @@ - + {{ $t(item.name) }} - + {{ $t(item.description) }} @@ -77,14 +77,14 @@ { id: 2, name: 'account__auth_change_method', description: 'account__auth_change_method_description', icon: 'mdi-account-sync-outline', iconColor: 'primary', pathName: 'change_account_auth_method', display: !authStore.customer?.email }, { id: 3, name: 'account__auth_change_password', description: 'account__auth_change_password_description', icon: 'mdi-account-key-outline', iconColor: 'primary', pathName: 'change_account_password', display: !!authStore.customer?.email }, { id: 4, name: 'account__auth_change_account', description: 'account__auth_change_account_description', icon: 'mdi-account-switch-outline', iconColor: 'primary', pathName: 'change_account_email', display: !!authStore.customer?.email }, - { id: 5, name: 'account__backup', icon: 'mdi-file-restore-outline', description: 'account__backup_description', pathName: 'backup' }, - { id: 6, name: 'account__company_data', icon: 'mdi-account-group-outline', description: 'account__company_data_description', pathName: 'your_company' }, + { id: 5, name: 'account__storage', icon: 'mdi-folder-cog-outline', description: 'account__storage_description', iconColor: 'primary', pathName: 'storage' }, + { id: 6, name: 'account__company_data', icon: 'mdi-account-group-outline', description: 'account__company_data_description', iconColor: 'primary', pathName: 'your_company' }, { id: 7, name: 'account__settings', icon: 'mdi-cog-outline', description: 'account__settings_description', iconColor: 'info', pathName: 'settings' }, { id: 8, name: 'account__support', icon: 'mdi-lifebuoy', description: 'account__support_description', iconColor: 'info', pathName: 'support' }, { id: 9, name: 'account__terms_of_use', icon: 'mdi-book-open-variant-outline', description: '', iconColor: 'grey', pathName: 'terms' }, { id: 10, name: 'account__privacy', icon: 'mdi-lock-outline', description: '', iconColor: 'grey', pathName: 'privacy' }, { id: 11, name: 'account__consent_pd', icon: 'mdi-account-lock-outline', description: '', iconColor: 'grey', pathName: 'consent' }, - { id: 12, name: 'account__tarrifs_info', icon: 'mdi-star-circle-outline', description: '', iconColor: 'grey', pathName: 'tarrifs_info' }, + { id: 12, name: 'account__tariffs_info', icon: 'mdi-star-circle-outline', description: '', iconColor: 'grey', pathName: 'tariffs_info' }, { id: 14, name: 'account__stop_using', icon: 'mdi-close-box-outline', description: 'account__stop_using_description', iconColor: 'negative', pathName: 'stop_using' } ])) diff --git a/src/pages/ChatPage.vue b/src/pages/ChatPage.vue index ab41bba..888744f 100644 --- a/src/pages/ChatPage.vue +++ b/src/pages/ChatPage.vue @@ -17,7 +17,7 @@
diff --git a/src/pages/CompanyMaskPage.vue b/src/pages/CompanyMaskPage.vue index 9b86e04..79dc740 100644 --- a/src/pages/CompanyMaskPage.vue +++ b/src/pages/CompanyMaskPage.vue @@ -65,7 +65,7 @@ @@ -274,13 +274,11 @@ color: $green-14 !important; } - - :deep(.masked .q-icon) { color: red; } :deep(.unmasked .q-icon) { - color: 'brand'; + color: 'primary'; } diff --git a/src/pages/LoginPage.vue b/src/pages/LoginPage.vue index dd35238..417a55c 100644 --- a/src/pages/LoginPage.vue +++ b/src/pages/LoginPage.vue @@ -9,15 +9,15 @@ class="w100 flex justify-center items-center" style="min-height: 100vh;" > -
@@ -81,7 +81,7 @@ -
- - - - - - - {{ nameTgUser(tgUser) }} - -
+
-
+
@@ -141,15 +132,14 @@ import baseLogo from 'components/BaseLogo.vue' import { useInputRules } from 'composables/useInputRules' import { useAuthStore } from 'stores/auth' + import { useSettingsStore } from 'stores/settings' import { QInput } from 'quasar' - import pnGlass from 'components/pnGlass.vue' - import { nameTgUser } from 'utils/helpers' - import type { WebApp, WebAppUser } from '@twa-dev/types' + import type { WebApp } from '@twa-dev/types' const tg = inject('tg') as WebApp - const tgUser = tg.initDataUnsafe.user as WebAppUser | undefined const authStore = useAuthStore() + const settingsStore = useSettingsStore() const router = useRouter() const { inputRules } = useInputRules() @@ -199,13 +189,13 @@ } async function sendAuth() { - try { - void await authStore.loginWithCredentials(login.value, password.value) + try { + await authStore.loginWithCredentials(login.value, password.value, tg.initData, settingsStore.settings.locale) + await router.push({ name: 'projects' }) } catch (error) { - console.error(error) + console.error('Login failed:', error) } - await router.push({ name: 'projects' }) } async function forgotPwd() { diff --git a/src/pages/ProjectPage.vue b/src/pages/ProjectPage.vue index 818249f..b4122da 100644 --- a/src/pages/ProjectPage.vue +++ b/src/pages/ProjectPage.vue @@ -13,7 +13,8 @@ const tabs = [ { name: 'chats', label: 'project__chats', icon: 'mdi-chat' }, { name: 'users', label: 'project__users', icon: 'mdi-account-circle' }, - { name: 'companies', label: 'project__companies', icon: 'mdi-account-group' } + { name: 'companies', label: 'project__companies', icon: 'mdi-account-group' }, + { name: 'backup', label: 'project__backup', icon: 'mdi-folder-sync' } ] diff --git a/src/pages/ProjectsPage.vue b/src/pages/ProjectsPage.vue index e56dfda..1c25ce1 100644 --- a/src/pages/ProjectsPage.vue +++ b/src/pages/ProjectsPage.vue @@ -1,5 +1,5 @@ @@ -314,6 +320,10 @@ } } + const isScrolled = ref(false) + const onScroll = (pos: number) => { + isScrolled.value = pos > 1 + } diff --git a/src/pages/account/SubscribePage.vue b/src/pages/account/SubscribePage.vue index b487146..3d5132c 100644 --- a/src/pages/account/SubscribePage.vue +++ b/src/pages/account/SubscribePage.vue @@ -12,7 +12,7 @@ >
-
+
{{ $t('subscribe__current_tariff_title') }}
@@ -53,7 +53,7 @@
-
+
+ +
+ + {{ $t('subscribe_corp_dialog__btn') }} + +
+
+ + +
{{ $t('subscribe__test_warning') }}
+
{{ $t('subscribe__test_warning_description') }}
+
+
+ + +
+ {{ $t('subscribe_corp_dialog__sale_contact') }} + + {{ saleEmail }} + . + + {{ $t('subscribe_corp_dialog__tid') }} + + {{ customerTid }} + . + +
+ +
+ {{ $t('subscribe_corp_dialog__tariffs_title') }} +
+ + +
+
+ + {{ tariff.name }} + +
+ + {{ $t('subscribe_tariffs__chats_max') + ' ' + tariff.chat_limit }} + + + + {{ $t('subscribe_tariffs__chats')}} + +
+
+ +
+
+ {{ tariff.price + ' ₽' }} + + {{ $t('subscribe_tariffs__per_month') }} + +
+
+
+
+
+ +
+ {{ $t('subscribe_corp_dialog__notes') }} +
+ +
+ {{ $t('subscribe_corp_dialog__doc') }} +
+ +
+ {{ $t('subscribe_corp_dialog__min_period') }} +
+ +
+ {{ $t('subscribe_corp_dialog__sale') }} +
+