From bf6b1210417bdf4f59c8dd5d699a0f862bf356c8 Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Mon, 12 Feb 2024 00:10:38 +0800 Subject: [PATCH] feat: add i18n support #3 --- pnpm-lock.yaml | 758 +++++++++++++++++- src/client/components/DateFilter.tsx | 24 +- src/client/components/LanguageSelector.tsx | 73 ++ src/client/components/NoWorkspaceTip.tsx | 5 +- src/client/components/dashboard/AddButton.tsx | 40 +- src/client/components/dashboard/Dashboard.tsx | 14 +- .../dashboard/items/WebsiteOverviewItem.tsx | 4 +- .../modals/NotificationInfo/index.tsx | 12 +- .../NotificationInfo/strategies/apprise.tsx | 9 +- .../NotificationInfo/strategies/smtp.tsx | 27 +- .../NotificationInfo/strategies/telegram.tsx | 18 +- .../components/monitor/MonitorBadgeView.tsx | 18 +- .../components/monitor/MonitorDataChart.tsx | 12 +- .../components/monitor/MonitorDataMetrics.tsx | 18 +- .../components/monitor/MonitorEventList.tsx | 4 +- .../components/monitor/MonitorHealthBar.tsx | 8 +- src/client/components/monitor/MonitorInfo.tsx | 39 +- .../components/monitor/MonitorInfoEditor.tsx | 18 +- src/client/components/monitor/MonitorList.tsx | 6 +- .../components/monitor/MonitorListItem.tsx | 4 +- .../components/monitor/MonitorPicker.tsx | 4 +- .../monitor/StatusPage/EditForm.tsx | 23 +- .../monitor/StatusPage/Services.tsx | 4 +- .../components/monitor/StatusPage/index.tsx | 8 +- .../components/monitor/provider/custom.tsx | 14 +- .../components/monitor/provider/http.tsx | 16 +- .../components/monitor/provider/openai.tsx | 8 +- .../components/monitor/provider/ping.tsx | 5 +- .../components/monitor/provider/tcp.tsx | 7 +- .../components/monitor/provider/types.ts | 2 +- .../notification/NotificationPicker.tsx | 6 +- src/client/components/website/MetricCard.tsx | 4 +- .../components/website/MetricsTable.tsx | 3 +- src/client/components/website/WebsiteInfo.tsx | 28 +- src/client/components/website/WebsiteList.tsx | 29 +- .../components/website/WebsiteOnlineCount.tsx | 6 +- .../components/website/WebsiteOverview.tsx | 15 +- .../WebsiteVisitorMap/VisitorLeafletMap.tsx | 17 +- src/client/hooks/useGlobalRangeDate.tsx | 20 +- src/client/i18next-toolkit.config.ts | 44 + src/client/index.css | 1 + src/client/package.json | 4 + src/client/pages/Layout.tsx | 31 +- src/client/pages/Login.tsx | 10 +- src/client/pages/Monitor/Overview.tsx | 6 +- src/client/pages/Monitor/PageList.tsx | 6 +- src/client/pages/Monitor/index.tsx | 6 +- src/client/pages/Register.tsx | 10 +- src/client/pages/Servers.tsx | 82 +- src/client/pages/Settings/AuditLog.tsx | 8 +- .../pages/Settings/NotificationList.tsx | 10 +- src/client/pages/Settings/Profile.tsx | 26 +- src/client/pages/Settings/index.tsx | 9 +- src/client/pages/Website/Detail.tsx | 18 +- src/client/pages/Website/Map.tsx | 5 +- src/client/public/locales/de/flag.png | Bin 0 -> 269 bytes src/client/public/locales/de/translation.json | 218 +++++ src/client/public/locales/en/flag.png | Bin 0 -> 288 bytes src/client/public/locales/en/translation.json | 218 +++++ src/client/public/locales/fr/flag.png | Bin 0 -> 267 bytes src/client/public/locales/fr/translation.json | 218 +++++ src/client/public/locales/jp/flag.png | Bin 0 -> 450 bytes src/client/public/locales/jp/translation.json | 218 +++++ src/client/public/locales/ru/flag.png | Bin 0 -> 268 bytes src/client/public/locales/ru/translation.json | 218 +++++ src/client/public/locales/zh/flag.png | Bin 0 -> 1947 bytes src/client/public/locales/zh/translation.json | 218 +++++ 67 files changed, 2588 insertions(+), 326 deletions(-) create mode 100644 src/client/components/LanguageSelector.tsx create mode 100644 src/client/i18next-toolkit.config.ts create mode 100644 src/client/public/locales/de/flag.png create mode 100644 src/client/public/locales/de/translation.json create mode 100644 src/client/public/locales/en/flag.png create mode 100644 src/client/public/locales/en/translation.json create mode 100644 src/client/public/locales/fr/flag.png create mode 100644 src/client/public/locales/fr/translation.json create mode 100644 src/client/public/locales/jp/flag.png create mode 100644 src/client/public/locales/jp/translation.json create mode 100644 src/client/public/locales/ru/flag.png create mode 100644 src/client/public/locales/ru/translation.json create mode 100644 src/client/public/locales/zh/flag.png create mode 100644 src/client/public/locales/zh/translation.json diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 72d8215..d9b5a28 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,6 +66,9 @@ importers: '@antv/larkmap': specifier: ^1.4.13 version: 1.4.13(@antv/l7@2.20.14)(react-dom@18.2.0)(react@18.2.0) + '@i18next-toolkit/react': + specifier: ^1.0.4 + version: 1.0.4(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) '@loadable/component': specifier: ^5.16.3 version: 5.16.3(react@18.2.0) @@ -169,6 +172,9 @@ importers: specifier: ^4.4.1 version: 4.4.1(@types/react@18.2.21)(react@18.2.0) devDependencies: + '@i18next-toolkit/cli': + specifier: 1.0.1 + version: 1.0.1(typescript@5.2.2) '@types/leaflet': specifier: ^1.9.8 version: 1.9.8 @@ -1297,7 +1303,7 @@ packages: resolution: {integrity: sha512-gF7eD0s5+RuKQAncsb9W5YUDnRqze0xQrHbKSmuWlW3trV7a4iOD2GAeTsRdgbMaArdPvCcKkylnG0pYxGclJA==} dependencies: '@antv/l7-utils': 2.20.14 - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 '@mapbox/point-geometry': 0.1.0 '@mapbox/unitbezier': 0.0.0 eventemitter3: 4.0.7 @@ -1327,7 +1333,7 @@ packages: '@antv/g-device-api': 1.6.4 '@antv/l7-core': 2.20.14 '@antv/l7-utils': 2.20.14 - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 inversify: 5.1.1 reflect-metadata: 0.2.1 regl: 1.6.1 @@ -4021,6 +4027,12 @@ packages: dependencies: regenerator-runtime: 0.14.0 + /@babel/runtime@7.23.9: + resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + /@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} @@ -4261,7 +4273,7 @@ packages: '@babel/preset-env': 7.23.8(@babel/core@7.23.7) '@babel/preset-react': 7.23.3(@babel/core@7.23.7) '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 '@babel/runtime-corejs3': 7.23.8 '@babel/traverse': 7.23.7 '@docusaurus/cssnano-preset': 3.1.0 @@ -5432,6 +5444,15 @@ packages: dev: true optional: true + /@esbuild/aix-ppc64@0.20.0: + resolution: {integrity: sha512-fGFDEctNh0CcSwsiRPxiaqX0P5rq+AqE0SRhYGZ4PX46Lg1FNR6oCxJghf8YgY0WQEgQuh3lErUFE4KxLeRmmw==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm64@0.19.11: resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} engines: {node: '>=12'} @@ -5441,6 +5462,15 @@ packages: dev: true optional: true + /@esbuild/android-arm64@0.20.0: + resolution: {integrity: sha512-aVpnM4lURNkp0D3qPoAzSG92VXStYmoVPOgXveAUoQBWRSuQzt51yvSju29J6AHPmwY1BjH49uR29oyfH1ra8Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm@0.19.11: resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} engines: {node: '>=12'} @@ -5450,6 +5480,15 @@ packages: dev: true optional: true + /@esbuild/android-arm@0.20.0: + resolution: {integrity: sha512-3bMAfInvByLHfJwYPJRlpTeaQA75n8C/QKpEaiS4HrFWFiJlNI0vzq/zCjBrhAYcPyVPG7Eo9dMrcQXuqmNk5g==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64@0.19.11: resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} engines: {node: '>=12'} @@ -5459,6 +5498,15 @@ packages: dev: true optional: true + /@esbuild/android-x64@0.20.0: + resolution: {integrity: sha512-uK7wAnlRvjkCPzh8jJ+QejFyrP8ObKuR5cBIsQZ+qbMunwR8sbd8krmMbxTLSrDhiPZaJYKQAU5Y3iMDcZPhyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64@0.19.11: resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} engines: {node: '>=12'} @@ -5468,6 +5516,15 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64@0.20.0: + resolution: {integrity: sha512-AjEcivGAlPs3UAcJedMa9qYg9eSfU6FnGHJjT8s346HSKkrcWlYezGE8VaO2xKfvvlZkgAhyvl06OJOxiMgOYQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64@0.19.11: resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} engines: {node: '>=12'} @@ -5477,6 +5534,15 @@ packages: dev: true optional: true + /@esbuild/darwin-x64@0.20.0: + resolution: {integrity: sha512-bsgTPoyYDnPv8ER0HqnJggXK6RyFy4PH4rtsId0V7Efa90u2+EifxytE9pZnsDgExgkARy24WUQGv9irVbTvIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64@0.19.11: resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} engines: {node: '>=12'} @@ -5486,6 +5552,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-arm64@0.20.0: + resolution: {integrity: sha512-kQ7jYdlKS335mpGbMW5tEe3IrQFIok9r84EM3PXB8qBFJPSc6dpWfrtsC/y1pyrz82xfUIn5ZrnSHQQsd6jebQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64@0.19.11: resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} engines: {node: '>=12'} @@ -5495,6 +5570,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64@0.20.0: + resolution: {integrity: sha512-uG8B0WSepMRsBNVXAQcHf9+Ko/Tr+XqmK7Ptel9HVmnykupXdS4J7ovSQUIi0tQGIndhbqWLaIL/qO/cWhXKyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64@0.19.11: resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} engines: {node: '>=12'} @@ -5504,6 +5588,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm64@0.20.0: + resolution: {integrity: sha512-uTtyYAP5veqi2z9b6Gr0NUoNv9F/rOzI8tOD5jKcCvRUn7T60Bb+42NDBCWNhMjkQzI0qqwXkQGo1SY41G52nw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm@0.19.11: resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} engines: {node: '>=12'} @@ -5513,6 +5606,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm@0.20.0: + resolution: {integrity: sha512-2ezuhdiZw8vuHf1HKSf4TIk80naTbP9At7sOqZmdVwvvMyuoDiZB49YZKLsLOfKIr77+I40dWpHVeY5JHpIEIg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32@0.19.11: resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} engines: {node: '>=12'} @@ -5522,6 +5624,15 @@ packages: dev: true optional: true + /@esbuild/linux-ia32@0.20.0: + resolution: {integrity: sha512-c88wwtfs8tTffPaoJ+SQn3y+lKtgTzyjkD8NgsyCtCmtoIC8RDL7PrJU05an/e9VuAke6eJqGkoMhJK1RY6z4w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64@0.19.11: resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} engines: {node: '>=12'} @@ -5531,6 +5642,15 @@ packages: dev: true optional: true + /@esbuild/linux-loong64@0.20.0: + resolution: {integrity: sha512-lR2rr/128/6svngnVta6JN4gxSXle/yZEZL3o4XZ6esOqhyR4wsKyfu6qXAL04S4S5CgGfG+GYZnjFd4YiG3Aw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el@0.19.11: resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} engines: {node: '>=12'} @@ -5540,6 +5660,15 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el@0.20.0: + resolution: {integrity: sha512-9Sycc+1uUsDnJCelDf6ZNqgZQoK1mJvFtqf2MUz4ujTxGhvCWw+4chYfDLPepMEvVL9PDwn6HrXad5yOrNzIsQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64@0.19.11: resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} engines: {node: '>=12'} @@ -5549,6 +5678,15 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64@0.20.0: + resolution: {integrity: sha512-CoWSaaAXOZd+CjbUTdXIJE/t7Oz+4g90A3VBCHLbfuc5yUQU/nFDLOzQsN0cdxgXd97lYW/psIIBdjzQIwTBGw==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64@0.19.11: resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} engines: {node: '>=12'} @@ -5558,6 +5696,15 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64@0.20.0: + resolution: {integrity: sha512-mlb1hg/eYRJUpv8h/x+4ShgoNLL8wgZ64SUr26KwglTYnwAWjkhR2GpoKftDbPOCnodA9t4Y/b68H4J9XmmPzA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x@0.19.11: resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} engines: {node: '>=12'} @@ -5567,6 +5714,15 @@ packages: dev: true optional: true + /@esbuild/linux-s390x@0.20.0: + resolution: {integrity: sha512-fgf9ubb53xSnOBqyvWEY6ukBNRl1mVX1srPNu06B6mNsNK20JfH6xV6jECzrQ69/VMiTLvHMicQR/PgTOgqJUQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64@0.19.11: resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} engines: {node: '>=12'} @@ -5576,6 +5732,15 @@ packages: dev: true optional: true + /@esbuild/linux-x64@0.20.0: + resolution: {integrity: sha512-H9Eu6MGse++204XZcYsse1yFHmRXEWgadk2N58O/xd50P9EvFMLJTQLg+lB4E1cF2xhLZU5luSWtGTb0l9UeSg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64@0.19.11: resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} engines: {node: '>=12'} @@ -5585,6 +5750,15 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64@0.20.0: + resolution: {integrity: sha512-lCT675rTN1v8Fo+RGrE5KjSnfY0x9Og4RN7t7lVrN3vMSjy34/+3na0q7RIfWDAj0e0rCh0OL+P88lu3Rt21MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64@0.19.11: resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} engines: {node: '>=12'} @@ -5594,6 +5768,15 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64@0.20.0: + resolution: {integrity: sha512-HKoUGXz/TOVXKQ+67NhxyHv+aDSZf44QpWLa3I1lLvAwGq8x1k0T+e2HHSRvxWhfJrFxaaqre1+YyzQ99KixoA==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64@0.19.11: resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} engines: {node: '>=12'} @@ -5603,6 +5786,15 @@ packages: dev: true optional: true + /@esbuild/sunos-x64@0.20.0: + resolution: {integrity: sha512-GDwAqgHQm1mVoPppGsoq4WJwT3vhnz/2N62CzhvApFD1eJyTroob30FPpOZabN+FgCjhG+AgcZyOPIkR8dfD7g==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64@0.19.11: resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} engines: {node: '>=12'} @@ -5612,6 +5804,15 @@ packages: dev: true optional: true + /@esbuild/win32-arm64@0.20.0: + resolution: {integrity: sha512-0vYsP8aC4TvMlOQYozoksiaxjlvUcQrac+muDqj1Fxy6jh9l9CZJzj7zmh8JGfiV49cYLTorFLxg7593pGldwQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32@0.19.11: resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} engines: {node: '>=12'} @@ -5621,6 +5822,15 @@ packages: dev: true optional: true + /@esbuild/win32-ia32@0.20.0: + resolution: {integrity: sha512-p98u4rIgfh4gdpV00IqknBD5pC84LCub+4a3MO+zjqvU5MVXOc3hqR2UgT2jI2nh3h8s9EQxmOsVI3tyzv1iFg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64@0.19.11: resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} engines: {node: '>=12'} @@ -5630,6 +5840,15 @@ packages: dev: true optional: true + /@esbuild/win32-x64@0.20.0: + resolution: {integrity: sha512-NgJnesu1RtWihtTtXGFMU5YSE6JyyHPMxCwBZK7a6/8d31GuSo9l0Ss7w1Jw5QnKUawG6UEehs883kcXf5fYwg==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@faker-js/faker@5.5.3: resolution: {integrity: sha512-R11tGE6yIFwqpaIqcfkcg7AICXzFg14+5h5v0TfF/9+RMDL6jhzCy/pxHVOfbALGdtVYdt6JdR21tuxEgl34dw==} dev: false @@ -5639,6 +5858,13 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'} dev: true + /@gulpjs/to-absolute-glob@4.0.0: + resolution: {integrity: sha512-kjotm7XJrJ6v+7knhPaRgaT6q8F8K2jiafwYdNHLzmV0uGLuZY43FK6smNSHUPrhq5kX2slCUy+RGG/xGqmIKA==} + engines: {node: '>=10.13.0'} + dependencies: + is-negated-glob: 1.0.0 + dev: true + /@hapi/hoek@9.3.0: resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} @@ -5652,6 +5878,63 @@ packages: engines: {node: '>=10.13.0'} dev: true + /@i18next-toolkit/cli@1.0.1(typescript@5.2.2): + resolution: {integrity: sha512-mtijfqrx2egJnY9cpOlWfy266ZPQGtZQJO93jRMPjf14So5RH1yDPU4x3Xxa7ZpZy0pWS1Tu0OZX2VAlJ0k1OQ==} + hasBin: true + dependencies: + '@i18next-toolkit/extractor': 1.0.0 + '@i18next-toolkit/scanner': 1.0.0 + cosmiconfig: 9.0.0(typescript@5.2.2) + fs-extra: 11.2.0 + yargs: 17.7.2 + zod: 3.22.4 + transitivePeerDependencies: + - buffer + - typescript + dev: true + + /@i18next-toolkit/extractor@1.0.0: + resolution: {integrity: sha512-lVp6OCBwK8affgmD/zaFWl0dFofL4OTJJhcZSNEJVOj/v0K8swhaVbwz+e3K6rWuflrr1vcyr0nJQK2Nzmdp+g==} + dependencies: + crc: 4.3.2 + esbuild: 0.20.0 + fs-extra: 11.2.0 + gulp-sort: 2.0.0 + i18next-scanner: 4.4.0 + lodash.without: 4.4.0 + vinyl-fs: 4.0.0 + transitivePeerDependencies: + - buffer + dev: true + + /@i18next-toolkit/react@1.0.4(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ZhVIgath7x++jeBe83XRZReHp2VP6tLapVY3zRM0oWnUDaewcmIdKsemorzojqbw0jLorP8gKq4UNR4tMoiVTQ==} + peerDependencies: + '@types/react': ^18.2.55 + react: ^18.2.0 + dependencies: + '@types/react': 18.2.21 + crc: 4.3.2 + i18next: 23.8.2 + i18next-http-backend: 2.4.3 + react: 18.2.0 + react-i18next: 14.0.5(i18next@23.8.2)(react-dom@18.2.0)(react@18.2.0) + transitivePeerDependencies: + - buffer + - encoding + - react-dom + - react-native + dev: false + + /@i18next-toolkit/scanner@1.0.0: + resolution: {integrity: sha512-LqePe4Ez93BbbJDstrinAlBChSVU6C3Z+tvLW8sMztVqQTWAQUcKlCWTMjE10Wv/eJPmg957vZZ/pvChZ/Yb1g==} + dependencies: + emoji-regex: 10.3.0 + fast-glob: 3.3.2 + fs-extra: 11.2.0 + ts-morph: 21.0.1 + dev: true + /@iarna/toml@2.2.5: resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} dev: true @@ -6301,20 +6584,20 @@ packages: /@probe.gl/env@3.6.0: resolution: {integrity: sha512-4tTZYUg/8BICC3Yyb9rOeoKeijKbZHRXBEKObrfPmX4sQmYB15ZOUpoVBhAyJkOYVAM8EkPci6Uw5dLCwx2BEQ==} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 dev: false /@probe.gl/log@3.6.0: resolution: {integrity: sha512-hjpyenpEvOdowgZ1qMeCJxfRD4JkKdlXz0RC14m42Un62NtOT+GpWyKA4LssT0+xyLULCByRAtG2fzZorpIAcA==} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 '@probe.gl/env': 3.6.0 dev: false /@probe.gl/stats@3.6.0: resolution: {integrity: sha512-JdALQXB44OP4kUBN/UrQgzbJe4qokbVF4Y8lkIA8iVCFnjVowWIgkD/z/0QO65yELT54tTrtepw1jScjKB+rhQ==} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 dev: false /@puppeteer/browsers@1.9.1: @@ -6367,7 +6650,7 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 rc-util: 5.38.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -6379,7 +6662,7 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -6389,7 +6672,7 @@ packages: resolution: {integrity: sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==} engines: {node: '>=8.x'} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 dev: false /@rc-component/mutate-observer@1.1.0(react-dom@17.0.2)(react@17.0.2): @@ -6427,7 +6710,7 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 classnames: 2.5.1 rc-util: 5.38.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 @@ -6441,7 +6724,7 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 classnames: 2.5.1 rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 @@ -6960,6 +7243,15 @@ packages: path-browserify: 1.0.1 dev: false + /@ts-morph/common@0.22.0: + resolution: {integrity: sha512-HqNBuV/oIlMKdkLshXd1zKBqNQCsuPEsgQOkfFQ/eUKjRlwndXW1AjN9LVkBEIukm00gGXSRmfkl0Wv5VXLnlw==} + dependencies: + fast-glob: 3.3.2 + minimatch: 9.0.3 + mkdirp: 3.0.1 + path-browserify: 1.0.1 + dev: true + /@tsconfig/docusaurus@1.0.5: resolution: {integrity: sha512-KM/TuJa9fugo67dTGx+ktIqf3fVc077J6jwHu845Hex4EQf7LABlNonP/mohDKT0cmncdtlYVHHF74xR/YpThg==} dev: true @@ -8715,6 +9007,16 @@ packages: mime-types: 2.1.35 negotiator: 0.6.3 + /acorn-class-fields@0.3.7(acorn@8.11.3): + resolution: {integrity: sha512-jdUWSFce0fuADUljmExz4TWpPkxmRW/ZCPRqeeUzbGf0vFUcpQYbyq52l75qGd0oSwwtAepeL6hgb/naRgvcKQ==} + engines: {node: '>=4.8.2'} + peerDependencies: + acorn: ^6 || ^7 || ^8 + dependencies: + acorn: 8.11.3 + acorn-private-class-elements: 0.2.7(acorn@8.11.3) + dev: true + /acorn-import-assertions@1.9.0(acorn@8.11.3): resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} peerDependencies: @@ -8730,6 +9032,47 @@ packages: acorn: 8.11.3 dev: true + /acorn-private-class-elements@0.2.7(acorn@8.11.3): + resolution: {integrity: sha512-+GZH2wOKNZOBI4OOPmzpo4cs6mW297sn6fgIk1dUI08jGjhAaEwvC39mN2gJAg2lmAQJ1rBkFqKWonL3Zz6PVA==} + engines: {node: '>=4.8.2'} + peerDependencies: + acorn: ^6.1.0 || ^7 || ^8 + dependencies: + acorn: 8.11.3 + dev: true + + /acorn-private-methods@0.3.3(acorn@8.11.3): + resolution: {integrity: sha512-46oeEol3YFvLSah5m9hGMlNpxDBCEkdceJgf01AjqKYTK9r6HexKs2rgSbLK81pYjZZMonhftuUReGMlbbv05w==} + engines: {node: '>=4.8.2'} + peerDependencies: + acorn: ^6 || ^7 || ^8 + dependencies: + acorn: 8.11.3 + acorn-private-class-elements: 0.2.7(acorn@8.11.3) + dev: true + + /acorn-stage3@4.0.0(acorn@8.11.3): + resolution: {integrity: sha512-BR+LaADtA6GTB5prkNqWmlmCLYmkyW0whvSxdHhbupTaro2qBJ95fJDEiRLPUmiACGHPaYyeH9xmNJWdGfXRQw==} + engines: {node: '>=4.8.2'} + peerDependencies: + acorn: ^7.4 || ^8 + dependencies: + acorn: 8.11.3 + acorn-class-fields: 0.3.7(acorn@8.11.3) + acorn-private-methods: 0.3.3(acorn@8.11.3) + acorn-static-class-features: 0.2.4(acorn@8.11.3) + dev: true + + /acorn-static-class-features@0.2.4(acorn@8.11.3): + resolution: {integrity: sha512-5X4mpYq5J3pdndLmIB0+WtFd/mKWnNYpuTlTzj32wUu/PMmEGOiayQ5UrqgwdBNiaZBtDDh5kddpP7Yg2QaQYA==} + engines: {node: '>=4.8.2'} + peerDependencies: + acorn: ^6.1.0 || ^7 || ^8 + dependencies: + acorn: 8.11.3 + acorn-private-class-elements: 0.2.7(acorn@8.11.3) + dev: true + /acorn-walk@8.3.2: resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} @@ -10052,11 +10395,20 @@ packages: mimic-response: 1.0.1 dev: false + /clone-stats@1.0.0: + resolution: {integrity: sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==} + dev: true + /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} dev: true + /clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + dev: true + /clsx@1.2.1: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} engines: {node: '>=6'} @@ -10079,6 +10431,10 @@ packages: resolution: {integrity: sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==} dev: false + /code-block-writer@12.0.0: + resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} + dev: true + /collapse-white-space@1.0.6: resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} dev: false @@ -10186,6 +10542,11 @@ packages: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} + /commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + dev: true + /common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} dev: true @@ -10608,6 +10969,22 @@ packages: path-type: 4.0.0 typescript: 5.2.2 + /cosmiconfig@9.0.0(typescript@5.2.2): + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + typescript: 5.2.2 + dev: true + /crc-32@1.2.2: resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} engines: {node: '>=0.8'} @@ -10622,6 +10999,15 @@ packages: readable-stream: 3.6.2 dev: true + /crc@4.3.2: + resolution: {integrity: sha512-uGDHf4KLLh2zsHa8D8hIQ1H/HtFQhyHrc0uhHBcoKGol/Xnb+MPYfUMw7cvON6ze/GUESTudKayDcJC5HnJv1A==} + engines: {node: '>=12'} + peerDependencies: + buffer: '>=6.0.3' + peerDependenciesMeta: + buffer: + optional: true + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -11690,6 +12076,10 @@ packages: resolution: {integrity: sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw==} dev: false + /ensure-type@1.5.1: + resolution: {integrity: sha512-Dxe+mVF4MupV6eueWiFa6hUd9OL9lIM2/LqR40k1P+dwG+G2il2UigXTU9aQlaw+Y/N0BKSaTofNw73htTbC5g==} + dev: true + /entities@1.1.2: resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} dev: false @@ -11706,6 +12096,10 @@ packages: engines: {node: '>=6'} dev: true + /eol@0.9.1: + resolution: {integrity: sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==} + dev: true + /errno@0.1.8: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true @@ -11838,6 +12232,37 @@ packages: '@esbuild/win32-x64': 0.19.11 dev: true + /esbuild@0.20.0: + resolution: {integrity: sha512-6iwE3Y2RVYCME1jLpBqq7LQWK3MW6vjV2bZy6gt/WrqkY+WE74Spyc0ThAOYpMtITvnjX09CrC6ym7A/m9mebA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.0 + '@esbuild/android-arm': 0.20.0 + '@esbuild/android-arm64': 0.20.0 + '@esbuild/android-x64': 0.20.0 + '@esbuild/darwin-arm64': 0.20.0 + '@esbuild/darwin-x64': 0.20.0 + '@esbuild/freebsd-arm64': 0.20.0 + '@esbuild/freebsd-x64': 0.20.0 + '@esbuild/linux-arm': 0.20.0 + '@esbuild/linux-arm64': 0.20.0 + '@esbuild/linux-ia32': 0.20.0 + '@esbuild/linux-loong64': 0.20.0 + '@esbuild/linux-mips64el': 0.20.0 + '@esbuild/linux-ppc64': 0.20.0 + '@esbuild/linux-riscv64': 0.20.0 + '@esbuild/linux-s390x': 0.20.0 + '@esbuild/linux-x64': 0.20.0 + '@esbuild/netbsd-x64': 0.20.0 + '@esbuild/openbsd-x64': 0.20.0 + '@esbuild/sunos-x64': 0.20.0 + '@esbuild/win32-arm64': 0.20.0 + '@esbuild/win32-ia32': 0.20.0 + '@esbuild/win32-x64': 0.20.0 + dev: true + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -11886,6 +12311,12 @@ packages: esrecurse: 4.3.0 estraverse: 4.3.0 + /esprima-next@5.8.4: + resolution: {integrity: sha512-8nYVZ4ioIH4Msjb/XmhnBdz5WRRBaYqevKa1cv9nGJdCehMbzZCPNEEnqfLCZVetUVrUPEcb5IYyu1GG4hFqgg==} + engines: {node: '>=12'} + hasBin: true + dev: true + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -12155,7 +12586,6 @@ packages: /fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - dev: false /fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} @@ -12541,6 +12971,14 @@ packages: minipass: 3.3.6 dev: true + /fs-mkdirp-stream@2.0.1: + resolution: {integrity: sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + streamx: 2.15.1 + dev: true + /fs-monkey@1.0.5: resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==} @@ -12722,6 +13160,20 @@ packages: dependencies: is-glob: 4.0.3 + /glob-stream@8.0.0: + resolution: {integrity: sha512-CdIUuwOkYNv9ZadR3jJvap8CMooKziQZ/QCSPhEb7zqfsEI5YnPmvca7IvbaVE3z58ZdUYD2JsU6AUWjL8WZJA==} + engines: {node: '>=10.13.0'} + dependencies: + '@gulpjs/to-absolute-glob': 4.0.0 + anymatch: 3.1.3 + fastq: 1.15.0 + glob-parent: 6.0.2 + is-glob: 4.0.3 + is-negated-glob: 1.0.0 + normalize-path: 3.0.0 + streamx: 2.15.1 + dev: true + /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} @@ -12904,6 +13356,12 @@ packages: resolution: {integrity: sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==} dev: false + /gulp-sort@2.0.0: + resolution: {integrity: sha512-MyTel3FXOdh1qhw1yKhpimQrAmur9q1X0ZigLmCOxouQD+BD3za9/89O+HfbgBQvvh4igEbp0/PUWO+VqGYG1g==} + dependencies: + through2: 2.0.5 + dev: true + /gzip-size@6.0.0: resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} engines: {node: '>=10'} @@ -13215,7 +13673,7 @@ packages: /history@4.10.1: resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 loose-envify: 1.4.0 resolve-pathname: 3.0.0 tiny-invariant: 1.3.1 @@ -13279,6 +13737,12 @@ packages: terser: 5.26.0 dev: true + /html-parse-stringify@3.0.1: + resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} + dependencies: + void-elements: 3.1.0 + dev: false + /html-tags@3.3.1: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} @@ -13455,6 +13919,45 @@ packages: resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} dev: false + /i18next-http-backend@2.4.3: + resolution: {integrity: sha512-jo2M03O6n1/DNb51WSQ8PsQ0xEELzLZRdYUTbf17mLw3rVwnJF9hwNgMXvEFSxxb+N8dT+o0vtigA6s5mGWyPA==} + dependencies: + cross-fetch: 4.0.0 + transitivePeerDependencies: + - encoding + dev: false + + /i18next-scanner@4.4.0: + resolution: {integrity: sha512-bgnVEfoFHLVxfXNQtsFFzexB/5kwgDZZkZ6+AnCmyaFKEQQbtMkgPgLHlMZ0deIIEG6KN/tYAus5ZJzng2Ac9g==} + engines: {node: '>=12'} + hasBin: true + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + acorn-stage3: 4.0.0(acorn@8.11.3) + acorn-walk: 8.3.2 + chalk: 4.1.2 + clone-deep: 4.0.1 + commander: 9.5.0 + deepmerge: 4.3.1 + ensure-type: 1.5.1 + eol: 0.9.1 + esprima-next: 5.8.4 + gulp-sort: 2.0.0 + i18next: 23.8.2 + lodash: 4.17.21 + parse5: 6.0.1 + sortobject: 4.17.0 + through2: 4.0.2 + vinyl: 3.0.0 + vinyl-fs: 4.0.0 + dev: true + + /i18next@23.8.2: + resolution: {integrity: sha512-Z84zyEangrlERm0ZugVy4bIt485e/H8VecGUZkZWrH7BDePG6jT73QdL9EA1tRTTVVMpry/MgWIP1FjEn0DRXA==} + dependencies: + '@babel/runtime': 7.23.9 + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -13852,6 +14355,11 @@ packages: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} dev: true + /is-negated-glob@1.0.0: + resolution: {integrity: sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==} + engines: {node: '>=0.10.0'} + dev: true + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} @@ -13999,6 +14507,11 @@ packages: engines: {node: '>=12'} dev: true + /is-valid-glob@1.0.0: + resolution: {integrity: sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==} + engines: {node: '>=0.10.0'} + dev: true + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: @@ -14368,6 +14881,11 @@ packages: readable-stream: 2.3.8 dev: true + /lead@4.0.0: + resolution: {integrity: sha512-DpMa59o5uGUWWjruMp71e6knmwKU3jRBBn1kjuLWN9EeIOxNeSAwvHf03WIl8g/ZMR2oSQC9ej3yeLBwdDc/pg==} + engines: {node: '>=10.13.0'} + dev: true + /leaflet@1.9.4: resolution: {integrity: sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==} dev: false @@ -14543,6 +15061,10 @@ packages: resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} dev: true + /lodash.without@4.4.0: + resolution: {integrity: sha512-M3MefBwfDhgKgINVuBJCO1YR3+gf6s9HNJsIiZ/Ru77Ws6uTb9eBuvrkpzO+9iLoAaRodGuq7tyrPCx+74QYGQ==} + dev: true + /lodash@4.17.20: resolution: {integrity: sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==} dev: false @@ -15586,6 +16108,13 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -15627,6 +16156,12 @@ packages: engines: {node: '>=10'} hasBin: true + /mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + dev: true + /ml-array-max@1.2.4: resolution: {integrity: sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ==} dependencies: @@ -15994,6 +16529,13 @@ packages: engines: {node: '>=14.16'} dev: true + /now-and-later@3.0.0: + resolution: {integrity: sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg==} + engines: {node: '>= 10.13.0'} + dependencies: + once: 1.4.0 + dev: true + /npm-bundled@2.0.1: resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -16461,7 +17003,6 @@ packages: /parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - dev: false /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} @@ -16501,7 +17042,6 @@ packages: /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - dev: false /path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} @@ -17344,7 +17884,7 @@ packages: /probe.gl@3.6.0: resolution: {integrity: sha512-19JydJWI7+DtR4feV+pu4Mn1I5TAc0xojuxVgZdXIyfmTLfUaFnk4OloWK1bKbPtkgGKLr2lnbnCXmpZEcEp9g==} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 '@probe.gl/env': 3.6.0 '@probe.gl/log': 3.6.0 '@probe.gl/stats': 3.6.0 @@ -17554,7 +18094,6 @@ packages: /queue-tick@1.0.1: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - dev: false /queue@6.0.2: resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} @@ -17618,7 +18157,7 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 classnames: 2.5.1 dom-align: 1.12.4 rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) @@ -17779,7 +18318,7 @@ packages: react: '>=16.11.0' react-dom: '>=16.11.0' dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 classnames: 2.5.1 rc-trigger: 5.3.4(react-dom@18.2.0)(react@18.2.0) rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) @@ -18059,7 +18598,7 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 classnames: 2.5.1 rc-resize-observer: 1.4.0(react-dom@17.0.2)(react@17.0.2) rc-util: 5.38.1(react-dom@17.0.2)(react@17.0.2) @@ -18073,7 +18612,7 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 classnames: 2.5.1 rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) @@ -18588,7 +19127,7 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 classnames: 2.5.1 rc-align: 4.0.15(react-dom@18.2.0)(react@18.2.0) rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) @@ -18664,7 +19203,7 @@ packages: react: '*' react-dom: '*' dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 classnames: 2.5.1 rc-resize-observer: 1.4.0(react-dom@17.0.2)(react@17.0.2) rc-util: 5.38.1(react-dom@17.0.2)(react@17.0.2) @@ -18679,7 +19218,7 @@ packages: react: '*' react-dom: '*' dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 classnames: 2.5.1 rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) @@ -18863,7 +19402,7 @@ packages: react: ^16.6.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 invariant: 2.2.4 prop-types: 15.8.1 react: 17.0.2 @@ -18883,6 +19422,26 @@ packages: react-fast-compare: 3.2.2 shallowequal: 1.1.0 + /react-i18next@14.0.5(i18next@23.8.2)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-5+bQSeEtgJrMBABBL5lO7jPdSNAbeAZ+MlFWDw//7FnVacuVu3l9EeWFzBQvZsKy+cihkbThWOAThEdH8YjGEw==} + peerDependencies: + i18next: '>= 23.2.3' + react: '>= 16.8.0' + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + '@babel/runtime': 7.23.9 + html-parse-stringify: 3.0.1 + i18next: 23.8.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /react-icons@4.12.0(react@17.0.2): resolution: {integrity: sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==} peerDependencies: @@ -18958,7 +19517,7 @@ packages: react-loadable: '*' webpack: '>=4.41.1 || 5.x' dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 react-loadable: /@docusaurus/react-loadable@5.5.2(react@17.0.2) webpack: 5.89.0 @@ -18978,7 +19537,7 @@ packages: react-native: optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 '@types/react-redux': 7.1.33 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -19030,7 +19589,7 @@ packages: react: '>=15' react-router: '>=5' dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 react: 17.0.2 react-router: 5.3.4(react@17.0.2) @@ -19039,7 +19598,7 @@ packages: peerDependencies: react: '>=15' dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -19066,7 +19625,7 @@ packages: peerDependencies: react: '>=15' dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -19108,7 +19667,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 react: 17.0.2 use-composed-ref: 1.3.0(react@17.0.2) use-latest: 1.2.1(@types/react@18.2.21)(react@17.0.2) @@ -19294,7 +19853,7 @@ packages: /redux@4.2.1: resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 dev: false /reflect-metadata@0.1.14: @@ -19324,7 +19883,7 @@ packages: /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 /regexp.prototype.flags@1.5.1: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} @@ -19590,6 +20149,10 @@ packages: unified: 11.0.4 dev: true + /remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + dev: true + /renderkid@3.0.0: resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} dependencies: @@ -19604,6 +20167,11 @@ packages: engines: {node: '>=0.10'} dev: false + /replace-ext@2.0.0: + resolution: {integrity: sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==} + engines: {node: '>= 10'} + dev: true + /replace-string@3.1.0: resolution: {integrity: sha512-yPpxc4ZR2makceA9hy/jHNqc7QVkd4Je/N0WRHm6bs3PtivPuPynxE5ejU/mp5EhnCv8+uZL7vhz8rkluSlx+Q==} engines: {node: '>=8'} @@ -19647,6 +20215,13 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + /resolve-options@2.0.0: + resolution: {integrity: sha512-/FopbmmFOQCfsCx77BRFdKOniglTiHumLgwvd6IDPihy1GKkadZbgQJBcTb2lMzSR1pndzd96b1nZrreZ7+9/A==} + engines: {node: '>= 10.13.0'} + dependencies: + value-or-function: 4.0.0 + dev: true + /resolve-package-path@4.0.3: resolution: {integrity: sha512-SRpNAPW4kewOaNUt8VPqhJ0UMxawMwzJD8V7m1cJfdSTK9ieZwS6K7Dabsm4bmLFM96Z5Y/UznrpG5kt1im8yA==} engines: {node: '>= 12'} @@ -19773,7 +20348,7 @@ packages: /rtl-css-js@1.16.1: resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 dev: false /rtl-detect@1.1.2: @@ -20347,6 +20922,11 @@ packages: union-value: 1.0.1 dev: false + /sortobject@4.17.0: + resolution: {integrity: sha512-gzx7USv55AFRQ7UCWJHHauwD/ptUHF9MLXCGO3f5M9zauDPZ/4a9H6/VVbOXefdpEoI1unwB/bArHIVMbWBHmA==} + engines: {node: '>=10'} + dev: true + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -20553,12 +21133,17 @@ packages: resolution: {integrity: sha512-Eb9eGdySBmA2cQyJaxsiB9a6IJ7t1RCQK6o3pUZf6dTI3CVq9TkMcUCVNoWeonv7mNza3Hcp3cf1j73vEhL4ag==} dev: false + /stream-composer@1.0.2: + resolution: {integrity: sha512-bnBselmwfX5K10AH6L4c8+S5lgZMWI7ZYrz2rvYjCPB2DIMC4Ig8OpxGpNJSxRZ58oti7y1IcNvjBAz9vW5m4w==} + dependencies: + streamx: 2.15.1 + dev: true + /streamx@2.15.1: resolution: {integrity: sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==} dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 - dev: false /string-convert@0.2.1: resolution: {integrity: sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==} @@ -20944,6 +21529,12 @@ packages: resolution: {integrity: sha512-7Ed10Ds0hYnF+O1lfiZ2iSZ1bCAj+96Madctebmq7Y1ALPWlBY4YI8C6pCL+UTlshFY5YogixKLpgDP/4BlHrw==} dev: false + /teex@1.0.1: + resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} + dependencies: + streamx: 2.15.1 + dev: true + /temp-dir@1.0.0: resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} engines: {node: '>=4'} @@ -21052,6 +21643,19 @@ packages: engines: {node: '>=12.22'} dev: false + /through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + dev: true + + /through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + dependencies: + readable-stream: 3.6.2 + dev: true + /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} @@ -21135,6 +21739,13 @@ packages: dependencies: is-number: 7.0.0 + /to-through@3.0.0: + resolution: {integrity: sha512-y8MN937s/HVhEoBU1SxfHC+wxCHkV1a9gW8eAdTadYh/bGyesZIVcbjI+mSpFbSVwQici/XjBjuUyri1dnXwBw==} + engines: {node: '>=10.13.0'} + dependencies: + streamx: 2.15.1 + dev: true + /toggle-selection@1.0.6: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} dev: false @@ -21237,6 +21848,13 @@ packages: code-block-writer: 11.0.3 dev: false + /ts-morph@21.0.1: + resolution: {integrity: sha512-dbDtVdEAncKctzrVZ+Nr7kHpHkv+0JDJb2MjjpBaj8bFeCkePU9rHfMklmhuLFnpeq/EJZk2IhStY6NzqgjOkg==} + dependencies: + '@ts-morph/common': 0.22.0 + code-block-writer: 12.0.0 + dev: true + /ts-node@10.9.1(@types/node@18.17.12)(typescript@4.7.4): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true @@ -21961,6 +22579,11 @@ packages: /value-equal@1.0.1: resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} + /value-or-function@4.0.0: + resolution: {integrity: sha512-aeVK81SIuT6aMJfNo9Vte8Dw0/FZINGBV8BfCraGtqVxIeLAEhJyoWs8SmvRVmXfGss2PmmOwZCuBPbZR+IYWg==} + engines: {node: '>= 10.13.0'} + dev: true + /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -22010,10 +22633,61 @@ packages: /viewport-mercator-project@6.2.3: resolution: {integrity: sha512-QQb0/qCLlP4DdfbHHSWVYXpghB2wkLIiiZQnoelOB59mXKQSyZVxjreq1S+gaBJFpcGkWEcyVtre0+2y2DTl/Q==} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 gl-matrix: 3.4.3 dev: false + /vinyl-contents@2.0.0: + resolution: {integrity: sha512-cHq6NnGyi2pZ7xwdHSW1v4Jfnho4TEGtxZHw01cmnc8+i7jgR6bRnED/LbrKan/Q7CvVLbnvA5OepnhbpjBZ5Q==} + engines: {node: '>=10.13.0'} + dependencies: + bl: 5.1.0 + vinyl: 3.0.0 + dev: true + + /vinyl-fs@4.0.0: + resolution: {integrity: sha512-7GbgBnYfaquMk3Qu9g22x000vbYkOex32930rBnc3qByw6HfMEAoELjCjoJv4HuEQxHAurT+nvMHm6MnJllFLw==} + engines: {node: '>=10.13.0'} + dependencies: + fs-mkdirp-stream: 2.0.1 + glob-stream: 8.0.0 + graceful-fs: 4.2.11 + iconv-lite: 0.6.3 + is-valid-glob: 1.0.0 + lead: 4.0.0 + normalize-path: 3.0.0 + resolve-options: 2.0.0 + stream-composer: 1.0.2 + streamx: 2.15.1 + to-through: 3.0.0 + value-or-function: 4.0.0 + vinyl: 3.0.0 + vinyl-sourcemap: 2.0.0 + dev: true + + /vinyl-sourcemap@2.0.0: + resolution: {integrity: sha512-BAEvWxbBUXvlNoFQVFVHpybBbjW1r03WhohJzJDSfgrrK5xVYIDTan6xN14DlyImShgDRv2gl9qhM6irVMsV0Q==} + engines: {node: '>=10.13.0'} + dependencies: + convert-source-map: 2.0.0 + graceful-fs: 4.2.11 + now-and-later: 3.0.0 + streamx: 2.15.1 + vinyl: 3.0.0 + vinyl-contents: 2.0.0 + dev: true + + /vinyl@3.0.0: + resolution: {integrity: sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==} + engines: {node: '>=10.13.0'} + dependencies: + clone: 2.1.2 + clone-stats: 1.0.0 + remove-trailing-separator: 1.1.0 + replace-ext: 2.0.0 + teex: 1.0.1 + dev: true + /vite-express@0.13.0: resolution: {integrity: sha512-2jgEkZsiNwhhFqQzG0PeIbij+9HuRBhfu94XTpoeabAnqanltYTsubUYjfJY7DQre+H4e1bgA1pLyxDr6F4klQ==} dependencies: @@ -22135,6 +22809,11 @@ packages: - terser dev: true + /void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + dev: false + /vt-pbf@3.1.3: resolution: {integrity: sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==} dependencies: @@ -22569,7 +23248,6 @@ packages: /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} - dev: false /y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} @@ -22593,7 +23271,7 @@ packages: resolution: {integrity: sha512-X/v7VDnK+sxbQ2Imq4Jt2PRUsRsP7UcpSl3Llg6+NRRqWLIvxkMFYtH1FmvwNGYRKKPa+EPA4qDBlI9WVG1UKw==} engines: {node: '>= 6'} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.9 dev: false /yaml@2.3.2: @@ -22719,6 +23397,10 @@ packages: /zod@3.22.2: resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} + /zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + dev: true + /zustand@4.4.1(@types/react@18.2.21)(react@18.2.0): resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==} engines: {node: '>=12.7.0'} diff --git a/src/client/components/DateFilter.tsx b/src/client/components/DateFilter.tsx index ed87152..ef0e603 100644 --- a/src/client/components/DateFilter.tsx +++ b/src/client/components/DateFilter.tsx @@ -6,6 +6,7 @@ import { DateRange, useGlobalStateStore } from '../store/global'; import { compact } from 'lodash-es'; import clsx from 'clsx'; import { useGlobalRangeDate } from '../hooks/useGlobalRangeDate'; +import { useTranslation } from '@i18next-toolkit/react'; const { RangePicker } = DatePicker; @@ -13,6 +14,7 @@ interface DateFilterProps { className?: string; } export const DateFilter: React.FC = React.memo((props) => { + const { t } = useTranslation(); const [showPicker, setShowPicker] = useState(false); const [showDropdown, setShowDropdown] = useState(false); @@ -26,19 +28,19 @@ export const DateFilter: React.FC = React.memo((props) => { }, items: compact([ { - label: 'Today', + label: t('Today'), onClick: () => { useGlobalStateStore.setState({ dateRange: DateRange.Today }); }, }, { - label: 'Last 24 Hours', + label: t('Last 24 Hours'), onClick: () => { useGlobalStateStore.setState({ dateRange: DateRange.Last24Hours }); }, }, { - label: 'Yesterday', + label: t('Yesterday'), onClick: () => { useGlobalStateStore.setState({ dateRange: DateRange.Yesterday }); }, @@ -47,13 +49,13 @@ export const DateFilter: React.FC = React.memo((props) => { type: 'divider', }, { - label: 'This week', + label: t('This week'), onClick: () => { useGlobalStateStore.setState({ dateRange: DateRange.ThisWeek }); }, }, { - label: 'Last 7 days', + label: t('Last 7 days'), onClick: () => { useGlobalStateStore.setState({ dateRange: DateRange.Last7Days }); }, @@ -62,25 +64,25 @@ export const DateFilter: React.FC = React.memo((props) => { type: 'divider', }, { - label: 'This Month', + label: t('This Month'), onClick: () => { useGlobalStateStore.setState({ dateRange: DateRange.ThisMonth }); }, }, { - label: 'Last 30 days', + label: t('Last 30 days'), onClick: () => { useGlobalStateStore.setState({ dateRange: DateRange.Last30Days }); }, }, { - label: 'Last 90 days', + label: t('Last 90 days'), onClick: () => { useGlobalStateStore.setState({ dateRange: DateRange.Last90Days }); }, }, { - label: 'This year', + label: t('This year'), onClick: () => { useGlobalStateStore.setState({ dateRange: DateRange.ThisYear }); }, @@ -89,7 +91,7 @@ export const DateFilter: React.FC = React.memo((props) => { type: 'divider', }, { - label: 'Custom', + label: t('Custom'), onClick: () => { setShowPicker(true); }, @@ -123,7 +125,7 @@ export const DateFilter: React.FC = React.memo((props) => { {showPicker && ( setShowPicker(false)} onOk={() => { diff --git a/src/client/components/LanguageSelector.tsx b/src/client/components/LanguageSelector.tsx new file mode 100644 index 0000000..1cedb04 --- /dev/null +++ b/src/client/components/LanguageSelector.tsx @@ -0,0 +1,73 @@ +import React from 'react'; +import { setLanguage, useTranslation } from '@i18next-toolkit/react'; +import { Button, Dropdown } from 'antd'; +import { LuLanguages } from 'react-icons/lu'; + +export const LanguageSelector: React.FC = React.memo(() => { + const { i18n } = useTranslation(); + + return ( + , + }, + { + label: 'Deutsch', + key: 'de', + itemIcon: , + }, + { + label: 'Français', + key: 'fr', + itemIcon: , + }, + { + label: '日本語', + key: 'jp', + itemIcon: , + }, + { + label: 'Русский', + key: 'ru', + itemIcon: , + }, + { + label: '简体中文', + key: 'zh', + itemIcon: , + }, + ], + onClick: (info) => { + setLanguage(info.key); + }, + }} + > + ) : ( @@ -75,7 +77,7 @@ export const Dashboard: React.FC = React.memo(() => { size="large" onClick={switchEditMode} > - Edit + {t('Edit')} )} @@ -88,7 +90,11 @@ export const Dashboard: React.FC = React.memo(() => { /> {items.length === 0 && ( - + )} ); diff --git a/src/client/components/dashboard/items/WebsiteOverviewItem.tsx b/src/client/components/dashboard/items/WebsiteOverviewItem.tsx index 7184219..a6d7025 100644 --- a/src/client/components/dashboard/items/WebsiteOverviewItem.tsx +++ b/src/client/components/dashboard/items/WebsiteOverviewItem.tsx @@ -7,10 +7,12 @@ import { WebsiteOverview } from '../../website/WebsiteOverview'; import { Button } from 'antd'; import { useNavigate } from 'react-router'; import { ArrowRightOutlined } from '@ant-design/icons'; +import { useTranslation } from '@i18next-toolkit/react'; export const WebsiteOverviewItem: React.FC<{ websiteId: string; }> = React.memo((props) => { + const { t } = useTranslation(); const workspaceId = useCurrentWorkspaceId(); const navigate = useNavigate(); @@ -39,7 +41,7 @@ export const WebsiteOverviewItem: React.FC<{ navigate(`/website/${websiteInfo.id}`); }} > - View Details + {t('View Details')} } diff --git a/src/client/components/modals/NotificationInfo/index.tsx b/src/client/components/modals/NotificationInfo/index.tsx index e29a3d7..5c7573f 100644 --- a/src/client/components/modals/NotificationInfo/index.tsx +++ b/src/client/components/modals/NotificationInfo/index.tsx @@ -16,6 +16,7 @@ import { import { useEvent } from '../../../hooks/useEvent'; import { useCurrentWorkspaceId } from '../../../store/user'; import { notificationStrategies } from './strategies'; +import { useTranslation } from '@i18next-toolkit/react'; export interface NotificationFormValues { id?: string; @@ -36,6 +37,7 @@ interface NotificationInfoModalProps } export const NotificationInfoModal: React.FC = React.memo((props) => { + const { t } = useTranslation(); const [form] = Form.useForm(); const typeValue = Form.useWatch('type', form); const currentWorkspaceId = useCurrentWorkspaceId()!; @@ -85,7 +87,7 @@ export const NotificationInfoModal: React.FC = return ( = footer={
} @@ -110,7 +112,7 @@ export const NotificationInfoModal: React.FC = initialValues={props.initialValues ?? defaultValues} >
diff --git a/src/client/components/monitor/MonitorInfoEditor.tsx b/src/client/components/monitor/MonitorInfoEditor.tsx index 7fdd7e3..177034b 100644 --- a/src/client/components/monitor/MonitorInfoEditor.tsx +++ b/src/client/components/monitor/MonitorInfoEditor.tsx @@ -4,6 +4,7 @@ import { Button, Form, Input, InputNumber, Select } from 'antd'; import { getMonitorProvider, monitorProviders } from './provider'; import { useEventWithLoading } from '../../hooks/useEvent'; import { NotificationPicker } from '../notification/NotificationPicker'; +import { useTranslation } from '@i18next-toolkit/react'; export type MonitorInfoEditorValues = Omit< Monitor, @@ -28,6 +29,7 @@ interface MonitorInfoEditorProps { } export const MonitorInfoEditor: React.FC = React.memo( (props) => { + const { t } = useTranslation(); const [form] = Form.useForm(); const typeValue = Form.useWatch('type', form); const initialValues = props.initialValues ?? defaultValues; @@ -65,7 +67,7 @@ export const MonitorInfoEditor: React.FC = React.memo( >