diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..b81889f --- /dev/null +++ b/.env.example @@ -0,0 +1,10 @@ +############################################# +############ OIDC Server Configs ############ +############################################# + +# oidc server url, e.g. https://kubeagi.com/oidc +OIDC_SERVER_URL=[oidc_server_url] + +# oidc server client id && secret +CLIENT_ID=client_id +CLIENT_SECRET=client_secret diff --git a/.gitignore b/.gitignore index 4afa0b4..51738b5 100644 --- a/.gitignore +++ b/.gitignore @@ -50,9 +50,12 @@ test-output # dev .env.development +.env.production # misc *.pem +/cert/*.crt +/cert/*.key # local env files .env*.local @@ -66,3 +69,5 @@ next-env.d.ts # misc # add other ignore file below +public/*.js +public/*.js.map diff --git a/README.md b/README.md index bb5afba..cd423ea 100644 --- a/README.md +++ b/README.md @@ -26,13 +26,41 @@ bun dev Open with your browser to see the result. -## Development OIDC 配置 +## .env 配置 (示例: ./.env.example) -根目录新建 `.env.development` +### 开发模式 ``` -OIDC_SERVER_URL=[OIDC_SERVER_URL] -CLIENT_ID=[CLIENT_ID] -CLIENT_SECRET=[CLIENT_SECRET] -CLIENT_ORIGIN=[CLIENT_ORIGIN] +cp .env.example .env.development +``` + +复制并重命名为 .env.development, 修改 oidc(必须) 等参数 + +### 生产模式 + +``` +cp .env.example .env.production +``` + +复制并重命名为 .env.production, 修改 oidc(必须) 等参数 + +## 本地运行 pwa (添加到桌面) + +- 构建 + +``` +npm run build +``` + +- 安装 [mkcert](https://github.com/FiloSottile/mkcert) 并生成证书 + +``` +mkcert -install +mkcert localhost +``` + +- 运行带自签名证书的生产模式 + +``` +npm run start:https ``` diff --git a/next.config.mjs b/next.config.mjs index 48381a2..d3d12fc 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,8 +1,20 @@ +import nextPWA from '@ducanh2912/next-pwa'; +import analyzer from '@next/bundle-analyzer'; -import config from './src/config/oidc.mjs'; -const oidcUrl = config.server.url; const isProd = process.env.NODE_ENV === 'production'; +const withBundleAnalyzer = analyzer({ + enabled: process.env.ANALYZE === 'true', +}); + +const withPWA = nextPWA({ + dest: 'public', + register: true, + workboxOptions: { + skipWaiting: true, + }, +}); + const nextConfig = { compress: isProd, typescript: { @@ -26,15 +38,6 @@ const nextConfig = { }, reactStrictMode: true, transpilePackages: ['antd', '@ant-design', 'antd-style', '@lobehub/ui', 'antd-mobile'], - // async rewrites() { - // return [ - // { - // source: '/oidc/token', - // destination: `${oidcUrl}/oidc/token`, - // secure: false, - // }, - // ] - // }, webpack: (config) => { config.experiments = { asyncWebAssembly: true, @@ -59,4 +62,4 @@ const nextConfig = { }, } -export default nextConfig +export default isProd ? withBundleAnalyzer(withPWA(nextConfig)) : nextConfig; diff --git a/package.json b/package.json index f45a554..9dbb7be 100644 --- a/package.json +++ b/package.json @@ -3,8 +3,9 @@ "version": "0.1.0", "scripts": { "build": "next build", + "build:analyze": "cross-env ANALYZE=true next build", "dev": "cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 next dev", - "dev-https": "cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 next dev --experimental-https --experimental-https-key ./cert/key.pem --experimental-https-cert ./cert/cert.pem", + "dev:https": "cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 next dev --experimental-https --experimental-https-key ./cert/key.pem --experimental-https-cert ./cert/cert.pem", "lint": "npm run lint:es && npm run lint:style", "lint-fix": "npm run lint-fix:es && npm run lint-fix:style", "lint-fix:es": "eslint --ext .jsx,.js,.tsx,.ts src --fix", @@ -13,7 +14,8 @@ "lint:style": "stylelint \"{src,tests}/**/*.{css,less,js,jsx,ts,tsx}\"", "prepare": "husky install", "prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,md,json}'", - "start": "next start" + "start": "next start", + "start:https": "cross-env NODE_ENV=production node server.mjs" }, "lint-staged": { "*.md": [ @@ -60,6 +62,8 @@ "ua-parser-js": "2.0.0-alpha.2" }, "devDependencies": { + "@ducanh2912/next-pwa": "^10.2.2", + "@next/bundle-analyzer": "^14.1.0", "@types/mdx": "^2.0.10", "@types/node": "^20", "@types/query-string": "^6.3.0", @@ -77,7 +81,8 @@ "remark": "^15.0.1", "remark-cli": "^12.0.0", "stylelint": "^15", - "typescript": "^5" + "typescript": "^5", + "webpack": "^5.89.0" }, "packageManager": "pnpm@8.12.1", "engines": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 372aec6..bf0725a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -64,6 +64,12 @@ dependencies: version: 2.0.0-alpha.2 devDependencies: + '@ducanh2912/next-pwa': + specifier: ^10.2.2 + version: 10.2.2(next@14.0.4)(webpack@5.89.0) + '@next/bundle-analyzer': + specifier: ^14.1.0 + version: 14.1.0 '@types/mdx': specifier: ^2.0.10 version: 2.0.10 @@ -118,6 +124,9 @@ devDependencies: typescript: specifier: ^5 version: 5.3.3 + webpack: + specifier: ^5.89.0 + version: 5.89.0 packages: @@ -234,6 +243,18 @@ packages: throttle-debounce: 5.0.0 dev: false + /@apideck/better-ajv-errors@0.3.6(ajv@8.12.0): + resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} + engines: {node: '>=10'} + peerDependencies: + ajv: '>=8' + dependencies: + ajv: 8.12.0 + json-schema: 0.4.0 + jsonpointer: 5.0.1 + leven: 3.1.0 + dev: true + /@apidevtools/json-schema-ref-parser@11.1.0: resolution: {integrity: sha512-g/VW9ZQEFJAOwAyUb8JFf7MLiLy2uEB4rU270rGzDwICxnxMlPy0O11KVePSgS36K1NI29gSlK84n5INGhd4Ag==} engines: {node: '>= 16'} @@ -309,7 +330,6 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: false /@babel/eslint-parser@7.23.3(@babel/core@7.23.6)(eslint@8.56.0): resolution: {integrity: sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==} @@ -348,14 +368,12 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 - dev: false /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 - dev: false /@babel/helper-compilation-targets@7.23.6: resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} @@ -383,7 +401,6 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 - dev: false /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.7): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} @@ -395,7 +412,6 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 - dev: false /@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.23.7): resolution: {integrity: sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==} @@ -410,7 +426,6 @@ packages: resolve: 1.22.8 transitivePeerDependencies: - supports-color - dev: false /@babel/helper-environment-visitor@7.22.20: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} @@ -434,7 +449,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 - dev: false /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} @@ -468,19 +482,16 @@ packages: '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 - dev: false /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 - dev: false /@babel/helper-plugin-utils@7.22.5: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} - dev: false /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.7): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} @@ -492,7 +503,6 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 - dev: false /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.7): resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} @@ -504,7 +514,6 @@ packages: '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - dev: false /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} @@ -517,7 +526,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 - dev: false /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} @@ -544,7 +552,6 @@ packages: '@babel/helper-function-name': 7.23.0 '@babel/template': 7.22.15 '@babel/types': 7.23.6 - dev: false /@babel/helpers@7.23.7: resolution: {integrity: sha512-6AMnjCoC8wjqBzDHkuqpa7jAKwvMo4dC+lr/TFBz+ucfulO1XMpDnwWPGBNwClOKZ8h6xn5N81W/R5OrcKtCbQ==} @@ -579,7 +586,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} @@ -591,7 +597,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.7) - dev: false /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.7): resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} @@ -602,7 +607,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.7): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} @@ -611,7 +615,6 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.7 - dev: false /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.7): resolution: {integrity: sha1-qYP7Gusuw/btBCohD2QOkOeG/g0=} @@ -620,7 +623,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.7): resolution: {integrity: sha1-tcmHJ0xKOoK4lxR5aTGmtTVErhA=} @@ -629,7 +631,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.7): resolution: {integrity: sha1-GV34mxRrS3izv4l/16JXyEZZ1AY=} @@ -639,7 +640,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha1-Yr+Ysto80h1iYVT8lu5bPLaOrLM=} @@ -648,7 +648,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha1-AolkqbqA28CUyRXEh618TnpmRlo=} @@ -657,7 +656,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} @@ -667,7 +665,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} @@ -677,7 +674,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.7): resolution: {integrity: sha1-7mATSMNw+jNNIge+FYd3SWUh/VE=} @@ -686,7 +682,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha1-AcohtmjNghjJ5kDLbdiMVBKyyWo=} @@ -695,7 +690,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} @@ -714,7 +708,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha1-Fn7XA2iIYIH3S1w2xlqIwDtm0ak=} @@ -723,7 +716,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.7): resolution: {integrity: sha1-ubBws+M1cM2f0Hun+pHA3Te5r5c=} @@ -732,7 +724,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha1-YOIl7cvZimQDMqLnLdPmbxr1WHE=} @@ -741,7 +732,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha1-YRGiZbz7Ag6579D9/X0mQCue1sE=} @@ -750,7 +740,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha1-T2nCq5UWfgGAzVM2YT+MV4j31Io=} @@ -759,7 +748,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.7): resolution: {integrity: sha1-DcZnHsDqIrbpShEU+FeXDNOd4a0=} @@ -769,7 +757,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.7): resolution: {integrity: sha1-wc/a3DWmRiQAAfBhOCR7dBw02Uw=} @@ -779,7 +766,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} @@ -800,7 +786,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} @@ -810,7 +795,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-async-generator-functions@7.23.7(@babel/core@7.23.7): resolution: {integrity: sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA==} @@ -823,7 +807,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7) - dev: false /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} @@ -835,7 +818,6 @@ packages: '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7) - dev: false /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} @@ -845,7 +827,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} @@ -855,7 +836,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} @@ -866,7 +846,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} @@ -878,7 +857,6 @@ packages: '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.7) - dev: false /@babel/plugin-transform-classes@7.23.5(@babel/core@7.23.7): resolution: {integrity: sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==} @@ -896,7 +874,6 @@ packages: '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 - dev: false /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} @@ -907,7 +884,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.15 - dev: false /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} @@ -917,7 +893,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} @@ -928,7 +903,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} @@ -938,7 +912,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} @@ -949,7 +922,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7) - dev: false /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} @@ -960,7 +932,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} @@ -971,7 +942,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.7) - dev: false /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.7): resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} @@ -982,7 +952,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - dev: false /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} @@ -994,7 +963,6 @@ packages: '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} @@ -1005,7 +973,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7) - dev: false /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} @@ -1015,7 +982,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} @@ -1026,7 +992,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7) - dev: false /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} @@ -1036,7 +1001,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} @@ -1047,7 +1011,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} @@ -1059,7 +1022,6 @@ packages: '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 - dev: false /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} @@ -1072,7 +1034,6 @@ packages: '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.20 - dev: false /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} @@ -1083,7 +1044,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.7): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} @@ -1094,7 +1054,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} @@ -1104,7 +1063,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} @@ -1115,7 +1073,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7) - dev: false /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} @@ -1126,7 +1083,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7) - dev: false /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} @@ -1140,7 +1096,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7) - dev: false /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} @@ -1151,7 +1106,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) - dev: false /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} @@ -1162,7 +1116,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7) - dev: false /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} @@ -1174,7 +1127,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) - dev: false /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} @@ -1184,7 +1136,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} @@ -1195,7 +1146,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} @@ -1208,7 +1158,6 @@ packages: '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.7) - dev: false /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} @@ -1218,7 +1167,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-react-constant-elements@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==} @@ -1284,7 +1232,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.2 - dev: false /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} @@ -1294,7 +1241,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} @@ -1304,7 +1250,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} @@ -1315,7 +1260,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - dev: false /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} @@ -1325,7 +1269,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} @@ -1335,7 +1278,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} @@ -1345,7 +1287,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.7): resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} @@ -1368,7 +1309,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} @@ -1379,7 +1319,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} @@ -1390,7 +1329,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} @@ -1401,7 +1339,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/preset-env@7.23.7(@babel/core@7.23.7): resolution: {integrity: sha512-SY27X/GtTz/L4UryMNJ6p4fH4nsgWbz84y9FE0bQeWJP6O5BhgVCt53CotQKHCOeXJel8VyhlhujhlltKms/CA==} @@ -1492,7 +1429,6 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: false /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.7): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} @@ -1503,7 +1439,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/types': 7.23.6 esutils: 2.0.3 - dev: false /@babel/preset-react@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==} @@ -1536,7 +1471,6 @@ packages: /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - dev: false /@babel/runtime@7.23.6: resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==} @@ -1824,6 +1758,35 @@ packages: engines: {node: '>=10'} dev: false + /@discoveryjs/json-ext@0.5.7: + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + dev: true + + /@ducanh2912/next-pwa@10.2.2(next@14.0.4)(webpack@5.89.0): + resolution: {integrity: sha512-4WCMTI8aGQlLbxBVmXlGQuTTvSkAUdxvZl6o18znW1jcOd64K7SmJcMbh+MdJDw6s5eqG/uAKfbmA0JMC/c9iQ==} + peerDependencies: + next: '>=14.0.0' + webpack: '>=5.9.0' + dependencies: + clean-webpack-plugin: 4.0.0(webpack@5.89.0) + fast-glob: 3.3.2 + next: 14.0.4(@babel/core@7.23.7)(react-dom@18.2.0)(react@18.2.0) + semver: 7.5.4 + terser-webpack-plugin: 5.3.10(webpack@5.89.0) + webpack: 5.89.0 + workbox-build: 7.0.0 + workbox-core: 7.0.0 + workbox-webpack-plugin: 7.0.0(webpack@5.89.0) + workbox-window: 7.0.0 + transitivePeerDependencies: + - '@swc/core' + - '@types/babel__core' + - esbuild + - supports-color + - uglify-js + dev: true + /@emoji-mart/data@1.1.2: resolution: {integrity: sha512-1HP8BxD2azjqWJvxIaWAMyTySeZY0Osr83ukYjltPVkNXeJvTz7yDrPLBtnrD5uqJ3tg4CcLuuBW09wahqL/fg==} dev: false @@ -2312,6 +2275,13 @@ packages: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} + /@jridgewell/source-map@0.3.5: + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + dev: true + /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} @@ -2369,7 +2339,7 @@ packages: immer: 10.0.3 leva: 0.9.35(@types/react-dom@18.2.18)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0) lodash-es: 4.17.21 - lucide-react: 0.312.0(react@18.2.0) + lucide-react: 0.314.0(react@18.2.0) polished: 4.2.2 prism-react-renderer: 2.3.1(react@18.2.0) query-string: 8.1.0 @@ -2399,9 +2369,17 @@ packages: - supports-color dev: false + /@next/bundle-analyzer@14.1.0: + resolution: {integrity: sha512-RJWjnlMp/1WSW0ahAdawV22WgJiC6BVaFS5Xfhw6gP7NJEX3cAJjh4JqSHKGr8GnLNRaFCVTQdDPoX84E421BA==} + dependencies: + webpack-bundle-analyzer: 4.10.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + /@next/env@14.0.4: resolution: {integrity: sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ==} - dev: false /@next/eslint-plugin-next@14.0.4: resolution: {integrity: sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==} @@ -2429,7 +2407,6 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: false optional: true /@next/swc-darwin-x64@14.0.4: @@ -2438,7 +2415,6 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: false optional: true /@next/swc-linux-arm64-gnu@14.0.4: @@ -2448,7 +2424,6 @@ packages: os: [linux] libc: [glibc] requiresBuild: true - dev: false optional: true /@next/swc-linux-arm64-musl@14.0.4: @@ -2458,7 +2433,6 @@ packages: os: [linux] libc: [musl] requiresBuild: true - dev: false optional: true /@next/swc-linux-x64-gnu@14.0.4: @@ -2468,7 +2442,6 @@ packages: os: [linux] libc: [glibc] requiresBuild: true - dev: false optional: true /@next/swc-linux-x64-musl@14.0.4: @@ -2478,7 +2451,6 @@ packages: os: [linux] libc: [musl] requiresBuild: true - dev: false optional: true /@next/swc-win32-arm64-msvc@14.0.4: @@ -2487,7 +2459,6 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: false optional: true /@next/swc-win32-ia32-msvc@14.0.4: @@ -2496,7 +2467,6 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: false optional: true /@next/swc-win32-x64-msvc@14.0.4: @@ -2505,7 +2475,6 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: false optional: true /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: @@ -2904,6 +2873,10 @@ packages: config-chain: 1.1.13 dev: true + /@polka/url@1.0.0-next.24: + resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + dev: true + /@radix-ui/primitive@1.0.1: resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} dependencies: @@ -3470,6 +3443,60 @@ packages: reselect: 5.1.0 dev: false + /@rollup/plugin-babel@5.3.1(@babel/core@7.23.7)(rollup@2.79.1): + resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} + engines: {node: '>= 10.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-module-imports': 7.22.15 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + rollup: 2.79.1 + dev: true + + /@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1): + resolution: {integrity: sha1-gqpZOXopzU4TJIsQbmpKGIA2KmA=} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + '@types/resolve': 1.17.1 + builtin-modules: 3.3.0 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.8 + rollup: 2.79.1 + dev: true + + /@rollup/plugin-replace@2.4.2(rollup@2.79.1): + resolution: {integrity: sha1-otU5MU+8d8JEhY+qUjASglBoUQo=} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + magic-string: 0.25.9 + rollup: 2.79.1 + dev: true + + /@rollup/pluginutils@3.1.0(rollup@2.79.1): + resolution: {integrity: sha1-cGtFJO5tyLEDs8mVUz5a1oDAK5s=} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 2.79.1 + dev: true + /@rushstack/eslint-patch@1.6.1: resolution: {integrity: sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==} dev: true @@ -3653,13 +3680,22 @@ packages: postcss: '>=7.0.0' postcss-syntax: '>=0.36.2' dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 postcss: 8.4.33 postcss-syntax: 0.36.2(postcss-less@6.0.0)(postcss@8.4.33) transitivePeerDependencies: - supports-color dev: true + /@surma/rollup-plugin-off-main-thread@2.2.3: + resolution: {integrity: sha1-7jSYWVLKIVWKsNlS8AKYrSGQwFM=} + dependencies: + ejs: 3.1.9 + json5: 2.2.3 + magic-string: 0.25.9 + string.prototype.matchall: 4.0.10 + dev: true + /@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.23.7): resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} engines: {node: '>=14'} @@ -3821,7 +3857,6 @@ packages: resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} dependencies: tslib: 2.6.2 - dev: false /@tootallnate/once@2.0.0: resolution: {integrity: sha1-9UShSNOrNYAcH2M6dEH9h8LkhL8=} @@ -3864,16 +3899,41 @@ packages: dependencies: '@types/ms': 0.7.34 + /@types/eslint-scope@3.7.7: + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + dependencies: + '@types/eslint': 8.56.2 + '@types/estree': 1.0.5 + dev: true + + /@types/eslint@8.56.2: + resolution: {integrity: sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==} + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + dev: true + /@types/estree-jsx@1.0.3: resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==} dependencies: '@types/estree': 1.0.5 dev: true + /@types/estree@0.0.39: + resolution: {integrity: sha1-4Xfmme4bjCLSMXTKqnQiZEOJUJ8=} + dev: true + /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true + /@types/glob@7.2.0: + resolution: {integrity: sha1-vBtb86qS8lvV3TnzXFc2G9zlsus=} + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 20.10.6 + dev: true + /@types/hast@2.3.9: resolution: {integrity: sha512-pTHyNlaMD/oKJmS+ZZUyFUcsZeBZpC0lmGquw98CqRVNgAdJZJeD7GoeLiT6Xbx5rU9VCjSt0RwEvDgzh4obFw==} dependencies: @@ -3928,6 +3988,10 @@ packages: resolution: {integrity: sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==} dev: true + /@types/minimatch@5.1.2: + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + dev: true + /@types/minimist@1.2.5: resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} dev: true @@ -3974,6 +4038,12 @@ packages: '@types/scheduler': 0.16.8 csstype: 3.1.3 + /@types/resolve@1.17.1: + resolution: {integrity: sha1-Ov1q2JZ8d+Q3bFmKgt3Vj0bsRdY=} + dependencies: + '@types/node': 20.10.6 + dev: true + /@types/scheduler@0.16.8: resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} @@ -3997,7 +4067,6 @@ packages: /@types/trusted-types@2.0.7: resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - dev: false /@types/ua-parser-js@0.7.39: resolution: {integrity: sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg==} @@ -4377,6 +4446,120 @@ packages: react: 18.2.0 dev: false + /@webassemblyjs/ast@1.11.6: + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: true + + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: true + + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: true + + /@webassemblyjs/helper-buffer@1.11.6: + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + dev: true + + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: true + + /@webassemblyjs/helper-wasm-section@1.11.6: + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + dev: true + + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: true + + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + dependencies: + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: true + + /@webassemblyjs/wasm-edit@1.11.6: + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-opt': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/wast-printer': 1.11.6 + dev: true + + /@webassemblyjs/wasm-gen@1.11.6: + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + + /@webassemblyjs/wasm-opt@1.11.6: + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + dev: true + + /@webassemblyjs/wasm-parser@1.11.6: + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + + /@webassemblyjs/wast-printer@1.11.6: + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@xtuc/long': 4.2.2 + dev: true + + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=} + dev: true + + /@xtuc/long@4.2.2: + resolution: {integrity: sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=} + dev: true + /@yuntijs/lint@1.5.1(@octokit/core@3.6.0)(eslint@8.56.0)(postcss@8.4.33)(prettier@3.1.1)(semantic-release@22.0.12)(stylelint@15.11.0)(typescript@5.3.3): resolution: {integrity: sha512-yyzh1KcNeuQaNyAI6Z7sI06Xcrr4aqjQEoAbnBny17/eXW8UghQazWI1DwihXwj98MQPDd+kvrJm8YoAhXm3EA==} peerDependencies: @@ -4479,6 +4662,14 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true + /acorn-import-assertions@1.9.0(acorn@8.11.3): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.11.3 + dev: true + /acorn-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha1-ftW7VZCLOy8bxVxq8WU7rafweTc=} peerDependencies: @@ -4487,6 +4678,11 @@ packages: acorn: 8.11.3 dev: true + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + dev: true + /acorn@8.11.3: resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} @@ -4566,6 +4762,14 @@ packages: ajv: 8.12.0 dev: true + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha1-MfKdpatuANHC0yms97WSlhTVAU0=} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: true + /ajv@6.12.6: resolution: {integrity: sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=} dependencies: @@ -4788,11 +4992,23 @@ packages: resolution: {integrity: sha1-hzrAD+yDdJ8lWsjdCDgUtPYykZA=} dev: false + /array-union@1.0.2: + resolution: {integrity: sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=} + engines: {node: '>=0.10.0'} + dependencies: + array-uniq: 1.0.3 + dev: true + /array-union@2.1.0: resolution: {integrity: sha1-t5hCCtvrHego2ErNii4j0+/oXo0=} engines: {node: '>=8'} dev: true + /array-uniq@1.0.3: + resolution: {integrity: sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=} + engines: {node: '>=0.10.0'} + dev: true + /array.prototype.findlastindex@1.2.3: resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} engines: {node: '>= 0.4'} @@ -4870,12 +5086,21 @@ packages: resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} dev: false + /async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + dev: true + /asynciterator.prototype@1.0.0: resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} dependencies: has-symbols: 1.0.3 dev: true + /at-least-node@1.0.0: + resolution: {integrity: sha1-YCzUtG6EStTv/JKoARo8RuAjjcI=} + engines: {node: '>= 4.0.0'} + dev: true + /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} @@ -4922,7 +5147,6 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: false /babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.23.7): resolution: {integrity: sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==} @@ -4934,7 +5158,6 @@ packages: core-js-compat: 3.35.0 transitivePeerDependencies: - supports-color - dev: false /babel-plugin-polyfill-regenerator@0.5.4(@babel/core@7.23.7): resolution: {integrity: sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==} @@ -4945,7 +5168,6 @@ packages: '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.7) transitivePeerDependencies: - supports-color - dev: false /bail@2.0.2: resolution: {integrity: sha1-0m9c2P5db4MqMVF7n3w1YEC6bV0=} @@ -5023,7 +5245,6 @@ packages: engines: {node: '>=10.16.0'} dependencies: streamsearch: 1.1.0 - dev: false /call-bind@1.0.5: resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} @@ -5127,7 +5348,12 @@ packages: resolution: {integrity: sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==} dev: false - /ci-info@3.9.0: + /chrome-trace-event@1.0.3: + resolution: {integrity: sha1-EBXs7UdB4V0GZkqVfbv1DQQeJqw=} + engines: {node: '>=6.0'} + dev: true + + /ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} dev: true @@ -5160,6 +5386,16 @@ packages: escape-string-regexp: 5.0.0 dev: true + /clean-webpack-plugin@4.0.0(webpack@5.89.0): + resolution: {integrity: sha1-cpR9RAPUUvOO1hqf8K2oEiqs1yk=} + engines: {node: '>=10.0.0'} + peerDependencies: + webpack: '>=4.0.0 <6.0.0' + dependencies: + del: 4.1.1 + webpack: 5.89.0 + dev: true + /cli-cursor@4.0.0: resolution: {integrity: sha1-POz+NzS/T+Aqg2HL3A9v4oxqV+o=} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -5186,7 +5422,6 @@ packages: /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - dev: false /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} @@ -5252,7 +5487,6 @@ packages: /commander@7.2.0: resolution: {integrity: sha1-o2y1fQtQHOEI5NIFWaFQo5HZerc=} engines: {node: '>= 10'} - dev: false /commander@8.3.0: resolution: {integrity: sha1-SDfqGy2me5xhamevuw+v7lZ7ymY=} @@ -5271,6 +5505,11 @@ packages: - typescript dev: true + /common-tags@1.8.2: + resolution: {integrity: sha1-lOuzwHbSYDJ0X9VPrOf2iO9aycY=} + engines: {node: '>=4.0.0'} + dev: true + /compare-func@2.0.0: resolution: {integrity: sha1-+2XnXtvd/S5WhVTotbBf/3pR/LM=} dependencies: @@ -5376,7 +5615,6 @@ packages: resolution: {integrity: sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==} dependencies: browserslist: 4.22.2 - dev: false /core-js@3.34.0: resolution: {integrity: sha512-aDdvlDder8QmY91H88GzNi9EtQi2TjvQhpCX6B1v/dAZHU1AuLgHvRh54RiOerpEhEW46Tkf+vgAViB/CWC0ag==} @@ -5442,6 +5680,11 @@ packages: which: 2.0.2 dev: true + /crypto-random-string@2.0.0: + resolution: {integrity: sha1-7yp6lm7BEIM4g2m6oC6+rSKbMNU=} + engines: {node: '>=8'} + dev: true + /crypto-random-string@4.0.0: resolution: {integrity: sha1-WjzFPX3YYYPfXaAxKBbO7rW7H8I=} engines: {node: '>=12'} @@ -5513,6 +5756,10 @@ packages: resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} dev: false + /debounce@1.2.1: + resolution: {integrity: sha1-OIgdj0FmpcWEgCDBGCe4NLyz4KU=} + dev: true + /debug@3.2.7: resolution: {integrity: sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=} peerDependencies: @@ -5574,7 +5821,6 @@ packages: /deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - dev: false /define-data-property@1.1.1: resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} @@ -5594,6 +5840,19 @@ packages: object-keys: 1.1.1 dev: true + /del@4.1.1: + resolution: {integrity: sha1-no8RciLqRKMf86FWwEm5kFKp8LQ=} + engines: {node: '>=6'} + dependencies: + '@types/glob': 7.2.0 + globby: 6.1.0 + is-path-cwd: 2.2.0 + is-path-in-cwd: 2.1.0 + p-map: 2.1.0 + pify: 4.0.1 + rimraf: 2.7.1 + dev: true + /deprecation@2.3.1: resolution: {integrity: sha1-Y2jL20Cr8zc7UlrIfkomDDpwCRk=} dev: true @@ -5693,6 +5952,10 @@ packages: dependencies: readable-stream: 2.3.8 + /duplexer@0.1.2: + resolution: {integrity: sha1-Or5DrvODX4rgd9E23c4PJ2sEAOY=} + dev: true + /duplexify@4.1.2: resolution: {integrity: sha1-GLT40oKJEy+guVc8iY2fkD+Bx7A=} dependencies: @@ -5710,6 +5973,14 @@ packages: resolution: {integrity: sha1-aWzi7Aqg5uqTo5f/zySqeEDIJ8s=} dev: true + /ejs@3.1.9: + resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.8.7 + dev: true + /electron-to-chromium@1.4.622: resolution: {integrity: sha512-GZ47DEy0Gm2Z8RVG092CkFvX7SdotG57c4YZOe8W8qD4rOmk3plgeNmiLVRHP/Liqj1wRiY3uUUod9vb9hnxZA==} @@ -5828,6 +6099,10 @@ packages: safe-array-concat: 1.0.1 dev: true + /es-module-lexer@1.4.1: + resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + dev: true + /es-set-tostringtag@2.0.2: resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} @@ -6308,6 +6583,10 @@ packages: engines: {node: '>=4.0'} dev: true + /estree-walker@1.0.1: + resolution: {integrity: sha1-MbxdYSyWtwQQa0d+bdXYqhOMtwA=} + dev: true + /estree-walker@2.0.2: resolution: {integrity: sha1-UvAQF4wqTBF6d1fP6UKtt9LaTKw=} dev: true @@ -6320,6 +6599,11 @@ packages: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} dev: true + /events@3.3.0: + resolution: {integrity: sha1-Mala0Kkk4tLEGagTrrLE6HjqdAA=} + engines: {node: '>=0.8.x'} + dev: true + /execa@5.1.1: resolution: {integrity: sha1-+ArZy/Qpj3vR1MlVXCHpN0HEEd0=} engines: {node: '>=10'} @@ -6451,6 +6735,12 @@ packages: tslib: 2.6.2 dev: false + /filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + dependencies: + minimatch: 5.1.6 + dev: true + /fill-range@7.0.1: resolution: {integrity: sha1-GRmmp8df44ssfHflGYU12prN2kA=} engines: {node: '>=8'} @@ -6562,6 +6852,16 @@ packages: universalify: 2.0.1 dev: true + /fs-extra@9.1.0: + resolution: {integrity: sha1-WVRGDHZKjaIJS6NVS/g55rmnyG0=} + engines: {node: '>=10'} + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true + /fs.realpath@1.0.0: resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} dev: true @@ -6621,6 +6921,10 @@ packages: hasown: 2.0.0 dev: true + /get-own-enumerable-property-symbols@3.0.2: + resolution: {integrity: sha1-tf3nfyLL4185C04ImSLFC85u9mQ=} + dev: true + /get-stdin@9.0.0: resolution: {integrity: sha1-OYP/guA9VvGy6g0+YDJfOdcDpXU=} engines: {node: '>=12'} @@ -6717,7 +7021,6 @@ packages: /glob-to-regexp@0.4.1: resolution: {integrity: sha1-x1KXCHyFG5pXi9IX3VmpL1n+VG4=} - dev: false /glob@10.3.10: resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} @@ -6829,6 +7132,17 @@ packages: unicorn-magic: 0.1.0 dev: true + /globby@6.1.0: + resolution: {integrity: sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=} + engines: {node: '>=0.10.0'} + dependencies: + array-union: 1.0.2 + glob: 7.2.3 + object-assign: 4.1.1 + pify: 2.3.0 + pinkie-promise: 2.0.1 + dev: true + /globjoin@0.1.4: resolution: {integrity: sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=} dev: true @@ -6850,6 +7164,13 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true + /gzip-size@6.0.0: + resolution: {integrity: sha1-BlNn/VDCOcBnHLy61b4+LusQ5GI=} + engines: {node: '>=10'} + dependencies: + duplexer: 0.1.2 + dev: true + /handle-thing@2.0.1: resolution: {integrity: sha1-hX95zjWVgMNA1DCBzGSJcNC7I04=} dev: true @@ -7026,6 +7347,10 @@ packages: wbuf: 1.7.3 dev: true + /html-escaper@2.0.2: + resolution: {integrity: sha1-39YAJ9o2o238viNiYsAKWCJoFFM=} + dev: true + /html-tags@3.3.1: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} @@ -7103,6 +7428,10 @@ packages: hasBin: true dev: true + /idb@7.1.1: + resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} + dev: true + /ignore@5.3.0: resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} engines: {node: '>= 4'} @@ -7335,6 +7664,10 @@ packages: resolution: {integrity: sha1-AJItuMm/c+gbejNYJ7wqQ/K5ESc=} dev: true + /is-module@1.0.0: + resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=} + dev: true + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} @@ -7352,11 +7685,35 @@ packages: engines: {node: '>=0.12.0'} dev: true + /is-obj@1.0.1: + resolution: {integrity: sha1-PkcprB9f3gJc19g6iW2rn09n2w8=} + engines: {node: '>=0.10.0'} + dev: true + /is-obj@2.0.0: resolution: {integrity: sha1-Rz+wXZc3BeP9liBUUBjKjiLvSYI=} engines: {node: '>=8'} dev: true + /is-path-cwd@2.2.0: + resolution: {integrity: sha1-Z9Q7gmZKe1GR/ZEZEn6zAASKn9s=} + engines: {node: '>=6'} + dev: true + + /is-path-in-cwd@2.1.0: + resolution: {integrity: sha1-v+Lcomxp85cmWkAJljYCk1oFOss=} + engines: {node: '>=6'} + dependencies: + is-path-inside: 2.1.0 + dev: true + + /is-path-inside@2.1.0: + resolution: {integrity: sha1-fJgQWH1lmkDSe8201WFuqwWUlLI=} + engines: {node: '>=6'} + dependencies: + path-is-inside: 1.0.2 + dev: true + /is-path-inside@3.0.3: resolution: {integrity: sha1-0jE2LlOgf/Kw4Op/7QSRYf/RYoM=} engines: {node: '>=8'} @@ -7391,6 +7748,11 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-regexp@1.0.0: + resolution: {integrity: sha1-/S2INUXEa6xaYz57mgnof6LLUGk=} + engines: {node: '>=0.10.0'} + dev: true + /is-set@2.0.2: resolution: {integrity: sha1-kHVfpMJWLcHF1AJHYNYRm5TKGOw=} dev: true @@ -7511,6 +7873,17 @@ packages: '@pkgjs/parseargs': 0.11.0 dev: true + /jake@10.8.7: + resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 3.2.5 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + dev: true + /java-properties@1.0.2: resolution: {integrity: sha1-zNH6c5B0OKW1w4mCJp0Odx/nghE=} engines: {node: '>= 0.6.0'} @@ -7520,6 +7893,24 @@ packages: resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} dev: true + /jest-worker@26.6.2: + resolution: {integrity: sha1-f3LLxNZDw2Xie5/XdfnQ6qnHqO0=} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 20.10.6 + merge-stream: 2.0.0 + supports-color: 7.2.0 + dev: true + + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 20.10.6 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + /jiti@1.21.0: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true @@ -7577,6 +7968,10 @@ packages: resolution: {integrity: sha1-rnvLNlard6c7pcSb9lTzjmtoYOI=} dev: true + /json-schema@0.4.0: + resolution: {integrity: sha1-995M9u+rg4666zI2R0y7paGTCrU=} + dev: true + /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} dev: true @@ -7616,6 +8011,11 @@ packages: engines: {'0': node >= 0.2.0} dev: true + /jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + dev: true + /jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} @@ -7687,6 +8087,11 @@ packages: - '@types/react-dom' dev: false + /leven@3.1.0: + resolution: {integrity: sha1-d4kd6DQGTMy6gq54QrtrFKE+1/I=} + engines: {node: '>=6'} + dev: true + /levn@0.4.1: resolution: {integrity: sha1-rkViwAdHO5MqYgDUAyaN0v/8at4=} engines: {node: '>= 0.8.0'} @@ -7778,6 +8183,11 @@ packages: import-meta-resolve: 4.0.0 dev: true + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: true + /locate-path@2.0.0: resolution: {integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=} engines: {node: '>=4'} @@ -7824,7 +8234,6 @@ packages: /lodash.debounce@4.0.8: resolution: {integrity: sha1-gteb/zCmfEAF/9XiUVMArZyk168=} - dev: false /lodash.escaperegexp@4.1.2: resolution: {integrity: sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=} @@ -7858,6 +8267,10 @@ packages: resolution: {integrity: sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=} dev: true + /lodash.sortby@4.7.0: + resolution: {integrity: sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=} + dev: true + /lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true @@ -7932,14 +8345,20 @@ packages: react: 18.2.0 dev: false - /lucide-react@0.312.0(react@18.2.0): - resolution: {integrity: sha512-3UZsqyswRXjW4t+nw+InICewSimjPKHuSxiFYqTshv9xkK3tPPntXk/lvXc9pKlXIxm3v9WKyoxcrB6YHhP+dg==} + /lucide-react@0.314.0(react@18.2.0): + resolution: {integrity: sha512-c2zOW7TOyKxPCaSs1og2lFdoI3SR4iii3yrZJU2Zpdc78nOw4fUmrcFNultaCiwZcr4CyiKdzjMdvKNlBBk+UQ==} peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 dependencies: react: 18.2.0 dev: false + /magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + dependencies: + sourcemap-codec: 1.4.8 + dev: true + /map-obj@1.0.1: resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=} engines: {node: '>=0.10.0'} @@ -8701,6 +9120,18 @@ packages: picomatch: 2.3.1 dev: true + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + /mime@3.0.0: resolution: {integrity: sha1-s3RVDco6DBhEOwyVCmpY8ZMc96c=} engines: {node: '>=10.0.0'} @@ -8738,6 +9169,13 @@ packages: brace-expansion: 1.1.11 dev: true + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} @@ -8774,6 +9212,11 @@ packages: resolution: {integrity: sha1-ZyFID+wqEaSImGERWki2y+fMjws=} engines: {node: '>=4'} + /mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + dev: true + /ms@2.1.2: resolution: {integrity: sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=} @@ -8851,7 +9294,6 @@ packages: transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - dev: false /nlcst-to-string@2.0.4: resolution: {integrity: sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg==} @@ -9147,6 +9589,11 @@ packages: mimic-fn: 4.0.0 dev: true + /opener@1.5.2: + resolution: {integrity: sha1-XTfh81B3udysQwE3InGv3rKhNZg=} + hasBin: true + dev: true + /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -9347,6 +9794,10 @@ packages: engines: {node: '>=0.10.0'} dev: true + /path-is-inside@1.0.2: + resolution: {integrity: sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=} + dev: true + /path-key@3.1.1: resolution: {integrity: sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=} engines: {node: '>=8'} @@ -9391,11 +9842,33 @@ packages: hasBin: true dev: true + /pify@2.3.0: + resolution: {integrity: sha1-7RQaasBDqEnqWISY59yosVMw6Qw=} + engines: {node: '>=0.10.0'} + dev: true + /pify@3.0.0: resolution: {integrity: sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=} engines: {node: '>=4'} dev: true + /pify@4.0.1: + resolution: {integrity: sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=} + engines: {node: '>=6'} + dev: true + + /pinkie-promise@2.0.1: + resolution: {integrity: sha1-ITXW36ejWMBprJsXh3YogihFD/o=} + engines: {node: '>=0.10.0'} + dependencies: + pinkie: 2.0.4 + dev: true + + /pinkie@2.0.4: + resolution: {integrity: sha1-clVrgM+g1IqXToDnckjoDtT3+HA=} + engines: {node: '>=0.10.0'} + dev: true + /pino-abstract-transport@0.5.0: resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} dependencies: @@ -9532,7 +10005,6 @@ packages: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: false /postcss@8.4.33: resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} @@ -9604,6 +10076,11 @@ packages: hasBin: true dev: true + /pretty-bytes@5.6.0: + resolution: {integrity: sha1-NWJW9kOAR3PIL2RyP+eMksYr6us=} + engines: {node: '>=6'} + dev: true + /prism-react-renderer@2.3.1(react@18.2.0): resolution: {integrity: sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw==} peerDependencies: @@ -9680,6 +10157,12 @@ packages: engines: {node: '>=10'} dev: true + /randombytes@2.1.0: + resolution: {integrity: sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=} + dependencies: + safe-buffer: 5.2.1 + dev: true + /rc-cascader@3.20.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-lkT9EEwOcYdjZ/jvhLoXGzprK1sijT3/Tp4BLxQQcHDZkkOzzwYQC9HgmKoJz0K7CukMfgvO9KqHeBdgE+pELw==} peerDependencies: @@ -10265,7 +10748,6 @@ packages: loose-envify: 1.4.0 react: 18.2.0 scheduler: 0.23.0 - dev: false /react-draggable@4.4.5(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-OMHzJdyJbYTZo4uQE393fHcqqPYsEtkjfMgvCHr6rejT+Ezn4OZbNyGH50vv+SunC1RMvwOTSWkEODQLzw1M9g==} @@ -10398,7 +10880,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 - dev: false /read-package-json-fast@3.0.2: resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} @@ -10570,7 +11051,6 @@ packages: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: '@babel/runtime': 7.23.7 - dev: false /regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} @@ -10596,7 +11076,6 @@ packages: regjsparser: 0.9.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 - dev: false /registry-auth-token@5.0.2: resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} @@ -10617,7 +11096,6 @@ packages: hasBin: true dependencies: jsesc: 0.5.0 - dev: false /rehype-katex@6.0.3: resolution: {integrity: sha512-ByZlRwRUcWegNbF70CVRm2h/7xy7jQ3R9LaY4VVSvjnoVWwWVhNL60DiZsBpC5tSzYQOCvDbzncIpIjPZWodZA==} @@ -11639,6 +12117,13 @@ packages: resolution: {integrity: sha1-0LfEQasnINBdxM8m4ByJYx2doIs=} dev: true + /rimraf@2.7.1: + resolution: {integrity: sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + /rimraf@3.0.2: resolution: {integrity: sha1-8aVAK6YiCtUswSgrrBrjqkn9Bho=} hasBin: true @@ -11646,6 +12131,26 @@ packages: glob: 7.2.3 dev: true + /rollup-plugin-terser@7.0.2(rollup@2.79.1): + resolution: {integrity: sha1-6Pu6SGmYGy3DWufopQLVxsBNMk0=} + peerDependencies: + rollup: ^2.0.0 + dependencies: + '@babel/code-frame': 7.23.5 + jest-worker: 26.6.2 + rollup: 2.79.1 + serialize-javascript: 4.0.0 + terser: 5.27.0 + dev: true + + /rollup@2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + /run-parallel@1.2.0: resolution: {integrity: sha1-ZtE2jae9+SHrnZW9GpIp5/IaQ+4=} dependencies: @@ -11696,7 +12201,15 @@ packages: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 - dev: false + + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: true /screenfull@5.2.0: resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} @@ -11802,6 +12315,18 @@ packages: lru-cache: 6.0.0 dev: true + /serialize-javascript@4.0.0: + resolution: {integrity: sha1-tSXhI4SJpez8Qq+sw/6Z5mb0sao=} + dependencies: + randombytes: 2.1.0 + dev: true + + /serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + dependencies: + randombytes: 2.1.0 + dev: true + /set-function-length@1.1.1: resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} engines: {node: '>= 0.4'} @@ -11886,6 +12411,15 @@ packages: pkg-conf: 2.1.0 dev: true + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.24 + mrmime: 2.0.0 + totalist: 3.0.1 + dev: true + /skin-tone@2.0.0: resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} engines: {node: '>=8'} @@ -11967,10 +12501,21 @@ packages: sort-object-keys: 1.1.3 dev: true + /source-list-map@2.0.1: + resolution: {integrity: sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ=} + dev: true + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} + /source-map-support@0.5.21: + resolution: {integrity: sha1-BP58f54e0tZiIzwoyys1ufY/bk8=} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + /source-map@0.5.7: resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} engines: {node: '>=0.10.0'} @@ -11985,6 +12530,17 @@ packages: engines: {node: '>= 8'} dev: false + /source-map@0.8.0-beta.0: + resolution: {integrity: sha1-1MG7QsP37pJfAFknuhBwng0dHxE=} + engines: {node: '>= 8'} + dependencies: + whatwg-url: 7.1.0 + dev: true + + /sourcemap-codec@1.4.8: + resolution: {integrity: sha1-6oBL2UhXQC5pktBaOO8a41qatMQ=} + dev: true + /space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} dev: false @@ -12091,7 +12647,6 @@ packages: /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} - dev: false /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} @@ -12192,6 +12747,15 @@ packages: safe-buffer: 5.2.1 dev: true + /stringify-object@3.3.0: + resolution: {integrity: sha1-cDBlrvyhkwDTzoivT1s5VtdVZik=} + engines: {node: '>=4'} + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + dev: true + /strip-ansi@6.0.1: resolution: {integrity: sha1-nibGPTD1NEPpSJSVshBdN7Z6hdk=} engines: {node: '>=8'} @@ -12211,6 +12775,11 @@ packages: engines: {node: '>=4'} dev: true + /strip-comments@2.0.1: + resolution: {integrity: sha1-StEcP7ysF3pnpArCJMoznKHBups=} + engines: {node: '>=10'} + dev: true + /strip-final-newline@2.0.0: resolution: {integrity: sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=} engines: {node: '>=6'} @@ -12271,7 +12840,6 @@ packages: '@babel/core': 7.23.7 client-only: 0.0.1 react: 18.2.0 - dev: false /stylelint-config-clean-order@5.2.0(stylelint@15.11.0): resolution: {integrity: sha512-eAB9ftPa8txPFY2oh4NIE3DFkNzqVEBIALUZhSXP0+6CISPjZPBoOV24shjC9DgOKr7rNPY52DAXBXIBI//Mhg==} @@ -12401,6 +12969,13 @@ packages: has-flag: 4.0.0 dev: true + /supports-color@8.1.1: + resolution: {integrity: sha1-zW/BfihQDP9WwbhsCn/UpUpzAFw=} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + /supports-color@9.4.0: resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} engines: {node: '>=12'} @@ -12478,11 +13053,26 @@ packages: engines: {node: '>=6'} dev: true + /temp-dir@2.0.0: + resolution: {integrity: sha1-vekrBb3+sVFugEycAK1FF38xMh4=} + engines: {node: '>=8'} + dev: true + /temp-dir@3.0.0: resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} engines: {node: '>=14.16'} dev: true + /tempy@0.6.0: + resolution: {integrity: sha1-ZeLDWrwG8RJKl/OHsIMDRCveWfM=} + engines: {node: '>=10'} + dependencies: + is-stream: 2.0.1 + temp-dir: 2.0.0 + type-fest: 0.16.0 + unique-string: 2.0.0 + dev: true + /tempy@3.1.0: resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} engines: {node: '>=14.16'} @@ -12493,6 +13083,41 @@ packages: unique-string: 3.0.0 dev: true + /terser-webpack-plugin@5.3.10(webpack@5.89.0): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.27.0 + webpack: 5.89.0 + dev: true + + /terser@5.27.0: + resolution: {integrity: sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.11.3 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + /text-extensions@2.4.0: resolution: {integrity: sha1-oc/MUM802kG/0EfMdE+ATRaA6jQ=} engines: {node: '>=8'} @@ -12560,10 +13185,21 @@ packages: engines: {node: '>=6', npm: '>=5'} dev: true + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: true + /tr46@0.0.3: resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=} dev: true + /tr46@1.0.1: + resolution: {integrity: sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=} + dependencies: + punycode: 2.3.1 + dev: true + /traverse@0.6.8: resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} engines: {node: '>= 0.4'} @@ -12647,6 +13283,11 @@ packages: prelude-ls: 1.2.1 dev: true + /type-fest@0.16.0: + resolution: {integrity: sha1-MkC4kaeLDerpENvrhlU+VSoUiGA=} + engines: {node: '>=10'} + dev: true + /type-fest@0.18.1: resolution: {integrity: sha1-20vBUaSiz07r+a3V23VQjbbMhB8=} engines: {node: '>=10'} @@ -12768,7 +13409,6 @@ packages: /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha1-MBrNxSVjFnDTn2FG4Od/9rvevdw=} engines: {node: '>=4'} - dev: false /unicode-emoji-modifier-base@1.0.0: resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} @@ -12781,17 +13421,14 @@ packages: dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 unicode-property-aliases-ecmascript: 2.1.0 - dev: false /unicode-match-property-value-ecmascript@2.1.0: resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} engines: {node: '>=4'} - dev: false /unicode-property-aliases-ecmascript@2.1.0: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} - dev: false /unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} @@ -12891,6 +13528,13 @@ packages: vfile: 6.0.1 dev: true + /unique-string@2.0.0: + resolution: {integrity: sha1-OcZFH4GvsnSd4rIz4/fF6IQ72J0=} + engines: {node: '>=8'} + dependencies: + crypto-random-string: 2.0.0 + dev: true + /unique-string@3.0.0: resolution: {integrity: sha1-hKHDd6/1/XqLxrVdgkSyvZDXW5o=} engines: {node: '>=12'} @@ -13035,6 +13679,11 @@ packages: engines: {node: '>= 10.0.0'} dev: true + /upath@1.2.0: + resolution: {integrity: sha1-j2bbzVWog6za5ECK+LA1pQRMGJQ=} + engines: {node: '>=4'} + dev: true + /update-browserslist-db@1.0.13(browserslist@4.22.2): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true @@ -13176,7 +13825,6 @@ packages: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - dev: false /wbuf@1.7.3: resolution: {integrity: sha1-wdjRSTFtPqhShIiVy2oL/oh7h98=} @@ -13196,6 +13844,85 @@ packages: resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=} dev: true + /webidl-conversions@4.0.2: + resolution: {integrity: sha1-qFWYCx8LazWbodXZ+zmulB+qY60=} + dev: true + + /webpack-bundle-analyzer@4.10.1: + resolution: {integrity: sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==} + engines: {node: '>= 10.13.0'} + hasBin: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + acorn: 8.11.3 + acorn-walk: 8.3.2 + commander: 7.2.0 + debounce: 1.2.1 + escape-string-regexp: 4.0.0 + gzip-size: 6.0.0 + html-escaper: 2.0.2 + is-plain-object: 5.0.0 + opener: 1.5.2 + picocolors: 1.0.0 + sirv: 2.0.4 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /webpack-sources@1.4.3: + resolution: {integrity: sha1-7t2OwLko+/HL/plOItLYkPMwqTM=} + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + dev: true + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true + + /webpack@5.89.0: + resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.22.2 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.4.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(webpack@5.89.0) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + /whatwg-url@5.0.0: resolution: {integrity: sha1-lmRU6HZUYuN2RNNib2dCzotwll0=} dependencies: @@ -13203,6 +13930,14 @@ packages: webidl-conversions: 3.0.1 dev: true + /whatwg-url@7.1.0: + resolution: {integrity: sha1-wsSS8eymEpiO/T0iZr4bn8YXDQY=} + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + dev: true + /which-boxed-primitive@1.0.2: resolution: {integrity: sha1-E3V7yJsgmwSf5dhkMOIc9AqJqOY=} dependencies: @@ -13270,6 +14005,169 @@ packages: resolution: {integrity: sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=} dev: true + /workbox-background-sync@7.0.0: + resolution: {integrity: sha512-S+m1+84gjdueM+jIKZ+I0Lx0BDHkk5Nu6a3kTVxP4fdj3gKouRNmhO8H290ybnJTOPfBDtTMXSQA/QLTvr7PeA==} + dependencies: + idb: 7.1.1 + workbox-core: 7.0.0 + dev: true + + /workbox-broadcast-update@7.0.0: + resolution: {integrity: sha512-oUuh4jzZrLySOo0tC0WoKiSg90bVAcnE98uW7F8GFiSOXnhogfNDGZelPJa+6KpGBO5+Qelv04Hqx2UD+BJqNQ==} + dependencies: + workbox-core: 7.0.0 + dev: true + + /workbox-build@7.0.0: + resolution: {integrity: sha512-CttE7WCYW9sZC+nUYhQg3WzzGPr4IHmrPnjKiu3AMXsiNQKx+l4hHl63WTrnicLmKEKHScWDH8xsGBdrYgtBzg==} + engines: {node: '>=16.0.0'} + dependencies: + '@apideck/better-ajv-errors': 0.3.6(ajv@8.12.0) + '@babel/core': 7.23.7 + '@babel/preset-env': 7.23.7(@babel/core@7.23.7) + '@babel/runtime': 7.23.7 + '@rollup/plugin-babel': 5.3.1(@babel/core@7.23.7)(rollup@2.79.1) + '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) + '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) + '@surma/rollup-plugin-off-main-thread': 2.2.3 + ajv: 8.12.0 + common-tags: 1.8.2 + fast-json-stable-stringify: 2.1.0 + fs-extra: 9.1.0 + glob: 7.2.3 + lodash: 4.17.21 + pretty-bytes: 5.6.0 + rollup: 2.79.1 + rollup-plugin-terser: 7.0.2(rollup@2.79.1) + source-map: 0.8.0-beta.0 + stringify-object: 3.3.0 + strip-comments: 2.0.1 + tempy: 0.6.0 + upath: 1.2.0 + workbox-background-sync: 7.0.0 + workbox-broadcast-update: 7.0.0 + workbox-cacheable-response: 7.0.0 + workbox-core: 7.0.0 + workbox-expiration: 7.0.0 + workbox-google-analytics: 7.0.0 + workbox-navigation-preload: 7.0.0 + workbox-precaching: 7.0.0 + workbox-range-requests: 7.0.0 + workbox-recipes: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 + workbox-streams: 7.0.0 + workbox-sw: 7.0.0 + workbox-window: 7.0.0 + transitivePeerDependencies: + - '@types/babel__core' + - supports-color + dev: true + + /workbox-cacheable-response@7.0.0: + resolution: {integrity: sha512-0lrtyGHn/LH8kKAJVOQfSu3/80WDc9Ma8ng0p2i/5HuUndGttH+mGMSvOskjOdFImLs2XZIimErp7tSOPmu/6g==} + dependencies: + workbox-core: 7.0.0 + dev: true + + /workbox-core@7.0.0: + resolution: {integrity: sha512-81JkAAZtfVP8darBpfRTovHg8DGAVrKFgHpOArZbdFd78VqHr5Iw65f2guwjE2NlCFbPFDoez3D3/6ZvhI/rwQ==} + dev: true + + /workbox-expiration@7.0.0: + resolution: {integrity: sha512-MLK+fogW+pC3IWU9SFE+FRStvDVutwJMR5if1g7oBJx3qwmO69BNoJQVaMXq41R0gg3MzxVfwOGKx3i9P6sOLQ==} + dependencies: + idb: 7.1.1 + workbox-core: 7.0.0 + dev: true + + /workbox-google-analytics@7.0.0: + resolution: {integrity: sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==} + dependencies: + workbox-background-sync: 7.0.0 + workbox-core: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 + dev: true + + /workbox-navigation-preload@7.0.0: + resolution: {integrity: sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA==} + dependencies: + workbox-core: 7.0.0 + dev: true + + /workbox-precaching@7.0.0: + resolution: {integrity: sha512-EC0vol623LJqTJo1mkhD9DZmMP604vHqni3EohhQVwhJlTgyKyOkMrZNy5/QHfOby+39xqC01gv4LjOm4HSfnA==} + dependencies: + workbox-core: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 + dev: true + + /workbox-range-requests@7.0.0: + resolution: {integrity: sha512-SxAzoVl9j/zRU9OT5+IQs7pbJBOUOlriB8Gn9YMvi38BNZRbM+RvkujHMo8FOe9IWrqqwYgDFBfv6sk76I1yaQ==} + dependencies: + workbox-core: 7.0.0 + dev: true + + /workbox-recipes@7.0.0: + resolution: {integrity: sha512-DntcK9wuG3rYQOONWC0PejxYYIDHyWWZB/ueTbOUDQgefaeIj1kJ7pdP3LZV2lfrj8XXXBWt+JDRSw1lLLOnww==} + dependencies: + workbox-cacheable-response: 7.0.0 + workbox-core: 7.0.0 + workbox-expiration: 7.0.0 + workbox-precaching: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 + dev: true + + /workbox-routing@7.0.0: + resolution: {integrity: sha512-8YxLr3xvqidnbVeGyRGkaV4YdlKkn5qZ1LfEePW3dq+ydE73hUUJJuLmGEykW3fMX8x8mNdL0XrWgotcuZjIvA==} + dependencies: + workbox-core: 7.0.0 + dev: true + + /workbox-strategies@7.0.0: + resolution: {integrity: sha512-dg3qJU7tR/Gcd/XXOOo7x9QoCI9nk74JopaJaYAQ+ugLi57gPsXycVdBnYbayVj34m6Y8ppPwIuecrzkpBVwbA==} + dependencies: + workbox-core: 7.0.0 + dev: true + + /workbox-streams@7.0.0: + resolution: {integrity: sha512-moVsh+5to//l6IERWceYKGiftc+prNnqOp2sgALJJFbnNVpTXzKISlTIsrWY+ogMqt+x1oMazIdHj25kBSq/HQ==} + dependencies: + workbox-core: 7.0.0 + workbox-routing: 7.0.0 + dev: true + + /workbox-sw@7.0.0: + resolution: {integrity: sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA==} + dev: true + + /workbox-webpack-plugin@7.0.0(webpack@5.89.0): + resolution: {integrity: sha512-R1ZzCHPfzeJjLK2/TpKUhxSQ3fFDCxlWxgRhhSjMQLz3G2MlBnyw/XeYb34e7SGgSv0qG22zEhMIzjMNqNeKbw==} + engines: {node: '>=16.0.0'} + peerDependencies: + webpack: ^4.4.0 || ^5.9.0 + dependencies: + fast-json-stable-stringify: 2.1.0 + pretty-bytes: 5.6.0 + upath: 1.2.0 + webpack: 5.89.0 + webpack-sources: 1.4.3 + workbox-build: 7.0.0 + transitivePeerDependencies: + - '@types/babel__core' + - supports-color + dev: true + + /workbox-window@7.0.0: + resolution: {integrity: sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA==} + dependencies: + '@types/trusted-types': 2.0.7 + workbox-core: 7.0.0 + dev: true + /wrap-ansi@7.0.0: resolution: {integrity: sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM=} engines: {node: '>=10'} @@ -13330,6 +14228,19 @@ packages: weasel-words: 0.1.1 dev: true + /ws@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + /xtend@2.1.2: resolution: {integrity: sha1-bv7MKk2tjmlixJAbM3znuoe10os=} engines: {node: '>=0.4'} diff --git a/public/icons/android-chrome-192x192.png b/public/icons/android-chrome-192x192.png new file mode 100644 index 0000000..cc29879 Binary files /dev/null and b/public/icons/android-chrome-192x192.png differ diff --git a/public/icons/android-chrome-384x384.png b/public/icons/android-chrome-384x384.png new file mode 100644 index 0000000..3794e50 Binary files /dev/null and b/public/icons/android-chrome-384x384.png differ diff --git a/public/icons/icon-512x512.png b/public/icons/icon-512x512.png new file mode 100644 index 0000000..3794e50 Binary files /dev/null and b/public/icons/icon-512x512.png differ diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000..c30d061 --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,27 @@ +{ + "background_color": "#FFFFFF", + "display": "standalone", + "icons": [ + { + "src": "/icons/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "any maskable" + }, + { + "src": "/icons/android-chrome-384x384.png", + "sizes": "384x384", + "type": "image/png" + }, + { + "src": "/icons/icon-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "name": "AgileGPT", + "orientation": "portrait", + "short_name": "AgileGPT App", + "start_url": "/", + "theme_color": "#FFFFFF" +} diff --git a/server.mjs b/server.mjs new file mode 100644 index 0000000..cb71d7c --- /dev/null +++ b/server.mjs @@ -0,0 +1,24 @@ +import fs from 'fs'; +import https from 'https'; +import next from 'next'; + +const port = 3000; +const dev = process.env.NODE_ENV !== 'production'; +const app = next({ dev }); +const handle = app.getRequestHandler(); + +app.prepare().then(() => { + https.createServer({ + // key: fs.readFileSync('./cert/cert.key'), + // cert: fs.readFileSync('./cert/cert.crt'), + // key: fs.readFileSync('./cert/key.pem'), + // cert: fs.readFileSync('./cert/cert.pem'), + key: fs.readFileSync('./localhost-key.pem'), + cert: fs.readFileSync('./localhost.pem'), + }, (req, res) => { + handle(req, res); + }).listen(port, err => { + if (err) throw err; + console.log(`> Ready on https://localhost:${port}`); + }); +}); \ No newline at end of file diff --git a/src/app/chat/[id]/page.tsx b/src/app/chat/[id]/page.tsx new file mode 100644 index 0000000..1793bfb --- /dev/null +++ b/src/app/chat/[id]/page.tsx @@ -0,0 +1,11 @@ +import React from 'react'; + +import Conversation from '../components/Conversation'; + +export default async function Chat() { + return ( + <> + + + ); +} diff --git a/src/app/chat/components/Conversation/index.tsx b/src/app/chat/components/Conversation/index.tsx index 545d559..d701b2d 100644 --- a/src/app/chat/components/Conversation/index.tsx +++ b/src/app/chat/components/Conversation/index.tsx @@ -1,3 +1,6 @@ +'use client'; + +import { usePathname } from 'next/navigation'; import React from 'react'; import { Flexbox } from 'react-layout-kit'; @@ -6,10 +9,12 @@ interface ConversationProps { } const Conversation = React.memo(() => { + const pathname = usePathname(); return (
对话框
+
{pathname}
); diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 820db16..408217e 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,11 +1,16 @@ -import type { Metadata } from 'next'; +import type { Viewport } from 'next'; import GlobalLayout from '@/layout/GlobalLayout'; +import PWAHandlerLayout from '@/layout/PWAHandlerLayout'; import StyleRegistry from '@/layout/StyleRegistry'; -export const metadata: Metadata = { - title: 'Agent Portal', - description: 'Agent Portal', +export { generateMetadata } from './metadata'; + +export const viewport: Viewport = { + themeColor: '#FFFFFF', + initialScale: 1, + maximumScale: 1, + userScalable: false, }; export default function RootLayout({ children }: { children: React.ReactNode }) { @@ -14,7 +19,9 @@ export default function RootLayout({ children }: { children: React.ReactNode }) - {children} + + {children} + diff --git a/src/app/metadata.ts b/src/app/metadata.ts new file mode 100644 index 0000000..f258d27 --- /dev/null +++ b/src/app/metadata.ts @@ -0,0 +1,63 @@ +import type { Metadata } from 'next'; + +import { getOriginServerSide } from '@/utils'; + +const APP_NAME = 'AgileGPT'; +const APP_DEFAULT_TITLE = APP_NAME; +const APP_TITLE_TEMPLATE = '%s - ' + APP_NAME; +const APP_DESCRIPTION = 'Agile GPTs'; + +const metadata: Metadata = { + applicationName: APP_NAME, + metadataBase: new URL('http://localhost:3000'), + title: { + default: APP_DEFAULT_TITLE, + template: APP_TITLE_TEMPLATE, + }, + description: APP_DESCRIPTION, + manifest: '/manifest.json', + appleWebApp: { + capable: true, + statusBarStyle: 'default', + title: APP_DEFAULT_TITLE, + // startUpImage: [], + }, + formatDetection: { + telephone: false, + }, + openGraph: { + type: 'website', + // metadataBase: 'https://tenxcloud.com', + siteName: APP_NAME, + title: { + default: APP_DEFAULT_TITLE, + template: APP_TITLE_TEMPLATE, + }, + description: APP_DESCRIPTION, + }, + twitter: { + card: 'summary', + title: { + default: APP_DEFAULT_TITLE, + template: APP_TITLE_TEMPLATE, + }, + description: APP_DESCRIPTION, + }, +}; + +type Props = { + params: { id: string }; + searchParams: { [key: string]: string | string[] | undefined }; +}; + +export async function generateMetadata(props: Props): Promise { + const origin = getOriginServerSide(); + return Object.assign( + metadata, + origin + ? { + metadataBase: new URL(origin), + } + : {} + ); +} diff --git a/src/app/oidc/auth/page.tsx b/src/app/oidc/auth/page.tsx index 1e6557b..a4363fe 100644 --- a/src/app/oidc/auth/page.tsx +++ b/src/app/oidc/auth/page.tsx @@ -4,14 +4,16 @@ import { redirect } from 'next/navigation'; import queryString from 'query-string'; import oidc from '@/config/oidc.mjs'; +import { getOriginServerSide } from '@/utils'; // import { getUserData } from '@/app/actions/user'; const { client, server } = oidc; const { url } = server; -const { client_id, redirect_uri, origin } = client; +const { client_id, redirect_uri } = client; export default async function AuthServer() { + const origin = getOriginServerSide(); const query = queryString.stringify({ client_id, redirect_uri: `${origin}${redirect_uri}`, diff --git a/src/app/oidc/callback/page.tsx b/src/app/oidc/callback/page.tsx index 7b905c6..fbe7a32 100644 --- a/src/app/oidc/callback/page.tsx +++ b/src/app/oidc/callback/page.tsx @@ -1,15 +1,23 @@ 'use server'; import React from 'react'; + import oidc from '@/config/oidc.mjs'; +import { getOriginServerSide } from '@/utils'; + import Callback from './Callback'; -export default async function CallbackServer({ searchParams }: any) { +export default async function CallbackServer(props: any) { + const { searchParams } = props; const { code } = searchParams; - const { origin, redirect_uri } = oidc.client - const res = await fetch(`${origin}/oidc/token?code=${code}&redirect_uri=${origin}${redirect_uri}`, { - method: 'POST', - }); + const { redirect_uri } = oidc.client; + const origin = getOriginServerSide(); + const res = await fetch( + `${origin}/oidc/token?code=${code}&redirect_uri=${origin}${redirect_uri}`, + { + method: 'POST', + } + ); const data = await res.json(); return ; } diff --git a/src/app/oidc/logout/page.tsx b/src/app/oidc/logout/page.tsx index c9dd2cd..187bb0f 100644 --- a/src/app/oidc/logout/page.tsx +++ b/src/app/oidc/logout/page.tsx @@ -3,10 +3,12 @@ import { redirect } from 'next/navigation'; import oidc from '@/config/oidc.mjs'; +import { getOriginServerSide } from '@/utils'; export default async function LogoutServer() { + const origin = getOriginServerSide(); const { client, server } = oidc; - const { redirect_uri, origin } = client; + const { redirect_uri } = client; const { url } = server; // todo build render err redirect( diff --git a/src/app/setting/SettingClient/BtnList/index.tsx b/src/app/setting/SettingClient/BtnList/index.tsx index a23a67d..8800a1d 100644 --- a/src/app/setting/SettingClient/BtnList/index.tsx +++ b/src/app/setting/SettingClient/BtnList/index.tsx @@ -13,15 +13,17 @@ import { useRouter } from 'next/navigation'; import React from 'react'; import BtnsBlock, { Btn } from '@/components/BtnsBlock'; +import { useInstallPrompt } from '@/layout/PWAHandlerLayout'; +import { AUTH_DATA } from '@/utils/constants'; import { useStyles } from './styles'; -import { AUTH_DATA } from '@/utils/constants'; // interface SettingBtnListProps {} const SettingBtnList = React.memo(() => { const router = useRouter(); const { styles, theme } = useStyles(); + const installPrompt: any = useInstallPrompt(); const btnsUser: Btn[] = React.useMemo( () => [ { @@ -63,6 +65,26 @@ const SettingBtnList = React.memo(() => { { icon: MonitorDown, title: '添加至桌面', + onClick: () => { + if (installPrompt) { + console.warn('installPrompt', installPrompt); + installPrompt.prompt(); + + // 等待用户做出选择 + installPrompt.userChoice.then(choiceResult => { + if (choiceResult.outcome === 'accepted') { + console.warn('用户接受了安装应用'); + // 在这里你可以执行接受安装后的额外逻辑 + } else { + console.warn('用户拒绝了安装应用'); + // 在这里你可以执行拒绝安装后的额外逻辑 + } + + // 清除 installPrompt,因为它不能被重用 + // setInstallPrompt(null); + }); + } + }, }, { icon: MessageCircleMore, @@ -73,7 +95,7 @@ const SettingBtnList = React.memo(() => { title: '关于', }, ], - [] + [installPrompt] ); const btnsSetting: Btn[] = React.useMemo( diff --git a/src/app/setting/SettingClient/styles.ts b/src/app/setting/SettingClient/styles.ts index 807dd4b..c846f74 100644 --- a/src/app/setting/SettingClient/styles.ts +++ b/src/app/setting/SettingClient/styles.ts @@ -12,7 +12,6 @@ export const useStyles = createStyles(({ token }) => ({ content: { maxWidth: '600px', margin: '0 auto', - paddingTop: '64px', - paddingBottom: '24px', + padding: '64px 16px 24px 16px', }, })); diff --git a/src/app/setting/data-control/page.tsx b/src/app/setting/data-control/page.tsx index f87e9f5..c2a087b 100644 --- a/src/app/setting/data-control/page.tsx +++ b/src/app/setting/data-control/page.tsx @@ -8,7 +8,6 @@ export default async function DesktopPage() { const props = { user, }; - // todo fetch server data return ( <> diff --git a/src/app/setting/page.tsx b/src/app/setting/page.tsx index 2602d7f..e943af1 100644 --- a/src/app/setting/page.tsx +++ b/src/app/setting/page.tsx @@ -1,14 +1,18 @@ +import type { Metadata } from 'next'; import React from 'react'; import { getUserData } from '../actions/user'; import SettingClient from './SettingClient/Index'; +export const metadata: Metadata = { + title: '个人设置', +}; + export default async function DesktopPage() { const user = await getUserData(); const props = { user, }; - // todo fetch server data return ( <> diff --git a/src/app/setting/user-info/page.tsx b/src/app/setting/user-info/page.tsx index f415ff5..fac6cf0 100644 --- a/src/app/setting/user-info/page.tsx +++ b/src/app/setting/user-info/page.tsx @@ -8,7 +8,6 @@ export default async function DesktopPage() { const props = { user, }; - // todo fetch server data return ( <> diff --git a/src/config/oidc.mjs b/src/config/oidc.mjs index 34f32d4..69b6b3e 100644 --- a/src/config/oidc.mjs +++ b/src/config/oidc.mjs @@ -8,6 +8,5 @@ export default { client_id: process.env.CLIENT_ID, client_secret: process.env.CLIENT_SECRET, redirect_uri: '/oidc/callback', - origin: process.env.CLIENT_ORIGIN, }, }; diff --git a/src/layout/AppLayout/SideBar/Chats/Item.tsx b/src/layout/AppLayout/SideBar/Chats/Item.tsx index 6bdae00..ade71b1 100644 --- a/src/layout/AppLayout/SideBar/Chats/Item.tsx +++ b/src/layout/AppLayout/SideBar/Chats/Item.tsx @@ -3,9 +3,12 @@ import { GoogleOutlined } from '@ant-design/icons'; import { Flex, Typography } from 'antd'; import { createStyles } from 'antd-style'; +import classNames from 'classnames'; import Link from 'next/link'; +import { useParams, usePathname } from 'next/navigation'; import React from 'react'; -import { useDispatch, useSelector } from 'react-redux'; + +import { DEFAULT_CHAT } from '@/utils/constants'; export const useStyles = createStyles(({ token }) => { const activeStyle = { @@ -56,6 +59,7 @@ export const useStyles = createStyles(({ token }) => { }; }); +const CHAT_OTHER_PAGES = new Set(['/chat/bot/create']); interface Props { data: { key: string; @@ -66,18 +70,18 @@ interface Props { const ChatItem: any = (props: Props) => { const { data } = props; const { styles } = useStyles(); - const dispatch = useDispatch(); - const activeChat = useSelector((store: any) => store.activeChat); + const { id: activeChat } = useParams(); + const pathname = usePathname(); + const isChatPage = pathname.startsWith('/chat') && !CHAT_OTHER_PAGES.has(pathname); + const isDefaultChat = data.key === DEFAULT_CHAT; return ( { - dispatch({ - type: 'CLICK_CHAT', - activeChat: data.key, - }); - }} + className={classNames( + styles.chatItem, + isChatPage && + (activeChat === data.key || (!activeChat && isDefaultChat) ? styles.activeItem : '') + )} + href={isDefaultChat ? '/chat' : `/chat/${data.key}`} >
diff --git a/src/layout/AppLayout/SideBar/Chats/index.tsx b/src/layout/AppLayout/SideBar/Chats/index.tsx index 1b5b9b9..47a2633 100644 --- a/src/layout/AppLayout/SideBar/Chats/index.tsx +++ b/src/layout/AppLayout/SideBar/Chats/index.tsx @@ -4,17 +4,23 @@ import classnames from 'classnames'; import React from 'react'; import { getChatList } from '@/app/actions/chats'; +import { DEFAULT_CHAT } from '@/utils/constants'; import ChatItem from './Item'; import styles from './index.module.css'; +const default_chat_obj: any = { + key: DEFAULT_CHAT, + value: '默认对话', +}; + const Chats: any = async () => { const list = await getChatList(); return (
- {list.map((item: any, idx: number) => ( - + {[default_chat_obj, ...list].map((item: any, idx: number) => ( + ))}
diff --git a/src/layout/AppLayout/SideBar/index.module.css b/src/layout/AppLayout/SideBar/index.module.css index 5b5ce66..610bda7 100644 --- a/src/layout/AppLayout/SideBar/index.module.css +++ b/src/layout/AppLayout/SideBar/index.module.css @@ -41,6 +41,9 @@ width: 100%; transition: var(--slide-transition); } + .sidebar.hide_sidebar { + display: none; + } [dir='ltr'] .sidebar { left: 0; diff --git a/src/layout/AppLayout/SideBar/index.tsx b/src/layout/AppLayout/SideBar/index.tsx index 99b27fb..7b36d13 100644 --- a/src/layout/AppLayout/SideBar/index.tsx +++ b/src/layout/AppLayout/SideBar/index.tsx @@ -1,3 +1,5 @@ +import classNames from 'classnames'; +import { headers } from 'next/headers'; import React from 'react'; import { User } from '@/types/user'; @@ -7,9 +9,13 @@ import SideBarHeader from './SideBarHeader'; import UserInfoBottom from './UserInfoBottom'; import styles from './index.module.css'; -export default function SideBar({ user }: { user: User }) { +export default function SideBar(props: any | User) { + const { user } = props; + const heads = headers(); + const pathname: any = heads.get('next-url'); // get pathname server side + const showSidebar = ['/chat'].includes(pathname); return ( -
+
diff --git a/src/layout/PWAHandlerLayout/index.tsx b/src/layout/PWAHandlerLayout/index.tsx new file mode 100644 index 0000000..17e6285 --- /dev/null +++ b/src/layout/PWAHandlerLayout/index.tsx @@ -0,0 +1,32 @@ +'use client'; + +import { createContext, useContext, useEffect, useState } from 'react'; + +// 创建一个上下文来共享安装提示事件 +const InstallPromptContext = createContext(null); + +export function useInstallPrompt() { + return useContext(InstallPromptContext); +} + +export default function PWAHandlerLayout({ children }: { children: React.ReactNode }) { + const [installPrompt, setInstallPrompt] = useState(null); + + useEffect(() => { + const handleBeforeInstallPrompt = (e: Event) => { + e.preventDefault(); + console.warn('beforeinstallprompt event fired ==========='); + setInstallPrompt(e); + }; + + window.addEventListener('beforeinstallprompt', handleBeforeInstallPrompt); + + return () => { + window.removeEventListener('beforeinstallprompt', handleBeforeInstallPrompt); + }; + }, []); + + return ( + {children} + ); +} diff --git a/src/store/index.ts b/src/store/index.ts index e50451e..baec6a1 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -12,7 +12,7 @@ let store: any; const reducer = (state = {}, action: any) => { switch (action.type) { case 'TRIGGER_SHEME': { - localStorage.setItem('theme', action.theme); // todo remove + localStorage.setItem('theme', action.theme); // todo remove, use user profile by bff return { ...state, theme: action.theme, diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 93b70f5..e84dba7 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -1 +1,2 @@ export const AUTH_DATA = 'authData'; +export const DEFAULT_CHAT = 'default_chat'; diff --git a/src/utils/index.ts b/src/utils/index.ts index 989498b..e0cb983 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,5 +1,6 @@ import { headers } from 'next/headers'; import { UAParser } from 'ua-parser-js'; + /** * check mobile device in server */ @@ -23,3 +24,11 @@ export const atob = (encodedData: string) => { export const btoa = (stringToEncode: string) => { return Buffer.from(stringToEncode).toString('base64'); }; + +export const getOriginServerSide = () => { + const heads = headers(); + if (!heads.get('x-forwarded-proto') || !heads.get('host')) { + throw new Error('get origin err'); + } + return `${heads.get('x-forwarded-proto')}://${heads.get('host')}`; +};