diff --git a/.vscode/settings.json b/.vscode/settings.json index 1cbae7bd9..08abf34f4 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,15 @@ { - "editor.formatOnSave": true, //每次保存自动格式化 + "editor.formatOnSave": true, "editor.mouseWheelZoom": true, - "typescript.tsdk": "./client/node_modules/typescript/lib", - "prettier.prettierPath": "./node_modules/prettier" + "typescript.tsdk": "client/node_modules/typescript/lib", + "prettier.prettierPath": "./node_modules/prettier", + "i18n-ally.localesPaths": [ + "client/public/locales" + ], + "i18n-ally.enabledParsers": ["json"], + "i18n-ally.keystyle": "nested", + "i18n-ally.sortKeys": true, + "i18n-ally.keepFulfilled": true, + "i18n-ally.sourceLanguage": "zh", // 根据此语言文件翻译其他语言文件的变量和内容 + "i18n-ally.displayLanguage": "en", // 显示语言 } \ No newline at end of file diff --git a/client/next-i18next.config.js b/client/next-i18next.config.js new file mode 100644 index 000000000..745f9f71e --- /dev/null +++ b/client/next-i18next.config.js @@ -0,0 +1,12 @@ +//next-i18next.config.js +/** + * @type {import('next-i18next').UserConfig} + */ + +module.exports = { + i18n: { + defaultLocale: 'en', + locales: ['en', 'zh', 'zh-Hans'], + localeDetection: false + } +}; diff --git a/client/next.config.js b/client/next.config.js index 8d9031f46..e07124107 100644 --- a/client/next.config.js +++ b/client/next.config.js @@ -1,11 +1,22 @@ /** @type {import('next').NextConfig} */ +const { i18n } = require('./next-i18next.config'); const nextConfig = { + i18n, output: 'standalone', reactStrictMode: false, compress: true, - webpack(config) { + webpack(config, { isServer }) { + if (!isServer) { + config.resolve = { + ...config.resolve, + fallback: { + ...config.resolve.fallback, + fs: false + } + }; + } config.experiments = { asyncWebAssembly: true, layers: true diff --git a/client/package.json b/client/package.json index 206f86cce..a4e220540 100644 --- a/client/package.json +++ b/client/package.json @@ -25,12 +25,14 @@ "cookie": "^0.5.0", "crypto": "^1.0.1", "date-fns": "^2.30.0", - "echarts": "^5.4.1", "dayjs": "^1.11.7", + "echarts": "^5.4.1", "formidable": "^2.1.1", "framer-motion": "^9.0.6", "hyperdown": "^2.4.29", + "i18next": "^22.5.1", "immer": "^9.0.19", + "js-cookie": "^3.0.5", "jsonwebtoken": "^9.0.0", "lodash": "^4.17.21", "mammoth": "^1.5.1", @@ -38,6 +40,7 @@ "mongoose": "^6.10.0", "nanoid": "^4.0.1", "next": "13.1.6", + "next-i18next": "^13.3.0", "nextjs-cors": "^2.1.2", "nodemailer": "^6.9.1", "nprogress": "^0.2.0", @@ -48,6 +51,7 @@ "react-day-picker": "^8.7.1", "react-dom": "18.2.0", "react-hook-form": "^7.43.1", + "react-i18next": "^12.3.1", "react-markdown": "^8.0.7", "react-syntax-highlighter": "^15.5.0", "reactflow": "^11.7.4", @@ -65,6 +69,7 @@ "@svgr/webpack": "^6.5.1", "@types/cookie": "^0.5.1", "@types/formidable": "^2.0.5", + "@types/js-cookie": "^3.0.3", "@types/jsonwebtoken": "^9.0.1", "@types/lodash": "^4.14.191", "@types/node": "18.14.0", diff --git a/client/pnpm-lock.yaml b/client/pnpm-lock.yaml index a9274b9c7..eae6fd90f 100644 --- a/client/pnpm-lock.yaml +++ b/client/pnpm-lock.yaml @@ -68,9 +68,15 @@ dependencies: hyperdown: specifier: ^2.4.29 version: registry.npmmirror.com/hyperdown@2.4.29 + i18next: + specifier: ^22.5.1 + version: registry.npmmirror.com/i18next@22.5.1 immer: specifier: ^9.0.19 version: registry.npmmirror.com/immer@9.0.19 + js-cookie: + specifier: ^3.0.5 + version: registry.npmmirror.com/js-cookie@3.0.5 jsonwebtoken: specifier: ^9.0.0 version: registry.npmmirror.com/jsonwebtoken@9.0.0 @@ -92,6 +98,9 @@ dependencies: next: specifier: 13.1.6 version: registry.npmmirror.com/next@13.1.6(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0)(sass@1.58.3) + next-i18next: + specifier: ^13.3.0 + version: registry.npmmirror.com/next-i18next@13.3.0(i18next@22.5.1)(next@13.1.6)(react-i18next@12.3.1)(react@18.2.0) nextjs-cors: specifier: ^2.1.2 version: registry.npmmirror.com/nextjs-cors@2.1.2(next@13.1.6) @@ -122,6 +131,9 @@ dependencies: react-hook-form: specifier: ^7.43.1 version: registry.npmmirror.com/react-hook-form@7.43.1(react@18.2.0) + react-i18next: + specifier: ^12.3.1 + version: registry.npmmirror.com/react-i18next@12.3.1(i18next@22.5.1)(react-dom@18.2.0)(react@18.2.0) react-markdown: specifier: ^8.0.7 version: registry.npmmirror.com/react-markdown@8.0.7(@types/react@18.0.28)(react@18.2.0) @@ -169,6 +181,9 @@ devDependencies: '@types/formidable': specifier: ^2.0.5 version: registry.npmmirror.com/@types/formidable@2.0.5 + '@types/js-cookie': + specifier: ^3.0.3 + version: registry.npmmirror.com/@types/js-cookie@3.0.3 '@types/jsonwebtoken': specifier: ^9.0.1 version: registry.npmmirror.com/@types/jsonwebtoken@9.0.1 @@ -5595,6 +5610,21 @@ packages: '@types/unist': registry.npmmirror.com/@types/unist@2.0.6 dev: false + registry.npmmirror.com/@types/hoist-non-react-statics@3.3.1: + resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz} + name: '@types/hoist-non-react-statics' + version: 3.3.1 + dependencies: + '@types/react': registry.npmmirror.com/@types/react@18.0.28 + hoist-non-react-statics: registry.npmmirror.com/hoist-non-react-statics@3.3.2 + dev: false + + registry.npmmirror.com/@types/js-cookie@3.0.3: + resolution: {integrity: sha512-Xe7IImK09HP1sv2M/aI+48a20VX+TdRJucfq4vfRVy6nWN8PYPOEnlMRSgxJAgYQIXJVL8dZ4/ilAM7dWNaOww==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/js-cookie/-/js-cookie-3.0.3.tgz} + name: '@types/js-cookie' + version: 3.0.3 + dev: true + registry.npmmirror.com/@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/json5/-/json5-0.0.29.tgz} name: '@types/json5' @@ -6550,6 +6580,13 @@ packages: browserslist: registry.npmmirror.com/browserslist@4.21.7 dev: true + registry.npmmirror.com/core-js@3.31.1: + resolution: {integrity: sha512-2sKLtfq1eFST7l7v62zaqXacPc7uG8ZAya8ogijLhTtaKNcpzpB4TMoTw2Si+8GYKRwFPMMtUT0263QFWFfqyQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/core-js/-/core-js-3.31.1.tgz} + name: core-js + version: 3.31.1 + requiresBuild: true + dev: false + registry.npmmirror.com/core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz} name: core-util-is @@ -8555,6 +8592,14 @@ packages: react-is: registry.npmmirror.com/react-is@16.13.1 dev: false + registry.npmmirror.com/html-parse-stringify@3.0.1: + resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz} + name: html-parse-stringify + version: 3.0.1 + dependencies: + void-elements: registry.npmmirror.com/void-elements@3.1.0 + dev: false + registry.npmmirror.com/http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz} name: http-errors @@ -8632,6 +8677,20 @@ packages: version: 2.4.29 dev: false + registry.npmmirror.com/i18next-fs-backend@2.1.5: + resolution: {integrity: sha512-7fgSH8nVhXSBYPHR/W3tEXXhcnwHwNiND4Dfx9knzPzdsWTUTL/TdDVV+DY0dL0asHKLbdoJaXS4LdVW6R8MVQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/i18next-fs-backend/-/i18next-fs-backend-2.1.5.tgz} + name: i18next-fs-backend + version: 2.1.5 + dev: false + + registry.npmmirror.com/i18next@22.5.1: + resolution: {integrity: sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/i18next/-/i18next-22.5.1.tgz} + name: i18next + version: 22.5.1 + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.22.5 + dev: false + registry.npmmirror.com/iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz} name: iconv-lite @@ -9091,6 +9150,13 @@ packages: version: 2.0.0 dev: true + registry.npmmirror.com/js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz} + name: js-cookie + version: 3.0.5 + engines: {node: '>=14'} + dev: false + registry.npmmirror.com/js-sdsl@4.4.1: resolution: {integrity: sha512-6Gsx8R0RucyePbWqPssR8DyfuXmLBooYN5cZFZKjHGnQuaf7pEzhtpceagJxVu4LqhYY5EYA7nko3FmeHZ1KbA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/js-sdsl/-/js-sdsl-4.4.1.tgz} name: js-sdsl @@ -10177,6 +10243,29 @@ packages: engines: {node: '>= 0.4.0'} dev: false + registry.npmmirror.com/next-i18next@13.3.0(i18next@22.5.1)(next@13.1.6)(react-i18next@12.3.1)(react@18.2.0): + resolution: {integrity: sha512-X4kgi51BCOoGdKbv87eZ8OU7ICQDg5IP+T5fNjqDY3os9ea0OKTY4YpAiVFiwcI9XimcUmSPbKO4a9jFUyYSgg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/next-i18next/-/next-i18next-13.3.0.tgz} + id: registry.npmmirror.com/next-i18next/13.3.0 + name: next-i18next + version: 13.3.0 + engines: {node: '>=14'} + peerDependencies: + i18next: ^22.0.6 + next: '>= 12.0.0' + react: '>= 17.0.2' + react-i18next: ^12.2.0 + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.22.5 + '@types/hoist-non-react-statics': registry.npmmirror.com/@types/hoist-non-react-statics@3.3.1 + core-js: registry.npmmirror.com/core-js@3.31.1 + hoist-non-react-statics: registry.npmmirror.com/hoist-non-react-statics@3.3.2 + i18next: registry.npmmirror.com/i18next@22.5.1 + i18next-fs-backend: registry.npmmirror.com/i18next-fs-backend@2.1.5 + next: registry.npmmirror.com/next@13.1.6(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0)(sass@1.58.3) + react: registry.npmmirror.com/react@18.2.0 + react-i18next: registry.npmmirror.com/react-i18next@12.3.1(i18next@22.5.1)(react-dom@18.2.0)(react@18.2.0) + dev: false + registry.npmmirror.com/next@13.1.6(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0)(sass@1.58.3): resolution: {integrity: sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/next/-/next-13.1.6.tgz} id: registry.npmmirror.com/next/13.1.6 @@ -10961,6 +11050,29 @@ packages: react: registry.npmmirror.com/react@18.2.0 dev: false + registry.npmmirror.com/react-i18next@12.3.1(i18next@22.5.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-5v8E2XjZDFzK7K87eSwC7AJcAkcLt5xYZ4+yTPDAW1i7C93oOY1dnr4BaQM7un4Hm+GmghuiPvevWwlca5PwDA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-i18next/-/react-i18next-12.3.1.tgz} + id: registry.npmmirror.com/react-i18next/12.3.1 + name: react-i18next + version: 12.3.1 + peerDependencies: + i18next: '>= 19.0.0' + react: '>= 16.8.0' + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.22.5 + html-parse-stringify: registry.npmmirror.com/html-parse-stringify@3.0.1 + i18next: registry.npmmirror.com/i18next@22.5.1 + react: registry.npmmirror.com/react@18.2.0 + react-dom: registry.npmmirror.com/react-dom@18.2.0(react@18.2.0) + dev: false + registry.npmmirror.com/react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz} name: react-is @@ -12431,6 +12543,13 @@ packages: acorn-walk: registry.npmmirror.com/acorn-walk@8.2.0 dev: false + registry.npmmirror.com/void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/void-elements/-/void-elements-3.1.0.tgz} + name: void-elements + version: 3.1.0 + engines: {node: '>=0.10.0'} + dev: false + registry.npmmirror.com/web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/web-namespaces/-/web-namespaces-2.0.1.tgz} name: web-namespaces diff --git a/client/public/locales/en/common.json b/client/public/locales/en/common.json new file mode 100644 index 000000000..b710e4961 --- /dev/null +++ b/client/public/locales/en/common.json @@ -0,0 +1,7 @@ +{ + "home": { + "Quickly build AI question and answer library": "Quickly build AI question and answer library", + "Start Now": "Start Now", + "Visual AI orchestration": "Visual AI orchestration" + } +} diff --git a/client/public/locales/zh/common.json b/client/public/locales/zh/common.json new file mode 100644 index 000000000..37494028b --- /dev/null +++ b/client/public/locales/zh/common.json @@ -0,0 +1,7 @@ +{ + "home": { + "Quickly build AI question and answer library": "快速搭建 AI 问答系统", + "Start Now": "立即开始", + "Visual AI orchestration": "可视化 AI 编排" + } +} diff --git a/client/src/pages/_app.tsx b/client/src/pages/_app.tsx index 32b76fa58..1c025494f 100644 --- a/client/src/pages/_app.tsx +++ b/client/src/pages/_app.tsx @@ -8,11 +8,12 @@ import { theme } from '@/constants/theme'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import NProgress from 'nprogress'; //nprogress module import Router from 'next/router'; +import { clientInitData, feConfigs } from '@/store/static'; +import { appWithTranslation } from 'next-i18next'; +import { setLangStore } from '@/utils/i18n'; + import 'nprogress/nprogress.css'; import '@/styles/reset.scss'; -import { clientInitData, feConfigs } from '@/store/static'; -import { NextPageContext } from 'next'; -import { useGlobalStore } from '@/store/global'; //Binding events. Router.events.on('routeChangeStart', () => NProgress.start()); @@ -30,14 +31,9 @@ const queryClient = new QueryClient({ } }); -function App({ Component, pageProps, isPc }: AppProps & { isPc?: boolean; response: any }) { +function App({ Component, pageProps }: AppProps) { const [googleClientVerKey, setGoogleVerKey] = useState(); const [baiduTongji, setBaiduTongji] = useState(); - const { initIsPc } = useGlobalStore(); - - // if (isPc !== undefined) { - // initIsPc(isPc); - // } useEffect(() => { (async () => { @@ -47,12 +43,14 @@ function App({ Component, pageProps, isPc }: AppProps & { isPc?: boolean; respon setGoogleVerKey(googleClientVerKey); setBaiduTongji(baiduTongji); })(); + + setLangStore('en'); }, []); return ( <> - {feConfigs?.systemTitle || 'AI知识库'} + {feConfigs?.systemTitle || 'FastAI'} { - const reg = /mobile/gi; - - const isPc = !reg.test(ctx.req?.headers?.['user-agent'] || ''); - - return { isPc }; -}; - -export default App; +export default appWithTranslation(App); diff --git a/client/src/pages/index.tsx b/client/src/pages/index.tsx index ca25d468b..184adbfb0 100644 --- a/client/src/pages/index.tsx +++ b/client/src/pages/index.tsx @@ -4,6 +4,8 @@ import { useRouter } from 'next/router'; import { useGlobalStore } from '@/store/global'; import { beianText } from '@/store/static'; import { feConfigs } from '@/store/static'; +import { serviceSideProps } from '@/utils/i18n'; +import { useTranslation } from 'next-i18next'; import styles from './index.module.scss'; import axios from 'axios'; @@ -11,6 +13,7 @@ import MyIcon from '@/components/Icon'; const Home = () => { const router = useRouter(); + const { t } = useTranslation(); const { inviterId } = router.query as { inviterId: string }; const { isPc } = useGlobalStore(); const [star, setStar] = useState(1500); @@ -157,9 +160,11 @@ const Home = () => { {''} { {feConfigs?.systemTitle || 'AI知识库'} - 可视化 AI 编排 + {t('home.Visual AI orchestration')} - 快速搭建 AI 问答库 + {t('home.Quickly build AI question and answer library')} @@ -205,7 +210,7 @@ const Home = () => { py={[2, 3]} onClick={() => router.push(`/app/list`)} > - 立即开始 + {t('home.Start Now')} @@ -227,4 +232,12 @@ const Home = () => { ); }; +export async function getServerSideProps(content: any) { + return { + props: { + ...(await serviceSideProps(content)) + } + }; +} + export default Home; diff --git a/client/src/utils/i18n.ts b/client/src/utils/i18n.ts new file mode 100644 index 000000000..d3befddbd --- /dev/null +++ b/client/src/utils/i18n.ts @@ -0,0 +1,29 @@ +import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; +import Cookies from 'js-cookie'; + +export const LANG_KEY = 'NEXT_LOCALE_LANG'; +export enum LangEnum { + 'zh' = 'zh', + 'en' = 'en' +} + +export const setLangStore = (value: `${LangEnum}`) => { + return Cookies.set(LANG_KEY, value, { expires: 7, sameSite: 'None', secure: true }); +}; + +export const getLangStore = () => { + return Cookies.get(LANG_KEY) || LangEnum.zh; +}; + +export const removeLangStore = () => { + Cookies.remove(LANG_KEY); +}; + +export const serviceSideProps = (content: any) => { + return serverSideTranslations( + content.req.cookies[LANG_KEY] || 'en', + undefined, + null, + content.locales + ); +}; diff --git a/package.json b/package.json index 63f578a58..e6623e18d 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,11 @@ }, "devDependencies": { "husky": "^8.0.3", + "i18next": "^23.2.11", "lint-staged": "^13.2.1", - "prettier": "^2.8.7" + "next-i18next": "^14.0.0", + "prettier": "^2.8.7", + "react-i18next": "^13.0.2" }, "lint-staged": { "./**/**/*.{ts,tsx,scss}": "npm run format" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 131839c5e..a0d14cde9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,15 +8,181 @@ devDependencies: husky: specifier: ^8.0.3 version: registry.npmmirror.com/husky@8.0.3 + i18next: + specifier: ^23.2.11 + version: registry.npmmirror.com/i18next@23.2.11 lint-staged: specifier: ^13.2.1 version: registry.npmmirror.com/lint-staged@13.2.1 + next-i18next: + specifier: ^14.0.0 + version: registry.npmmirror.com/next-i18next@14.0.0(i18next@23.2.11)(next@13.4.12)(react-i18next@13.0.2)(react@18.2.0) prettier: specifier: ^2.8.7 version: registry.npmmirror.com/prettier@2.8.7 + react-i18next: + specifier: ^13.0.2 + version: registry.npmmirror.com/react-i18next@13.0.2(i18next@23.2.11)(react-dom@18.2.0)(react@18.2.0) packages: + registry.npmmirror.com/@babel/runtime@7.22.6: + resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/runtime/-/runtime-7.22.6.tgz} + name: '@babel/runtime' + version: 7.22.6 + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: registry.npmmirror.com/regenerator-runtime@0.13.11 + dev: true + + registry.npmmirror.com/@next/env@13.4.12: + resolution: {integrity: sha512-RmHanbV21saP/6OEPBJ7yJMuys68cIf8OBBWd7+uj40LdpmswVAwe1uzeuFyUsd6SfeITWT3XnQfn6wULeKwDQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@next/env/-/env-13.4.12.tgz} + name: '@next/env' + version: 13.4.12 + dev: true + + registry.npmmirror.com/@next/swc-darwin-arm64@13.4.12: + resolution: {integrity: sha512-deUrbCXTMZ6ZhbOoloqecnUeNpUOupi8SE2tx4jPfNS9uyUR9zK4iXBvH65opVcA/9F5I/p8vDXSYbUlbmBjZg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.12.tgz} + name: '@next/swc-darwin-arm64' + version: 13.4.12 + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + registry.npmmirror.com/@next/swc-darwin-x64@13.4.12: + resolution: {integrity: sha512-WRvH7RxgRHlC1yb5oG0ZLx8F7uci9AivM5/HGGv9ZyG2Als8Ij64GC3d+mQ5sJhWjusyU6T6V1WKTUoTmOB0zQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.12.tgz} + name: '@next/swc-darwin-x64' + version: 13.4.12 + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + registry.npmmirror.com/@next/swc-linux-arm64-gnu@13.4.12: + resolution: {integrity: sha512-YEKracAWuxp54tKiAvvq73PUs9lok57cc8meYRibTWe/VdPB2vLgkTVWFcw31YDuRXdEhdX0fWS6Q+ESBhnEig==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.12.tgz} + name: '@next/swc-linux-arm64-gnu' + version: 13.4.12 + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + registry.npmmirror.com/@next/swc-linux-arm64-musl@13.4.12: + resolution: {integrity: sha512-LhJR7/RAjdHJ2Isl2pgc/JaoxNk0KtBgkVpiDJPVExVWA1c6gzY57+3zWuxuyWzTG+fhLZo2Y80pLXgIJv7g3g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.12.tgz} + name: '@next/swc-linux-arm64-musl' + version: 13.4.12 + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + registry.npmmirror.com/@next/swc-linux-x64-gnu@13.4.12: + resolution: {integrity: sha512-1DWLL/B9nBNiQRng+1aqs3OaZcxC16Nf+mOnpcrZZSdyKHek3WQh6j/fkbukObgNGwmCoVevLUa/p3UFTTqgqg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.12.tgz} + name: '@next/swc-linux-x64-gnu' + version: 13.4.12 + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + registry.npmmirror.com/@next/swc-linux-x64-musl@13.4.12: + resolution: {integrity: sha512-kEAJmgYFhp0VL+eRWmUkVxLVunn7oL9Mdue/FS8yzRBVj7Z0AnIrHpTIeIUl1bbdQq1VaoOztnKicAjfkLTRCQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.12.tgz} + name: '@next/swc-linux-x64-musl' + version: 13.4.12 + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + registry.npmmirror.com/@next/swc-win32-arm64-msvc@13.4.12: + resolution: {integrity: sha512-GMLuL/loR6yIIRTnPRY6UGbLL9MBdw2anxkOnANxvLvsml4F0HNIgvnU3Ej4BjbqMTNjD4hcPFdlEow4XHPdZA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.12.tgz} + name: '@next/swc-win32-arm64-msvc' + version: 13.4.12 + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + registry.npmmirror.com/@next/swc-win32-ia32-msvc@13.4.12: + resolution: {integrity: sha512-PhgNqN2Vnkm7XaMdRmmX0ZSwZXQAtamBVSa9A/V1dfKQCV1rjIZeiy/dbBnVYGdj63ANfsOR/30XpxP71W0eww==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.12.tgz} + name: '@next/swc-win32-ia32-msvc' + version: 13.4.12 + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + registry.npmmirror.com/@next/swc-win32-x64-msvc@13.4.12: + resolution: {integrity: sha512-Z+56e/Ljt0bUs+T+jPjhFyxYBcdY2RIq9ELFU+qAMQMteHo7ymbV7CKmlcX59RI9C4YzN8PgMgLyAoi916b5HA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.12.tgz} + name: '@next/swc-win32-x64-msvc' + version: 13.4.12 + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + registry.npmmirror.com/@swc/helpers@0.5.1: + resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@swc/helpers/-/helpers-0.5.1.tgz} + name: '@swc/helpers' + version: 0.5.1 + dependencies: + tslib: registry.npmmirror.com/tslib@2.5.3 + dev: true + + registry.npmmirror.com/@types/hoist-non-react-statics@3.3.1: + resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz} + name: '@types/hoist-non-react-statics' + version: 3.3.1 + dependencies: + '@types/react': registry.npmmirror.com/@types/react@18.2.16 + hoist-non-react-statics: registry.npmmirror.com/hoist-non-react-statics@3.3.2 + dev: true + + registry.npmmirror.com/@types/prop-types@15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.5.tgz} + name: '@types/prop-types' + version: 15.7.5 + dev: true + + registry.npmmirror.com/@types/react@18.2.16: + resolution: {integrity: sha512-LLFWr12ZhBJ4YVw7neWLe6Pk7Ey5R9OCydfuMsz1L8bZxzaawJj2p06Q8/EFEHDeTBQNFLF62X+CG7B2zIyu0Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/react/-/react-18.2.16.tgz} + name: '@types/react' + version: 18.2.16 + dependencies: + '@types/prop-types': registry.npmmirror.com/@types/prop-types@15.7.5 + '@types/scheduler': registry.npmmirror.com/@types/scheduler@0.16.3 + csstype: registry.npmmirror.com/csstype@3.1.2 + dev: true + + registry.npmmirror.com/@types/scheduler@0.16.3: + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/scheduler/-/scheduler-0.16.3.tgz} + name: '@types/scheduler' + version: 0.16.3 + dev: true + registry.npmmirror.com/aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/aggregate-error/-/aggregate-error-3.1.0.tgz} name: aggregate-error @@ -82,6 +248,21 @@ packages: fill-range: registry.npmmirror.com/fill-range@7.0.1 dev: true + registry.npmmirror.com/busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/busboy/-/busboy-1.6.0.tgz} + name: busboy + version: 1.6.0 + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: registry.npmmirror.com/streamsearch@1.1.0 + dev: true + + registry.npmmirror.com/caniuse-lite@1.0.30001517: + resolution: {integrity: sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz} + name: caniuse-lite + version: 1.0.30001517 + dev: true + registry.npmmirror.com/chalk@5.2.0: resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/chalk/-/chalk-5.2.0.tgz} name: chalk @@ -125,6 +306,12 @@ packages: string-width: registry.npmmirror.com/string-width@5.1.2 dev: true + registry.npmmirror.com/client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/client-only/-/client-only-0.0.1.tgz} + name: client-only + version: 0.0.1 + dev: true + registry.npmmirror.com/color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz} name: color-convert @@ -153,6 +340,13 @@ packages: engines: {node: '>=14'} dev: true + registry.npmmirror.com/core-js@3.31.1: + resolution: {integrity: sha512-2sKLtfq1eFST7l7v62zaqXacPc7uG8ZAya8ogijLhTtaKNcpzpB4TMoTw2Si+8GYKRwFPMMtUT0263QFWFfqyQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/core-js/-/core-js-3.31.1.tgz} + name: core-js + version: 3.31.1 + requiresBuild: true + dev: true + registry.npmmirror.com/cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz} name: cross-spawn @@ -164,6 +358,12 @@ packages: which: registry.npmmirror.com/which@2.0.2 dev: true + registry.npmmirror.com/csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz} + name: csstype + version: 3.1.2 + dev: true + registry.npmmirror.com/debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz} name: debug @@ -229,6 +429,34 @@ packages: engines: {node: '>=10'} dev: true + registry.npmmirror.com/glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz} + name: glob-to-regexp + version: 0.4.1 + dev: true + + registry.npmmirror.com/graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz} + name: graceful-fs + version: 4.2.11 + dev: true + + registry.npmmirror.com/hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz} + name: hoist-non-react-statics + version: 3.3.2 + dependencies: + react-is: registry.npmmirror.com/react-is@16.13.1 + dev: true + + registry.npmmirror.com/html-parse-stringify@3.0.1: + resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz} + name: html-parse-stringify + version: 3.0.1 + dependencies: + void-elements: registry.npmmirror.com/void-elements@3.1.0 + dev: true + registry.npmmirror.com/human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/human-signals/-/human-signals-4.3.1.tgz} name: human-signals @@ -244,6 +472,20 @@ packages: hasBin: true dev: true + registry.npmmirror.com/i18next-fs-backend@2.1.5: + resolution: {integrity: sha512-7fgSH8nVhXSBYPHR/W3tEXXhcnwHwNiND4Dfx9knzPzdsWTUTL/TdDVV+DY0dL0asHKLbdoJaXS4LdVW6R8MVQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/i18next-fs-backend/-/i18next-fs-backend-2.1.5.tgz} + name: i18next-fs-backend + version: 2.1.5 + dev: true + + registry.npmmirror.com/i18next@23.2.11: + resolution: {integrity: sha512-MA4FsxOjyCaOZtRDB4yuwjCvqYEioD4G4LlXOn7SO3rnQUlxTufyLsOqfL9MKakeLRBkefe8bqcs0D6Z/xFk1w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/i18next/-/i18next-23.2.11.tgz} + name: i18next + version: 23.2.11 + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.22.6 + dev: true + registry.npmmirror.com/indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/indent-string/-/indent-string-4.0.0.tgz} name: indent-string @@ -285,6 +527,12 @@ packages: version: 2.0.0 dev: true + registry.npmmirror.com/js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz} + name: js-tokens + version: 4.0.0 + dev: true + registry.npmmirror.com/lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz} name: lilconfig @@ -350,6 +598,15 @@ packages: wrap-ansi: registry.npmmirror.com/wrap-ansi@6.2.0 dev: true + registry.npmmirror.com/loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz} + name: loose-envify + version: 1.4.0 + hasBin: true + dependencies: + js-tokens: registry.npmmirror.com/js-tokens@4.0.0 + dev: true + registry.npmmirror.com/merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz} name: merge-stream @@ -386,6 +643,83 @@ packages: version: 2.1.2 dev: true + registry.npmmirror.com/nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz} + name: nanoid + version: 3.3.6 + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + registry.npmmirror.com/next-i18next@14.0.0(i18next@23.2.11)(next@13.4.12)(react-i18next@13.0.2)(react@18.2.0): + resolution: {integrity: sha512-umv8hOZoSoAA+td3ErfemyO/5Ib2pnYCdQ8/Oy+fncS2skFIL3hHKRer3Oa3Nfm4Xbv5p6DHWzm3NhT1j4tWwg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/next-i18next/-/next-i18next-14.0.0.tgz} + id: registry.npmmirror.com/next-i18next/14.0.0 + name: next-i18next + version: 14.0.0 + engines: {node: '>=14'} + peerDependencies: + i18next: ^23.0.1 + next: '>= 12.0.0' + react: '>= 17.0.2' + react-i18next: ^13.0.0 + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.22.6 + '@types/hoist-non-react-statics': registry.npmmirror.com/@types/hoist-non-react-statics@3.3.1 + core-js: registry.npmmirror.com/core-js@3.31.1 + hoist-non-react-statics: registry.npmmirror.com/hoist-non-react-statics@3.3.2 + i18next: registry.npmmirror.com/i18next@23.2.11 + i18next-fs-backend: registry.npmmirror.com/i18next-fs-backend@2.1.5 + next: registry.npmmirror.com/next@13.4.12(react-dom@18.2.0)(react@18.2.0) + react: registry.npmmirror.com/react@18.2.0 + react-i18next: registry.npmmirror.com/react-i18next@13.0.2(i18next@23.2.11)(react-dom@18.2.0)(react@18.2.0) + dev: true + + registry.npmmirror.com/next@13.4.12(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-eHfnru9x6NRmTMcjQp6Nz0J4XH9OubmzOa7CkWL+AUrUxpibub3vWwttjduu9No16dug1kq04hiUUpo7J3m3Xw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/next/-/next-13.4.12.tgz} + id: registry.npmmirror.com/next/13.4.12 + name: next + version: 13.4.12 + engines: {node: '>=16.8.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + fibers: '>= 3.1.0' + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + fibers: + optional: true + sass: + optional: true + dependencies: + '@next/env': registry.npmmirror.com/@next/env@13.4.12 + '@swc/helpers': registry.npmmirror.com/@swc/helpers@0.5.1 + busboy: registry.npmmirror.com/busboy@1.6.0 + caniuse-lite: registry.npmmirror.com/caniuse-lite@1.0.30001517 + postcss: registry.npmmirror.com/postcss@8.4.14 + react: registry.npmmirror.com/react@18.2.0 + react-dom: registry.npmmirror.com/react-dom@18.2.0(react@18.2.0) + styled-jsx: registry.npmmirror.com/styled-jsx@5.1.1(react@18.2.0) + watchpack: registry.npmmirror.com/watchpack@2.4.0 + zod: registry.npmmirror.com/zod@3.21.4 + optionalDependencies: + '@next/swc-darwin-arm64': registry.npmmirror.com/@next/swc-darwin-arm64@13.4.12 + '@next/swc-darwin-x64': registry.npmmirror.com/@next/swc-darwin-x64@13.4.12 + '@next/swc-linux-arm64-gnu': registry.npmmirror.com/@next/swc-linux-arm64-gnu@13.4.12 + '@next/swc-linux-arm64-musl': registry.npmmirror.com/@next/swc-linux-arm64-musl@13.4.12 + '@next/swc-linux-x64-gnu': registry.npmmirror.com/@next/swc-linux-x64-gnu@13.4.12 + '@next/swc-linux-x64-musl': registry.npmmirror.com/@next/swc-linux-x64-musl@13.4.12 + '@next/swc-win32-arm64-msvc': registry.npmmirror.com/@next/swc-win32-arm64-msvc@13.4.12 + '@next/swc-win32-ia32-msvc': registry.npmmirror.com/@next/swc-win32-ia32-msvc@13.4.12 + '@next/swc-win32-x64-msvc': registry.npmmirror.com/@next/swc-win32-x64-msvc@13.4.12 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: true + registry.npmmirror.com/normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz} name: normalize-path @@ -449,6 +783,12 @@ packages: engines: {node: '>=12'} dev: true + registry.npmmirror.com/picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz} + name: picocolors + version: 1.0.0 + dev: true + registry.npmmirror.com/picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz} name: picomatch @@ -464,6 +804,17 @@ packages: hasBin: true dev: true + registry.npmmirror.com/postcss@8.4.14: + resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss/-/postcss-8.4.14.tgz} + name: postcss + version: 8.4.14 + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: registry.npmmirror.com/nanoid@3.3.6 + picocolors: registry.npmmirror.com/picocolors@1.0.0 + source-map-js: registry.npmmirror.com/source-map-js@1.0.2 + dev: true + registry.npmmirror.com/prettier@2.8.7: resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/prettier/-/prettier-2.8.7.tgz} name: prettier @@ -472,6 +823,63 @@ packages: hasBin: true dev: true + registry.npmmirror.com/react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-dom/-/react-dom-18.2.0.tgz} + id: registry.npmmirror.com/react-dom/18.2.0 + name: react-dom + version: 18.2.0 + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: registry.npmmirror.com/loose-envify@1.4.0 + react: registry.npmmirror.com/react@18.2.0 + scheduler: registry.npmmirror.com/scheduler@0.23.0 + dev: true + + registry.npmmirror.com/react-i18next@13.0.2(i18next@23.2.11)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-NEVxC32v0oR4egwYM0QM0WE93AiJG5r0NTXTL8mhQfAhsMfDS2fSO6jpluyfsfypP988KzUQrAXncspcJ7+GHA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-i18next/-/react-i18next-13.0.2.tgz} + id: registry.npmmirror.com/react-i18next/13.0.2 + name: react-i18next + version: 13.0.2 + peerDependencies: + i18next: '>= 23.2.3' + react: '>= 16.8.0' + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.22.6 + html-parse-stringify: registry.npmmirror.com/html-parse-stringify@3.0.1 + i18next: registry.npmmirror.com/i18next@23.2.11 + react: registry.npmmirror.com/react@18.2.0 + react-dom: registry.npmmirror.com/react-dom@18.2.0(react@18.2.0) + dev: true + + registry.npmmirror.com/react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz} + name: react-is + version: 16.13.1 + dev: true + + registry.npmmirror.com/react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react/-/react-18.2.0.tgz} + name: react + version: 18.2.0 + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: registry.npmmirror.com/loose-envify@1.4.0 + dev: true + + registry.npmmirror.com/regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz} + name: regenerator-runtime + version: 0.13.11 + dev: true + registry.npmmirror.com/restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz} name: restore-cursor @@ -496,6 +904,14 @@ packages: tslib: registry.npmmirror.com/tslib@2.5.3 dev: true + registry.npmmirror.com/scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/scheduler/-/scheduler-0.23.0.tgz} + name: scheduler + version: 0.23.0 + dependencies: + loose-envify: registry.npmmirror.com/loose-envify@1.4.0 + dev: true + registry.npmmirror.com/shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz} name: shebang-command @@ -550,6 +966,20 @@ packages: is-fullwidth-code-point: registry.npmmirror.com/is-fullwidth-code-point@4.0.0 dev: true + registry.npmmirror.com/source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz} + name: source-map-js + version: 1.0.2 + engines: {node: '>=0.10.0'} + dev: true + + registry.npmmirror.com/streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/streamsearch/-/streamsearch-1.1.0.tgz} + name: streamsearch + version: 1.1.0 + engines: {node: '>=10.0.0'} + dev: true + registry.npmmirror.com/string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/string-argv/-/string-argv-0.3.2.tgz} name: string-argv @@ -604,6 +1034,26 @@ packages: engines: {node: '>=12'} dev: true + registry.npmmirror.com/styled-jsx@5.1.1(react@18.2.0): + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/styled-jsx/-/styled-jsx-5.1.1.tgz} + id: registry.npmmirror.com/styled-jsx/5.1.1 + name: styled-jsx + version: 5.1.1 + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + dependencies: + client-only: registry.npmmirror.com/client-only@0.0.1 + react: registry.npmmirror.com/react@18.2.0 + dev: true + registry.npmmirror.com/through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/through/-/through-2.3.8.tgz} name: through @@ -632,6 +1082,23 @@ packages: engines: {node: '>=10'} dev: true + registry.npmmirror.com/void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/void-elements/-/void-elements-3.1.0.tgz} + name: void-elements + version: 3.1.0 + engines: {node: '>=0.10.0'} + dev: true + + registry.npmmirror.com/watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz} + name: watchpack + version: 2.4.0 + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: registry.npmmirror.com/glob-to-regexp@0.4.1 + graceful-fs: registry.npmmirror.com/graceful-fs@4.2.11 + dev: true + registry.npmmirror.com/which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/which/-/which-2.0.2.tgz} name: which @@ -670,3 +1137,9 @@ packages: version: 2.3.1 engines: {node: '>= 14'} dev: true + + registry.npmmirror.com/zod@3.21.4: + resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/zod/-/zod-3.21.4.tgz} + name: zod + version: 3.21.4 + dev: true