From 8b6e4fe330b115b7de3704664d7edda021e73d86 Mon Sep 17 00:00:00 2001 From: visiky <736929286@qq.com> Date: Tue, 14 Mar 2023 11:45:32 +0800 Subject: [PATCH 1/7] feat: add i18n-pick tool --- i18n.config.js | 3 ++ i18n/tmp.json | 87 +++++++++++++++++++++++++++++++++++++ package.json | 10 ++++- scripts/i18n-pick.js | 76 ++++++++++++++++++++++++++++++++ src/locale/locales/en_US.ts | 2 +- 5 files changed, 176 insertions(+), 2 deletions(-) create mode 100644 i18n.config.js create mode 100644 i18n/tmp.json create mode 100644 scripts/i18n-pick.js diff --git a/i18n.config.js b/i18n.config.js new file mode 100644 index 0000000..e081bfa --- /dev/null +++ b/i18n.config.js @@ -0,0 +1,3 @@ +module.exports = { + exclude: ['**/locales/**', '**/datas/**'] +}; diff --git a/i18n/tmp.json b/i18n/tmp.json new file mode 100644 index 0000000..a7b8387 --- /dev/null +++ b/i18n/tmp.json @@ -0,0 +1,87 @@ +{ + "下载 PDF": "下载 PDF", + "\n 在线版本\n ": "\n 在线版本\n ", + "在线版本": "在线版本", + " 项目代码\n ": " 项目代码\n ", + " 项目代码": " 项目代码", + "从模板中获取": "从模板中获取", + "已缓存在本地": "已缓存在本地", + "复制成功": "复制成功", + "头像设置": "头像设置", + "个人信息": "个人信息", + "教育背景": "教育背景", + "自我介绍": "自我介绍", + "更多信息": "更多信息", + "个人作品": "个人作品", + "专业技能": "专业技能", + "工作经历": "工作经历", + "项目经历": "项目经历", + "隐藏头像": "隐藏头像", + "头像形状": "头像形状", + "圆形": "圆形", + "方形": "方形", + "姓名": "姓名", + "手机号码": "手机号码", + "邮箱": "邮箱", + "知乎": "知乎", + "工作经验": "工作经验", + "期望工作地": "期望工作地", + "职位": "职位", + "起始时间": "起始时间", + "学校": "学校", + "专业": "专业", + "起止时间": "起止时间", + "项目名称": "项目名称", + "担任角色": "担任角色", + "项目描述": "项目描述", + "主要工作": "主要工作", + "公司名称": "公司名称", + "部门": "部门", + "职位或描述": "职位或描述", + "作品名称": "作品名称", + "作品描述": "作品描述", + "作品链接": "作品链接", + "技能项": "技能项", + "掌握程度": "掌握程度", + "技能描述": "技能描述", + "获奖时间": "获奖时间", + "奖项内容": "奖项内容", + "获取简历信息失败": "获取简历信息失败", + "\n 请检查用户名 ": "\n 请检查用户名 ", + " 是否正确或者简历信息是否在\n ": " 是否正确或者简历信息是否在\n ", + "下\n ": "下\n ", + "请检查用户名 ": "请检查用户名 ", + " 是否正确或者简历信息是否在": " 是否正确或者简历信息是否在", + "下": "下", + "进入在线编辑": "进入在线编辑", + "移动端只提供查看功能,在线制作请前往 PC 端": "移动端只提供查看功能,在线制作请前往 PC 端", + "上传配置已应用": "上传配置已应用", + "上传文件有误,请重新上传": "上传文件有误,请重新上传", + "您当前浏览器不支持 FileReader,建议使用谷歌浏览器": "您当前浏览器不支持 FileReader,建议使用谷歌浏览器", + "参考:": "参考:", + "复制配置": "复制配置", + "保存简历": "保存简历", + "导入配置": "导入配置", + "PDF 下载": "PDF 下载", + "\n 中\n ": "\n 中\n ", + "中": "中", + "编辑模式下, 切换国际化会导致正在配置的内容丢失,请及时保存": "编辑模式下, 切换国际化会导致正在配置的内容丢失,请及时保存", + "编辑": "编辑", + "无用户信息,不允许预览": "无用户信息,不允许预览", + "预览": "预览", + "提交": "提交", + "至今": "至今", + "访问链接": "访问链接", + "确认删除": "确认删除", + "继续添加": "继续添加", + "进行配置": "进行配置", + "移动端模式下,只支持预览,不支持配置": "移动端模式下,只支持预览,不支持配置", + "选择模板": "选择模板", + "配置简历": "配置简历", + " 至今": " 至今", + "默认模板(适用于单页)": "默认模板(适用于单页)", + "简易模板": "简易模板", + "简易模板(适用于多页)": "简易模板(适用于多页)", + "主题色": "主题色", + "tag 标签色": "tag 标签色" +} \ No newline at end of file diff --git a/package.json b/package.json index 712671a..672837b 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,12 @@ "react-svg": "^14.1.6" }, "devDependencies": { + "@babel/core": "^7.21.0", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-decorators": "^7.21.0", + "@babel/preset-env": "^7.20.2", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.21.0", "@types/lodash-es": "^4.17.6", "@types/react": "^17.0.3", "babel-plugin-import": "^1.13.3", @@ -30,6 +36,7 @@ "gatsby-plugin-less": "^5.2.0", "gatsby-plugin-pnpm": "^1.2.10", "gh-pages": "^3.1.0", + "glob": "^9.2.1", "husky": "^7.0.4", "less": "^4.1.0", "lint-staged": "^12.3.5", @@ -46,7 +53,8 @@ "clean": "gatsby clean", "deploy": "npm run clean && gatsby build --prefix-paths && gh-pages -d public", "prepare": "husky install", - "lint-staged": "lint-staged" + "lint-staged": "lint-staged", + "i18n-pick": "node ./scripts/i18n-pick.js" }, "lint-staged": { "*.{ts,tsx}": [ diff --git a/scripts/i18n-pick.js b/scripts/i18n-pick.js new file mode 100644 index 0000000..c31cc58 --- /dev/null +++ b/scripts/i18n-pick.js @@ -0,0 +1,76 @@ +const glob = require('glob'); +const { transformFileAsync } = require('@babel/core'); +const fs = require('fs'); +const path = require('path'); +const config = require('../i18n.config.js'); + +const wordSet = new Set(); + +/** unicode cjk 中日韩文 范围 */ +const DOUBLE_BYTE_REGEX = /[\u4E00-\u9FFF]/; +function detectChinese(text) { + if (DOUBLE_BYTE_REGEX.test(text)) { + wordSet.add(text); + } +} + +function scan({ types: t }) { + return { + visitor: { + // 匹配: const text = '中文文案'; new Person('小红') + StringLiteral(path) { + const { node } = path; + detectChinese(node.value); + }, + // 匹配: jsx 文本 & 属性 + JSXText(path) { + detectChinese(path.node.value); + }, + }, + }; +} + +const { exclude = [] } = config; + +function run(dir) { + glob(`${dir}/**/*.{js,jsx,ts,tsx}`, { + ignore: exclude.concat('node_modules/**'), + }) + .then(files => { + Promise.all( + files.map(filename => { + // todo 可以匹配一些规则,直接返回 + + return transformFileAsync(filename, { + plugins: [ + // 装饰器插件 + ['@babel/plugin-proposal-decorators', { legacy: true }], + scan, + ], + presets: [ + [ + '@babel/preset-typescript', + // 强制开启 jsx 解析,否则尖括号可能会被识别为 typescript 的类型断言。如 `var foo = bar;` + { isTSX: true, allExtensions: true }, + ], + ['@babel/preset-env', { targets: 'chrome > 58' }], + ], + }); + }) + ).then(() => { + fs.open(path.resolve('i18n', 'tmp.json'), 'w', (error, file) => { + if (error) return console.error(error); + fs.writeFile( + file, + JSON.stringify(Object.fromEntries(wordSet.entries()), null, 2), + () => {} + ); + }); + }); + }) + .catch(err => { + console.error(err); + }); +} + +run('./src'); diff --git a/src/locale/locales/en_US.ts b/src/locale/locales/en_US.ts index c6c58d8..66be94a 100644 --- a/src/locale/locales/en_US.ts +++ b/src/locale/locales/en_US.ts @@ -10,7 +10,7 @@ export const EN_US_LOCALE: Locale = { 导入配置: 'Import config', 复制配置: 'Copy config', - 保存简历: 'Save ResumneInfo', + 保存简历: 'Save Resume', '下载 PDF': 'Download pdf', 进行配置: 'Enter config', 选择模板: 'Choose template', From af4d2364f9d8aaae21df02b46528df9e3af2c2f5 Mon Sep 17 00:00:00 2001 From: visiky <736929286@qq.com> Date: Tue, 14 Mar 2023 15:28:43 +0800 Subject: [PATCH 2/7] =?UTF-8?q?efactor(i18n):=20=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=20react-intl=20=E6=9B=BF=E6=8D=A2=E8=87=AA?= =?UTF-8?q?=E5=B7=B1=E5=86=99=E7=9A=84=E5=9B=BD=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- i18n.config.js | 3 - i18n/tmp.json | 87 ----------- package.json | 7 +- pnpm-lock.yaml | 140 ++++++++++++++++++ scripts/i18n-pick.js | 76 ---------- src/components/Drawer/ConfigTheme/index.tsx | 20 ++- src/components/Drawer/Templates/index.tsx | 10 +- src/components/Drawer/index.tsx | 34 +++-- src/components/FormCreator/index.tsx | 5 +- src/components/LangSwitcher/index.less | 8 +- src/components/LangSwitcher/index.tsx | 19 +-- src/components/Resume/Template1/index.tsx | 40 ++--- src/components/Resume/Template2/index.less | 2 +- src/components/Resume/Template2/index.tsx | 36 +++-- src/components/Resume/Template3/index.tsx | 42 +++--- src/components/index.tsx | 43 +++--- src/components/types.ts | 2 +- src/datas/constant.ts | 23 ++- src/datas/resume.ts | 2 +- src/helpers/contant.tsx | 116 +++++++++------ src/helpers/store-to-local.ts | 10 +- src/hooks/useModeSwitcher/index.tsx | 13 +- src/i18n/index.ts | 33 +++++ src/{locale => i18n}/language.ts | 2 +- .../en_US.ts => i18n/locales/en-US.ts} | 8 +- src/{locale => i18n}/types.ts | 0 src/layout/header.tsx | 5 +- src/locale/index.ts | 34 ----- src/pages/index.tsx | 12 +- temp.json | 71 +++++++++ 31 files changed, 511 insertions(+), 394 deletions(-) delete mode 100644 i18n.config.js delete mode 100644 i18n/tmp.json delete mode 100644 scripts/i18n-pick.js create mode 100644 src/i18n/index.ts rename src/{locale => i18n}/language.ts (77%) rename src/{locale/locales/en_US.ts => i18n/locales/en-US.ts} (94%) rename src/{locale => i18n}/types.ts (100%) delete mode 100644 src/locale/index.ts create mode 100644 temp.json diff --git a/README.md b/README.md index 00d83c4..9814a42 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ | template | 模板 | 默认: template1 | | branch | 分支名 | 默认: master | | mode | 模式 | 备注: 默认为‘只读’模式,设置为: `mode=edit` 即可进入编辑模式 | -| lang | 语言 | 默认: zh_CN | +| lang | 语言 | 默认: zh-CN | ## 本地开发(Local develop) diff --git a/i18n.config.js b/i18n.config.js deleted file mode 100644 index e081bfa..0000000 --- a/i18n.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - exclude: ['**/locales/**', '**/datas/**'] -}; diff --git a/i18n/tmp.json b/i18n/tmp.json deleted file mode 100644 index a7b8387..0000000 --- a/i18n/tmp.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "下载 PDF": "下载 PDF", - "\n 在线版本\n ": "\n 在线版本\n ", - "在线版本": "在线版本", - " 项目代码\n ": " 项目代码\n ", - " 项目代码": " 项目代码", - "从模板中获取": "从模板中获取", - "已缓存在本地": "已缓存在本地", - "复制成功": "复制成功", - "头像设置": "头像设置", - "个人信息": "个人信息", - "教育背景": "教育背景", - "自我介绍": "自我介绍", - "更多信息": "更多信息", - "个人作品": "个人作品", - "专业技能": "专业技能", - "工作经历": "工作经历", - "项目经历": "项目经历", - "隐藏头像": "隐藏头像", - "头像形状": "头像形状", - "圆形": "圆形", - "方形": "方形", - "姓名": "姓名", - "手机号码": "手机号码", - "邮箱": "邮箱", - "知乎": "知乎", - "工作经验": "工作经验", - "期望工作地": "期望工作地", - "职位": "职位", - "起始时间": "起始时间", - "学校": "学校", - "专业": "专业", - "起止时间": "起止时间", - "项目名称": "项目名称", - "担任角色": "担任角色", - "项目描述": "项目描述", - "主要工作": "主要工作", - "公司名称": "公司名称", - "部门": "部门", - "职位或描述": "职位或描述", - "作品名称": "作品名称", - "作品描述": "作品描述", - "作品链接": "作品链接", - "技能项": "技能项", - "掌握程度": "掌握程度", - "技能描述": "技能描述", - "获奖时间": "获奖时间", - "奖项内容": "奖项内容", - "获取简历信息失败": "获取简历信息失败", - "\n 请检查用户名 ": "\n 请检查用户名 ", - " 是否正确或者简历信息是否在\n ": " 是否正确或者简历信息是否在\n ", - "下\n ": "下\n ", - "请检查用户名 ": "请检查用户名 ", - " 是否正确或者简历信息是否在": " 是否正确或者简历信息是否在", - "下": "下", - "进入在线编辑": "进入在线编辑", - "移动端只提供查看功能,在线制作请前往 PC 端": "移动端只提供查看功能,在线制作请前往 PC 端", - "上传配置已应用": "上传配置已应用", - "上传文件有误,请重新上传": "上传文件有误,请重新上传", - "您当前浏览器不支持 FileReader,建议使用谷歌浏览器": "您当前浏览器不支持 FileReader,建议使用谷歌浏览器", - "参考:": "参考:", - "复制配置": "复制配置", - "保存简历": "保存简历", - "导入配置": "导入配置", - "PDF 下载": "PDF 下载", - "\n 中\n ": "\n 中\n ", - "中": "中", - "编辑模式下, 切换国际化会导致正在配置的内容丢失,请及时保存": "编辑模式下, 切换国际化会导致正在配置的内容丢失,请及时保存", - "编辑": "编辑", - "无用户信息,不允许预览": "无用户信息,不允许预览", - "预览": "预览", - "提交": "提交", - "至今": "至今", - "访问链接": "访问链接", - "确认删除": "确认删除", - "继续添加": "继续添加", - "进行配置": "进行配置", - "移动端模式下,只支持预览,不支持配置": "移动端模式下,只支持预览,不支持配置", - "选择模板": "选择模板", - "配置简历": "配置简历", - " 至今": " 至今", - "默认模板(适用于单页)": "默认模板(适用于单页)", - "简易模板": "简易模板", - "简易模板(适用于多页)": "简易模板(适用于多页)", - "主题色": "主题色", - "tag 标签色": "tag 标签色" -} \ No newline at end of file diff --git a/package.json b/package.json index 672837b..2101d23 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "react-dnd-html5-backend": "^14.0.0", "react-dom": "^17.0.1", "react-helmet": "^6.1.0", + "react-intl": "^6.2.10", "react-svg": "^14.1.6" }, "devDependencies": { @@ -27,6 +28,7 @@ "@babel/preset-env": "^7.20.2", "@babel/preset-react": "^7.18.6", "@babel/preset-typescript": "^7.21.0", + "@formatjs/cli": "^6.0.4", "@types/lodash-es": "^4.17.6", "@types/react": "^17.0.3", "babel-plugin-import": "^1.13.3", @@ -54,7 +56,10 @@ "deploy": "npm run clean && gatsby build --prefix-paths && gh-pages -d public", "prepare": "husky install", "lint-staged": "lint-staged", - "i18n-pick": "node ./scripts/i18n-pick.js" + "i18n-pick": "node ./scripts/i18n-pick.js", + "extract": "formatjs extract 'src/**/*.ts*' --ignore '**/locales/**' --out-file temp.json --flatten", + "compile": "formatjs compile 'temp.json' --out-file i18n/en.json && rm temp.json", + "extract-compile": "npm run extract && npm run compile" }, "lint-staged": { "*.{ts,tsx}": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4460d01..ed31760 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2,6 +2,16 @@ lockfileVersion: 5.4 specifiers: '@ant-design/icons': ^4.6.2 +<<<<<<< HEAD +======= + '@babel/core': ^7.21.0 + '@babel/plugin-proposal-class-properties': ^7.18.6 + '@babel/plugin-proposal-decorators': ^7.21.0 + '@babel/preset-env': ^7.20.2 + '@babel/preset-react': ^7.18.6 + '@babel/preset-typescript': ^7.21.0 + '@formatjs/cli': ^6.0.4 +>>>>>>> d63fe36 (refactor(i18n): 统一使用 react-intl 替换自己写的国际化) '@types/lodash-es': ^4.17.6 '@types/react': ^17.0.3 antd: ^4.16.6 @@ -29,6 +39,7 @@ specifiers: react-dnd-html5-backend: ^14.0.0 react-dom: ^17.0.1 react-helmet: ^6.1.0 + react-intl: ^6.2.10 react-svg: ^14.1.6 rimraf: ^2.5.4 ts-loader: ^8.0.18 @@ -51,9 +62,20 @@ dependencies: react-dnd-html5-backend: 14.1.0 react-dom: 17.0.2_react@17.0.2 react-helmet: 6.1.0_react@17.0.2 + react-intl: 6.2.10_s7dhm7uhgnhsqh75wuilf3r4wi react-svg: 14.1.19_sfoxds7t5ydpegc3knd667wn6m devDependencies: +<<<<<<< HEAD +======= + '@babel/core': 7.21.0 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-decorators': 7.21.0_@babel+core@7.21.0 + '@babel/preset-env': 7.20.2_@babel+core@7.21.0 + '@babel/preset-react': 7.18.6_@babel+core@7.21.0 + '@babel/preset-typescript': 7.21.0_@babel+core@7.21.0 + '@formatjs/cli': 6.0.4 +>>>>>>> d63fe36 (refactor(i18n): 统一使用 react-intl 替换自己写的国际化) '@types/lodash-es': 4.17.6 '@types/react': 17.0.47 babel-plugin-import: 1.13.5 @@ -1370,6 +1392,85 @@ packages: transitivePeerDependencies: - typescript + /@formatjs/cli/6.0.4: + resolution: {integrity: sha512-ivb+uUcYmHnffBkXM7OM4NDofxyfnVvW5G52p+M9Cg3DGMz3wVBm3TwW3SXgGGTft7CMWHeGQGXjxTOwBYKeEA==} + engines: {node: '>= 16'} + hasBin: true + peerDependencies: + '@vue/compiler-sfc': ^3.2.34 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + dev: true + + /@formatjs/ecma402-abstract/1.14.3: + resolution: {integrity: sha512-SlsbRC/RX+/zg4AApWIFNDdkLtFbkq3LNoZWXZCE/nHVKqoIJyaoQyge/I0Y38vLxowUn9KTtXgusLD91+orbg==} + dependencies: + '@formatjs/intl-localematcher': 0.2.32 + tslib: 2.4.0 + dev: false + + /@formatjs/fast-memoize/1.2.8: + resolution: {integrity: sha512-PemNUObyoIZcqdQ1ixTPugzAzhEj7j6AHIyrq/qR6x5BFTvOQeXHYsVZUqBEFduAIscUaDfou+U+xTqOiunJ3Q==} + dependencies: + tslib: 2.4.0 + dev: false + + /@formatjs/icu-messageformat-parser/2.3.0: + resolution: {integrity: sha512-xqtlqYAbfJDF4b6e4O828LBNOWXrFcuYadqAbYORlDRwhyJ2bH+xpUBPldZbzRGUN2mxlZ4Ykhm7jvERtmI8NQ==} + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/icu-skeleton-parser': 1.3.18 + tslib: 2.4.0 + dev: false + + /@formatjs/icu-skeleton-parser/1.3.18: + resolution: {integrity: sha512-ND1ZkZfmLPcHjAH1sVpkpQxA+QYfOX3py3SjKWMUVGDow18gZ0WPqz3F+pJLYQMpS2LnnQ5zYR2jPVYTbRwMpg==} + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + tslib: 2.4.0 + dev: false + + /@formatjs/intl-displaynames/6.2.6: + resolution: {integrity: sha512-scf5AQTk9EjpvPhboo5sizVOvidTdMOnajv9z+0cejvl7JNl9bl/aMrNBgC72UH+bP3l45usPUKAGskV6sNIrA==} + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/intl-localematcher': 0.2.32 + tslib: 2.4.0 + dev: false + + /@formatjs/intl-listformat/7.1.9: + resolution: {integrity: sha512-5YikxwRqRXTVWVujhswDOTCq6gs+m9IcNbNZLa6FLtyBStAjEsuE2vAU+lPsbz9ZTST57D5fodjIh2JXT6sMWQ==} + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/intl-localematcher': 0.2.32 + tslib: 2.4.0 + dev: false + + /@formatjs/intl-localematcher/0.2.32: + resolution: {integrity: sha512-k/MEBstff4sttohyEpXxCmC3MqbUn9VvHGlZ8fauLzkbwXmVrEeyzS+4uhrvAk9DWU9/7otYWxyDox4nT/KVLQ==} + dependencies: + tslib: 2.4.0 + dev: false + + /@formatjs/intl/2.6.7_typescript@4.7.4: + resolution: {integrity: sha512-9FvEJfUMzlmP5ZBK3EE0928kVsZmD5aeWXg+faP8+mKIvG3c0hkLEXQ2MiUrXQt4rsEzOPbYVtBdthzSM0e2fw==} + peerDependencies: + typescript: ^4.7 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/fast-memoize': 1.2.8 + '@formatjs/icu-messageformat-parser': 2.3.0 + '@formatjs/intl-displaynames': 6.2.6 + '@formatjs/intl-listformat': 7.1.9 + intl-messageformat: 10.3.1 + tslib: 2.4.0 + typescript: 4.7.4 + dev: false + /@graphql-tools/batch-execute/7.1.2_graphql@14.7.0: resolution: {integrity: sha512-IuR2SB2MnC2ztA/XeTMTfWcA0Wy7ZH5u+nDkDNLAdX+AaSyDnsQS35sCmHqG0VOGTl7rzoyBWLCKGwSJplgtwg==} peerDependencies: @@ -1849,6 +1950,13 @@ packages: dependencies: '@types/unist': 2.0.6 + /@types/hoist-non-react-statics/3.3.1: + resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} + dependencies: + '@types/react': 17.0.47 + hoist-non-react-statics: 3.3.2 + dev: false + /@types/http-cache-semantics/4.0.1: resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} @@ -6933,6 +7041,15 @@ packages: has: 1.0.3 side-channel: 1.0.4 + /intl-messageformat/10.3.1: + resolution: {integrity: sha512-mqHc6arhbogrdImIsEscdjWnJcg2bvg3MiyGXDsTSGmPbbM2KtRUe7oNgDUbkM3HMn4KbyOct2JyJScmwRgGSQ==} + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/fast-memoize': 1.2.8 + '@formatjs/icu-messageformat-parser': 2.3.0 + tslib: 2.4.0 + dev: false + /into-stream/3.1.0: resolution: {integrity: sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==} engines: {node: '>=4'} @@ -10523,6 +10640,29 @@ packages: shallowequal: 1.1.0 source-map: 0.7.4 + /react-intl/6.2.10_s7dhm7uhgnhsqh75wuilf3r4wi: + resolution: {integrity: sha512-l2TpskkFR0OzQnq7ChiJ5ZX23USZSzpKOcaR9MYC4UOHE9bT4kQ5JXXolgkq3tiOlvseEOzUCerlzn886AX9Yg==} + peerDependencies: + react: ^16.6.0 || 17 || 18 + typescript: ^4.7 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/icu-messageformat-parser': 2.3.0 + '@formatjs/intl': 2.6.7_typescript@4.7.4 + '@formatjs/intl-displaynames': 6.2.6 + '@formatjs/intl-listformat': 7.1.9 + '@types/hoist-non-react-statics': 3.3.1 + '@types/react': 17.0.47 + hoist-non-react-statics: 3.3.2 + intl-messageformat: 10.3.1 + react: 17.0.2 + tslib: 2.4.0 + typescript: 4.7.4 + dev: false + /react-is/16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} diff --git a/scripts/i18n-pick.js b/scripts/i18n-pick.js deleted file mode 100644 index c31cc58..0000000 --- a/scripts/i18n-pick.js +++ /dev/null @@ -1,76 +0,0 @@ -const glob = require('glob'); -const { transformFileAsync } = require('@babel/core'); -const fs = require('fs'); -const path = require('path'); -const config = require('../i18n.config.js'); - -const wordSet = new Set(); - -/** unicode cjk 中日韩文 范围 */ -const DOUBLE_BYTE_REGEX = /[\u4E00-\u9FFF]/; -function detectChinese(text) { - if (DOUBLE_BYTE_REGEX.test(text)) { - wordSet.add(text); - } -} - -function scan({ types: t }) { - return { - visitor: { - // 匹配: const text = '中文文案'; new Person('小红') - StringLiteral(path) { - const { node } = path; - detectChinese(node.value); - }, - // 匹配: jsx 文本 & 属性 - JSXText(path) { - detectChinese(path.node.value); - }, - }, - }; -} - -const { exclude = [] } = config; - -function run(dir) { - glob(`${dir}/**/*.{js,jsx,ts,tsx}`, { - ignore: exclude.concat('node_modules/**'), - }) - .then(files => { - Promise.all( - files.map(filename => { - // todo 可以匹配一些规则,直接返回 - - return transformFileAsync(filename, { - plugins: [ - // 装饰器插件 - ['@babel/plugin-proposal-decorators', { legacy: true }], - scan, - ], - presets: [ - [ - '@babel/preset-typescript', - // 强制开启 jsx 解析,否则尖括号可能会被识别为 typescript 的类型断言。如 `var foo = bar;` - { isTSX: true, allExtensions: true }, - ], - ['@babel/preset-env', { targets: 'chrome > 58' }], - ], - }); - }) - ).then(() => { - fs.open(path.resolve('i18n', 'tmp.json'), 'w', (error, file) => { - if (error) return console.error(error); - fs.writeFile( - file, - JSON.stringify(Object.fromEntries(wordSet.entries()), null, 2), - () => {} - ); - }); - }); - }) - .catch(err => { - console.error(err); - }); -} - -run('./src'); diff --git a/src/components/Drawer/ConfigTheme/index.tsx b/src/components/Drawer/ConfigTheme/index.tsx index b6e3900..c00de2e 100644 --- a/src/components/Drawer/ConfigTheme/index.tsx +++ b/src/components/Drawer/ConfigTheme/index.tsx @@ -1,4 +1,4 @@ -import { getLocale } from '@/locale'; +import { FormattedMessage } from 'react-intl'; import React, { useEffect } from 'react'; import { ColorPicker } from '../../FormCreator/ColorPicker'; import type { ThemeConfig } from '../../types'; @@ -14,8 +14,6 @@ const FormItemStyle = { }; export const ConfigTheme: React.FC = props => { - const i18n = getLocale(); - useEffect(() => { let $style = document.getElementById('dynamic'); if (!$style) { @@ -33,16 +31,26 @@ export const ConfigTheme: React.FC = props => { }, [props.color, props.tagColor]); return ( -
+
- {i18n.get('主题色')} + + + props.onChange({ color: v })} />
- {i18n.get('tag 标签色')} + + + props.onChange({ tagColor: v })} diff --git a/src/components/Drawer/Templates/index.tsx b/src/components/Drawer/Templates/index.tsx index c9d62ca..58115fd 100644 --- a/src/components/Drawer/Templates/index.tsx +++ b/src/components/Drawer/Templates/index.tsx @@ -1,8 +1,8 @@ import React from 'react'; import { ReactSVG } from 'react-svg'; import cx from 'classnames'; +import { useIntl } from 'react-intl'; import './index.less'; -import { getLocale } from '@/locale'; type Props = { template: string; @@ -29,8 +29,8 @@ const TEMPLATES = [ ]; export const Templates: React.FC = props => { - const i18n = getLocale(); - + const intl = useIntl(); + return (
{TEMPLATES.map(item => { @@ -50,7 +50,9 @@ export const Templates: React.FC = props => { }} /> {item.id} - {i18n.get(item.description)} + + {intl.formatMessage({ id: item.description })} +
); })} diff --git a/src/components/Drawer/index.tsx b/src/components/Drawer/index.tsx index 7de4b1a..6371428 100644 --- a/src/components/Drawer/index.tsx +++ b/src/components/Drawer/index.tsx @@ -15,7 +15,7 @@ import _ from 'lodash-es'; import arrayMove from 'array-move'; import { FormCreator } from '../FormCreator'; import { getDefaultTitleNameMap } from '@/datas/constant'; -import { getLocale } from '@/locale'; +import { FormattedMessage, useIntl } from 'react-intl'; import { MODULES, CONTENT_OF_MODULE } from '@/helpers/contant'; import type { ResumeConfig, ThemeConfig } from '../types'; import { ConfigTheme } from './ConfigTheme'; @@ -82,7 +82,7 @@ const DragableRow = ({ index, moveRow, ...restProps }) => { * @description 简历配置区 */ export const Drawer: React.FC = props => { - const i18n = getLocale(); + const intl = useIntl(); const [visible, setVisible] = useState(false); const [childrenDrawer, setChildrenDrawer] = useState(null); @@ -122,14 +122,14 @@ export const Drawer: React.FC = props => { const modules = useMemo(() => { const titleNameMap = props.value?.titleNameMap; - return MODULES({ i18n, titleNameMap }); - }, [i18n, props.value?.titleNameMap]); + return MODULES({ intl, titleNameMap }); + }, [intl, props.value?.titleNameMap]); const contentOfModule = useMemo(() => { - return CONTENT_OF_MODULE({ i18n }); - }, [i18n]); + return CONTENT_OF_MODULE({ intl }); + }, [intl]); - const DEFAULT_TITLE_MAP = getDefaultTitleNameMap({ i18n }); + const DEFAULT_TITLE_MAP = getDefaultTitleNameMap({ intl }); const isList = _.endsWith(childrenDrawer, 'List'); // #region 1 render: moduleContent @@ -182,7 +182,7 @@ export const Drawer: React.FC = props => { { Modal.confirm({ - content: i18n.get('确认删除'), + content: intl.formatMessage({ id: '确认删除' }), onOk: () => deleteItem(key, idx), }); }} @@ -203,7 +203,7 @@ export const Drawer: React.FC = props => { updateCurrentContent(null); }} > - {i18n.get('继续添加')} +
@@ -301,16 +301,24 @@ export const Drawer: React.FC = props => { onClick={() => setVisible(true)} style={props.style} > - {i18n.get('进行配置')} - + + + } + > setType(e.target.value)}> - {i18n.get('选择模板')} - {i18n.get('配置简历')} + + + + + + } width={480} diff --git a/src/components/FormCreator/index.tsx b/src/components/FormCreator/index.tsx index 5ed2997..7cc320b 100644 --- a/src/components/FormCreator/index.tsx +++ b/src/components/FormCreator/index.tsx @@ -3,7 +3,7 @@ import { Form, Input, InputNumber, Button, Checkbox, Select } from 'antd'; import { FormItemProps } from 'antd/lib/form'; import _ from 'lodash-es'; import { ColorPicker } from './ColorPicker'; -import { getLocale } from '@/locale'; +import { FormattedMessage } from 'react-intl'; type Props = { /** 表单配置 */ @@ -47,7 +47,6 @@ const FormItemComponentMap = (type: string) => ( }; export const FormCreator: React.FC = props => { - const i18n = getLocale(); const [fields, setFields] = useState([]); useEffect(() => { @@ -95,7 +94,7 @@ export const FormCreator: React.FC = props => { {props.isList && ( )} diff --git a/src/components/LangSwitcher/index.less b/src/components/LangSwitcher/index.less index 08a689c..b1e9e47 100644 --- a/src/components/LangSwitcher/index.less +++ b/src/components/LangSwitcher/index.less @@ -8,14 +8,14 @@ } } -body[lang='en_US'] { - .language-switcher span[data-lang='zh_CN'] { +body[lang='en-US'] { + .language-switcher span[data-lang='zh-CN'] { color: rgba(255, 255, 255, 0.25); cursor: pointer; } } -body[lang='zh_CN'] { - .language-switcher span[data-lang='en_US'] { +body[lang='zh-CN'] { + .language-switcher span[data-lang='en-US'] { color: rgba(255, 255, 255, 0.25); cursor: pointer; } diff --git a/src/components/LangSwitcher/index.tsx b/src/components/LangSwitcher/index.tsx index 4f14080..9ef1083 100644 --- a/src/components/LangSwitcher/index.tsx +++ b/src/components/LangSwitcher/index.tsx @@ -2,14 +2,15 @@ import React from 'react'; import cx from 'classnames'; import { Popover } from 'antd'; import qs from 'query-string'; -import { getLanguage, getLocale } from '@/locale'; +import { getLanguage } from '@/i18n'; import { getMode } from '@/hooks/useModeSwitcher'; import './index.less'; +import { useIntl } from 'react-intl'; export const LangSwitcher = ({ className }: { className?: string }) => { const lang = getLanguage(); const mode = getMode(); - const i18n = getLocale(); + const intl = useIntl(); const changeLanguage = value => { if (value === lang) return; @@ -31,16 +32,16 @@ export const LangSwitcher = ({ className }: { className?: string }) => { changeLanguage('zh_CN')} - data-lang="zh_CN" + onClick={() => changeLanguage('zh-CN')} + data-lang="zh-CN" > 中 / changeLanguage('en_US')} - data-lang="en_US" + onClick={() => changeLanguage('en-US')} + data-lang="en-US" > En @@ -51,9 +52,9 @@ export const LangSwitcher = ({ className }: { className?: string }) => {
{mode === 'edit' ? ( {RadioContent} diff --git a/src/components/Resume/Template1/index.tsx b/src/components/Resume/Template1/index.tsx index 0f896d6..095745e 100644 --- a/src/components/Resume/Template1/index.tsx +++ b/src/components/Resume/Template1/index.tsx @@ -13,7 +13,7 @@ import { HeartFilled, } from '@ant-design/icons'; import _ from 'lodash-es'; -import { getLocale } from '@/locale'; +import { FormattedMessage, useIntl } from 'react-intl'; import { getDefaultTitleNameMap } from '@/datas/constant'; import { Avatar } from '../../Avatar'; import type { ResumeConfig, ThemeConfig } from '../../types'; @@ -42,7 +42,7 @@ const wrapper = ({ id, title, color }) => WrappedComponent => { * @description 简历内容区 */ export const Template1: React.FC = props => { - const i18n = getLocale(); + const intl = useIntl(); const { value, theme } = props; /** 个人基础信息 */ @@ -51,7 +51,7 @@ export const Template1: React.FC = props => { const titleNameMap = _.get( value, 'titleNameMap', - getDefaultTitleNameMap({ i18n }) + getDefaultTitleNameMap({ intl }) ); /** 教育背景 */ @@ -135,7 +135,7 @@ export const Template1: React.FC = props => {
- {i18n.get('工作经验')}: {profile.workExpYear} + : {profile.workExpYear}
)} @@ -145,7 +145,7 @@ export const Template1: React.FC = props => { style={{ color: theme.color, opacity: 0.85 }} /> - {i18n.get('期望工作地')}: {profile.workPlace} + : {profile.workPlace}
)} @@ -153,7 +153,7 @@ export const Template1: React.FC = props => {
- {i18n.get('职位')}: {profile.positionTitle} + : {profile.positionTitle}
)} @@ -163,7 +163,7 @@ export const Template1: React.FC = props => { {!!_.trim(_.join(aboutme, '')) && (
- {i18n.get('自我介绍')} +
{aboutme.map((d, idx) => (
{d}
@@ -174,7 +174,7 @@ export const Template1: React.FC = props => { {educationList?.length ? (
- {/* {i18n.get('教育背景')} */} + {/* */} {titleNameMap?.educationList}
{educationList.map((education, idx) => { @@ -185,7 +185,7 @@ export const Template1: React.FC = props => { {education.school} {start} - {end ? ` ~ ${end}` : ` ${i18n.get('至今')}`} + {end ? ` ~ ${end}` : ` $`}
@@ -204,7 +204,7 @@ export const Template1: React.FC = props => { {workList?.length ? (
- {/* {i18n.get('个人作品')} */} + {/* */} {titleNameMap?.workList}
{workList.map((work, idx) => { @@ -216,7 +216,7 @@ export const Template1: React.FC = props => { /> {work.work_name} - {i18n.get('访问链接')} +
{work.work_desc &&
{work.work_desc}
} @@ -229,7 +229,7 @@ export const Template1: React.FC = props => { {skillList?.length ? (
- {/* {i18n.get('专业技能')} */} + {/* */} {titleNameMap?.skillList}
{skillList.map((skill, idx) => { @@ -270,7 +270,7 @@ export const Template1: React.FC = props => { {awardList?.length ? (
- {/* {i18n.get('更多信息')} */} + {/* */} {titleNameMap?.awardList}
{awardList.map((award, idx) => { @@ -295,7 +295,6 @@ export const Template1: React.FC = props => { {workExpList?.length ? wrapper({ id: 'work-experience', - // title: i18n.get('工作经历'), title: titleNameMap?.workExpList, color: theme.color, })( @@ -314,7 +313,9 @@ export const Template1: React.FC = props => { {start} - {end ? ` ~ ${end}` : ` ${i18n.get('至今')}`} + {end + ? ` ~ ${end}` + : ` $`}
{work.work_desc}
@@ -328,7 +329,6 @@ export const Template1: React.FC = props => { {projectList?.length ? wrapper({ id: 'skill', - // title: i18n.get('项目经历'), title: titleNameMap?.projectList, color: theme.color, })( @@ -350,11 +350,15 @@ export const Template1: React.FC = props => { )}
- {i18n.get('项目描述')}: + + : + {project.project_desc}
- {i18n.get('主要工作')}: + + : + {project.project_content} diff --git a/src/components/Resume/Template2/index.less b/src/components/Resume/Template2/index.less index c6e7a25..ae08bfa 100644 --- a/src/components/Resume/Template2/index.less +++ b/src/components/Resume/Template2/index.less @@ -237,7 +237,7 @@ } } -body[lang='en_US'] { +body[lang='en-US'] { .template2-resume { .section-title { &::after { diff --git a/src/components/Resume/Template2/index.tsx b/src/components/Resume/Template2/index.tsx index 8a4f44e..09618b9 100644 --- a/src/components/Resume/Template2/index.tsx +++ b/src/components/Resume/Template2/index.tsx @@ -13,7 +13,7 @@ import { } from '@ant-design/icons'; import cx from 'classnames'; import _ from 'lodash-es'; -import { getLocale } from '@/locale'; +import { FormattedMessage, useIntl } from 'react-intl'; import { getDefaultTitleNameMap } from '@/datas/constant'; import { Avatar } from '../../Avatar'; import type { ResumeConfig, ThemeConfig } from '../../types'; @@ -40,7 +40,7 @@ const Wrapper = ({ className, title, color, children }) => { * @description 简历内容区 */ export const Template2: React.FC = props => { - const i18n = getLocale(); + const intl = useIntl(); const { value, theme } = props; /** 个人基础信息 */ @@ -49,7 +49,7 @@ export const Template2: React.FC = props => { const titleNameMap = _.get( value, 'titleNameMap', - getDefaultTitleNameMap({ i18n }) + getDefaultTitleNameMap({ intl }) ); /** 教育背景 */ @@ -126,7 +126,7 @@ export const Template2: React.FC = props => { style={{ color: theme.color, opacity: 0.85 }} /> - {i18n.get('工作经验')}: {profile.workExpYear} + : {profile.workExpYear}
)} @@ -136,7 +136,7 @@ export const Template2: React.FC = props => { style={{ color: theme.color, opacity: 0.85 }} /> - {i18n.get('期望工作地')}: {profile.workPlace} + : {profile.workPlace} )} @@ -144,7 +144,7 @@ export const Template2: React.FC = props => {
- {i18n.get('职位')}: {profile.positionTitle} + : {profile.positionTitle}
)} @@ -164,7 +164,7 @@ export const Template2: React.FC = props => { {/* 教育背景 */} {educationList?.length ? ( title={titleNameMap.educationList} className="section section-education" color={theme.color} @@ -200,7 +200,7 @@ export const Template2: React.FC = props => { ) : null} {workList?.length ? ( title={titleNameMap.workList} className="section section-work" color={theme.color} @@ -214,7 +214,7 @@ export const Template2: React.FC = props => { /> {work.work_name} - {i18n.get('访问链接')} + {work.work_desc &&
{work.work_desc}
} @@ -224,7 +224,7 @@ export const Template2: React.FC = props => {
) : null} } className="section section-aboutme" color={theme.color} > @@ -235,7 +235,7 @@ export const Template2: React.FC = props => { {/* 专业技能 */} {skillList?.length ? ( title={titleNameMap.skillList} className="section section-skill" color={theme.color} @@ -292,7 +292,7 @@ export const Template2: React.FC = props => { {workExpList?.length ? ( title={titleNameMap.workExpList} color={theme.color} > @@ -309,7 +309,7 @@ export const Template2: React.FC = props => { {start} - {end ? ` ~ ${end}` : ` ${i18n.get('至今')}`} + {end ? ` ~ ${end}` : ` $`}
{work.work_desc}
@@ -322,7 +322,7 @@ export const Template2: React.FC = props => { {projectList?.length ? ( title={titleNameMap.projectList} color={theme.color} > @@ -342,11 +342,15 @@ export const Template2: React.FC = props => { )}
- {i18n.get('项目描述')}: + + : + {project.project_desc}
- {i18n.get('主要工作')}: + + : + {project.project_content} diff --git a/src/components/Resume/Template3/index.tsx b/src/components/Resume/Template3/index.tsx index 533bc1d..0d111a9 100644 --- a/src/components/Resume/Template3/index.tsx +++ b/src/components/Resume/Template3/index.tsx @@ -13,7 +13,7 @@ import { CrownFilled, } from '@ant-design/icons'; import _ from 'lodash-es'; -import { getLocale } from '@/locale'; +import { FormattedMessage, useIntl } from 'react-intl'; import { getDefaultTitleNameMap } from '@/datas/constant'; import type { ResumeConfig, ThemeConfig } from '../../types'; import './index.less'; @@ -35,7 +35,7 @@ const wrapper = ({ id, title, color }) => WrappedComponent => { }; const CardWrapper: React.FC<{ - title: string; + title: string | JSX.Element; className: string; color: string; }> = ({ title, color, className, children }) => { @@ -54,7 +54,7 @@ const CardWrapper: React.FC<{ * @description 简历内容区 */ export const Template3: React.FC = props => { - const i18n = getLocale(); + const intl = useIntl(); const { value, theme } = props; /** 个人基础信息 */ @@ -63,7 +63,7 @@ export const Template3: React.FC = props => { const titleNameMap = _.get( value, 'titleNameMap', - getDefaultTitleNameMap({ i18n }) + getDefaultTitleNameMap({ intl }) ); /** 教育背景 */ @@ -138,7 +138,7 @@ export const Template3: React.FC = props => {
- {i18n.get('工作经验')}: {profile.workExpYear} + : {profile.workExpYear}
)} @@ -148,7 +148,7 @@ export const Template3: React.FC = props => { style={{ color: theme.color, opacity: 0.85 }} /> - {i18n.get('期望工作地')}: {profile.workPlace} + : {profile.workPlace}
)} @@ -156,7 +156,7 @@ export const Template3: React.FC = props => {
- {i18n.get('职位')}: {profile.positionTitle} + : {profile.positionTitle}
)} @@ -166,7 +166,7 @@ export const Template3: React.FC = props => { {/* 教育背景 */} {educationList?.length ? ( title={titleNameMap.educationList} className="section section-education" color={theme.color} @@ -192,7 +192,7 @@ export const Template3: React.FC = props => { {start} - {end ? ` ~ ${end}` : ` ${i18n.get('至今')}`} + {end ? ` ~ ${end}` : ` $`} @@ -202,7 +202,7 @@ export const Template3: React.FC = props => { ) : null} {workList?.length ? ( title={titleNameMap.workList} className="section section-work" color={theme.color} @@ -216,7 +216,7 @@ export const Template3: React.FC = props => { /> {work.work_name} - {i18n.get('访问链接')} + {work.work_desc &&
{work.work_desc}
} @@ -226,7 +226,7 @@ export const Template3: React.FC = props => {
) : null} } className="section section-aboutme" color={theme.color} > @@ -237,7 +237,7 @@ export const Template3: React.FC = props => { {/* 专业技能 */} {skillList?.length ? ( title={titleNameMap.skillList} className="section section-skill" color={theme.color} @@ -267,7 +267,7 @@ export const Template3: React.FC = props => { ) : null} {awardList?.length ? ( title={titleNameMap.awardList} className="section section-award" color={theme.color} @@ -294,7 +294,6 @@ export const Template3: React.FC = props => { {workExpList?.length ? wrapper({ id: 'work-experience', - // title: i18n.get('工作经历'), title: titleNameMap?.workExpList, color: theme.color, })( @@ -313,7 +312,9 @@ export const Template3: React.FC = props => { {start} - {end ? ` ~ ${end}` : ` ${i18n.get('至今')}`} + {end + ? ` ~ ${end}` + : ` $`}
{work.work_desc}
@@ -327,7 +328,6 @@ export const Template3: React.FC = props => { {projectList?.length ? wrapper({ id: 'skill', - // title: i18n.get('项目经历'), title: titleNameMap?.projectList, color: theme.color, })( @@ -349,11 +349,15 @@ export const Template3: React.FC = props => { )}
- {i18n.get('项目描述')}: + + : + {project.project_desc}
- {i18n.get('主要工作')}: + + : + {project.project_content} diff --git a/src/components/index.tsx b/src/components/index.tsx index 87e7314..0699f5b 100644 --- a/src/components/index.tsx +++ b/src/components/index.tsx @@ -4,7 +4,8 @@ import type { RcFile } from 'antd/lib/upload'; import _ from 'lodash-es'; import qs from 'query-string'; import jsonUrl from 'json-url'; -import { getLanguage, getLocale } from '@/locale'; +import { FormattedMessage, useIntl } from 'react-intl'; +import { getLanguage } from '@/i18n'; import { useModeSwitcher } from '@/hooks/useModeSwitcher'; import { getDefaultTitleNameMap } from '@/datas/constant'; import { getSearchObj } from '@/helpers/location'; @@ -17,13 +18,14 @@ import { fetchResume } from '@/helpers/fetch-resume'; import { Drawer } from './Drawer'; import { Resume } from './Resume'; import type { ResumeConfig, ThemeConfig } from './types'; + import './index.less'; const codec = jsonUrl('lzma'); export const Page: React.FC = () => { const lang = getLanguage(); - const i18n = getLocale(); + const intl = useIntl(); const user = getSearchObj().user || 'visiky'; const [, mode, changeMode] = useModeSwitcher({}); @@ -71,7 +73,7 @@ export const Page: React.FC = () => { const changeConfig = (v: Partial) => { setConfig( - _.assign({}, { titleNameMap: getDefaultTitleNameMap({ i18n }) }, v) + _.assign({}, { titleNameMap: getDefaultTitleNameMap({ intl }) }, v) ); }; @@ -96,14 +98,14 @@ export const Page: React.FC = () => { .then(data => store(data)) .catch(() => { Modal.info({ - title: i18n.get('获取简历信息失败'), + title: , content: (
请检查用户名 {user} 是否正确或者简历信息是否在 {`${link}/resume.json`}
), - okText: i18n.get('进入在线编辑'), + okText: , // intl.formatMessage({ id: '进入在线编辑' }), onOk: () => { changeMode('edit'); }, @@ -140,7 +142,9 @@ export const Page: React.FC = () => { useEffect(() => { if (getDevice() === 'mobile') { - message.info(i18n.get('移动端只提供查看功能,在线制作请前往 PC 端')); + message.info( + intl.formatMessage({ id: '移动端只提供查看功能,在线制作请前往 PC 端' }) + ); } }, []); @@ -181,15 +185,17 @@ export const Page: React.FC = () => { onThemeChange(newConfig.theme); onConfigChange(_.omit(newConfig, 'theme')); } - message.success(i18n.get('上传配置已应用')); + message.success(intl.formatMessage({ id: '上传配置已应用' })); } catch (err) { - message.error(i18n.get('上传文件有误,请重新上传')); + message.error(intl.formatMessage({ id: '上传文件有误,请重新上传' })); } }; reader.readAsText(file); } else { message.error( - i18n.get('您当前浏览器不支持 FileReader,建议使用谷歌浏览器') + intl.formatMessage({ + id: '您当前浏览器不支持 FileReader,建议使用谷歌浏览器', + }) ); } return false; @@ -197,7 +203,7 @@ export const Page: React.FC = () => { function getConfigJson() { let fullConfig = config; - if (lang !== 'zh_CN') { + if (lang !== 'zh-CN') { fullConfig = customAssign({}, originalConfig?.current, { locales: { [lang]: config }, }); @@ -232,10 +238,12 @@ export const Page: React.FC = () => { showIcon={false} message={ - {i18n.get(`编辑之后,请及时存储个人信息到个人仓库中。`)} + {intl.formatMessage({ + id: `编辑之后,请及时存储个人信息到个人仓库中。`, + })} - 👉 {!query.user && i18n.get('参考:')} + 👉 {!query.user && intl.formatMessage({ id: '参考:' })} { onValueChange={onConfigChange} theme={theme} onThemeChange={onThemeChange} + // @ts-ignore template={query.template || 'template1'} onTemplateChange={updateTemplate} /> { beforeUpload={importConfig} > diff --git a/src/components/types.ts b/src/components/types.ts index c625f6b..1849537 100644 --- a/src/components/types.ts +++ b/src/components/types.ts @@ -115,6 +115,6 @@ export type ResumeConfig = { export type ThemeConfig = { /** 主题色 */ color: string; - /** tag 标签色 */ + /** Tag 标签色 */ tagColor: string; }; diff --git a/src/datas/constant.ts b/src/datas/constant.ts index 55b7df7..2205c6f 100644 --- a/src/datas/constant.ts +++ b/src/datas/constant.ts @@ -1,21 +1,20 @@ -import type { ResumeConfig } from "@/components/types"; +import type { ResumeConfig } from '@/components/types'; - -export function getDefaultTitleNameMap({ i18n }): ResumeConfig['titleNameMap'] { +export function getDefaultTitleNameMap({ intl }): ResumeConfig['titleNameMap'] { return { /** 默认: 教育背景 */ - educationList: i18n.get('教育背景'), + educationList: intl.formatMessage({ id: '教育背景' }), /** 默认: 工作经历 */ - workExpList: i18n.get('工作经历'), + workExpList: intl.formatMessage({ id: '工作经历' }), /** 默认: 项目经历 */ - projectList: i18n.get('项目经历'), + projectList: intl.formatMessage({ id: '项目经历' }), /** 默认: 个人技能 */ - skillList: i18n.get('个人技能'), + skillList: intl.formatMessage({ id: '个人技能' }), /** 默认: 更多信息 */ - awardList: i18n.get('更多信息'), + awardList: intl.formatMessage({ id: '更多信息' }), /** 默认: 作品 */ - workList: i18n.get('个人作品'), + workList: intl.formatMessage({ id: '个人作品' }), /** 默认: 自我介绍 */ - aboutme: i18n.get('自我介绍') - } -}; + aboutme: intl.formatMessage({ id: '自我介绍' }), + }; +} diff --git a/src/datas/resume.ts b/src/datas/resume.ts index 9e9238f..61ad71a 100644 --- a/src/datas/resume.ts +++ b/src/datas/resume.ts @@ -139,7 +139,7 @@ export const RESUME_INFO: ResumeConfig = { }, // 国际化 locales: { - en_US: { + 'en-US': { profile: { name: 'Xiaojuan Liao', email: '736****86@qq.com', diff --git a/src/helpers/contant.tsx b/src/helpers/contant.tsx index c4d4e4f..fcf6733 100644 --- a/src/helpers/contant.tsx +++ b/src/helpers/contant.tsx @@ -18,27 +18,55 @@ import type { ResumeConfig } from '@/components/types'; * ② 后续支持添加自定义模块 */ export const MODULES = ({ - i18n, + intl, titleNameMap, }: { - i18n: any; + intl: any; titleNameMap?: ResumeConfig['titleNameMap']; }) => { return [ - { name: i18n.get('头像设置'), icon: , key: 'avatar' }, - { name: i18n.get('个人信息'), icon: , key: 'profile' }, { - name: i18n.get('教育背景'), + name: intl.formatMessage({ id: '头像设置' }), + icon: , + key: 'avatar', + }, + { + name: intl.formatMessage({ id: '个人信息' }), + icon: , + key: 'profile', + }, + { + name: intl.formatMessage({ id: '教育背景' }), icon: , key: 'educationList', }, - { name: i18n.get('自我介绍'), icon: , key: 'aboutme' }, - { name: i18n.get('更多信息'), icon: , key: 'awardList' }, - { name: i18n.get('个人作品'), icon: , key: 'workList' }, - { name: i18n.get('专业技能'), icon: , key: 'skillList' }, - { name: i18n.get('工作经历'), icon: , key: 'workExpList' }, { - name: i18n.get('项目经历'), + name: intl.formatMessage({ id: '自我介绍' }), + icon: , + key: 'aboutme', + }, + { + name: intl.formatMessage({ id: '更多信息' }), + icon: , + key: 'awardList', + }, + { + name: intl.formatMessage({ id: '个人作品' }), + icon: , + key: 'workList', + }, + { + name: intl.formatMessage({ id: '专业技能' }), + icon: , + key: 'skillList', + }, + { + name: intl.formatMessage({ id: '工作经历' }), + icon: , + key: 'workExpList', + }, + { + name: intl.formatMessage({ id: '项目经历' }), icon: , key: 'projectList', }, @@ -51,13 +79,13 @@ export const MODULES = ({ /** * 模块对应配置内容 */ -export const CONTENT_OF_MODULE = ({ i18n }) => { +export const CONTENT_OF_MODULE = ({ intl }) => { return { avatar: [ { type: 'checkbox', attributeId: 'hidden', - displayName: i18n.get('隐藏头像'), + displayName: intl.formatMessage({ id: '隐藏头像' }), formItemProps: { valuePropName: 'checked', }, @@ -68,12 +96,12 @@ export const CONTENT_OF_MODULE = ({ i18n }) => { { type: 'select', attributeId: 'shape', - displayName: i18n.get('头像形状'), + displayName: intl.formatMessage({ id: '头像形状' }), cfg: { defaultValue: 'circle', options: [ - { value: 'circle', label: i18n.get('圆形') }, - { value: 'square', label: i18n.get('方形') }, + { value: 'circle', label: intl.formatMessage({ id: '圆形' }) }, + { value: 'square', label: intl.formatMessage({ id: '方形' }) }, ], }, }, @@ -82,13 +110,13 @@ export const CONTENT_OF_MODULE = ({ i18n }) => { { type: 'input', attributeId: 'name', - displayName: i18n.get('姓名'), + displayName: intl.formatMessage({ id: '姓名' }), formItemProps: { rules: [{ required: true }] }, }, { type: 'input', attributeId: 'mobile', - displayName: i18n.get('手机号码'), + displayName: intl.formatMessage({ id: '手机号码' }), formItemProps: { rules: [ { required: true, message: 'Please input your phone number!' }, @@ -98,7 +126,7 @@ export const CONTENT_OF_MODULE = ({ i18n }) => { { type: 'input', attributeId: 'email', - displayName: i18n.get('邮箱'), + displayName: intl.formatMessage({ id: '邮箱' }), formItemProps: { rules: [{ required: true, message: 'Please input your email!' }], }, @@ -106,7 +134,7 @@ export const CONTENT_OF_MODULE = ({ i18n }) => { { type: 'input', attributeId: 'github', - displayName: i18n.get('Github'), + displayName: intl.formatMessage({ id: 'Github' }), cfg: { placeholder: 'Please input your github account, optional', }, @@ -114,7 +142,7 @@ export const CONTENT_OF_MODULE = ({ i18n }) => { { type: 'input', attributeId: 'zhihu', - displayName: i18n.get('知乎'), + displayName: intl.formatMessage({ id: '知乎' }), cfg: { placeholder: 'Please input the link to visit your zhihu account, optional', @@ -123,67 +151,67 @@ export const CONTENT_OF_MODULE = ({ i18n }) => { { type: 'input', attributeId: 'workExpYear', - displayName: i18n.get('工作经验'), + displayName: intl.formatMessage({ id: '工作经验' }), }, { type: 'input', attributeId: 'workPlace', - displayName: i18n.get('期望工作地'), + displayName: intl.formatMessage({ id: '期望工作地' }), }, { type: 'input', attributeId: 'positionTitle', - displayName: i18n.get('职位'), + displayName: intl.formatMessage({ id: '职位' }), }, ], educationList: [ { type: 'input', attributeId: 'edu_time', - displayName: i18n.get('起始时间'), + displayName: intl.formatMessage({ id: '起始时间' }), formItemProps: { rules: [{ required: true }] }, // cfg: { picker: 'month' }, }, { type: 'input', attributeId: 'school', - displayName: i18n.get('学校'), + displayName: intl.formatMessage({ id: '学校' }), formItemProps: { rules: [{ required: true }] }, }, { type: 'input', attributeId: 'major', - displayName: i18n.get('专业'), + displayName: intl.formatMessage({ id: '专业' }), }, ], projectList: [ { type: 'input', attributeId: 'project_time', - displayName: i18n.get('起止时间'), + displayName: intl.formatMessage({ id: '起止时间' }), formItemProps: { rules: [{ required: true }] }, // cfg: { picker: 'month' }, }, { type: 'input', attributeId: 'project_name', - displayName: i18n.get('项目名称'), + displayName: intl.formatMessage({ id: '项目名称' }), }, { type: 'input', attributeId: 'project_role', - displayName: i18n.get('担任角色'), + displayName: intl.formatMessage({ id: '担任角色' }), }, { type: 'textArea', attributeId: 'project_desc', - displayName: i18n.get('项目描述'), + displayName: intl.formatMessage({ id: '项目描述' }), cfg: { autoSize: { minRows: 8 }, showCount: true }, }, { type: 'textArea', attributeId: 'project_content', - displayName: i18n.get('主要工作'), + displayName: intl.formatMessage({ id: '主要工作' }), cfg: { autoSize: { minRows: 8 }, showCount: true, @@ -197,54 +225,54 @@ export const CONTENT_OF_MODULE = ({ i18n }) => { { type: 'input', attributeId: 'work_time', - displayName: i18n.get('起止时间'), + displayName: intl.formatMessage({ id: '起止时间' }), formItemProps: { rules: [{ required: true }] }, // cfg: { picker: 'month' }, }, { type: 'input', attributeId: 'company_name', - displayName: i18n.get('公司名称'), + displayName: intl.formatMessage({ id: '公司名称' }), formItemProps: { rules: [{ required: true }] }, }, { type: 'input', attributeId: 'department_name', - displayName: i18n.get('部门'), + displayName: intl.formatMessage({ id: '部门' }), }, { type: 'textArea', attributeId: 'work_desc', - displayName: i18n.get('职位或描述'), + displayName: intl.formatMessage({ id: '职位或描述' }), }, ], workList: [ { type: 'input', attributeId: 'work_name', - displayName: i18n.get('作品名称'), + displayName: intl.formatMessage({ id: '作品名称' }), }, { type: 'input', attributeId: 'work_desc', - displayName: i18n.get('作品描述'), + displayName: intl.formatMessage({ id: '作品描述' }), }, { type: 'input', attributeId: 'visit_link', - displayName: i18n.get('作品链接'), + displayName: intl.formatMessage({ id: '作品链接' }), }, ], skillList: [ { type: 'input', attributeId: 'skill_name', - displayName: i18n.get('技能项'), + displayName: intl.formatMessage({ id: '技能项' }), }, { type: 'number', attributeId: 'skill_level', - displayName: i18n.get('掌握程度'), + displayName: intl.formatMessage({ id: '掌握程度' }), cfg: { step: 20, min: 0, @@ -256,21 +284,21 @@ export const CONTENT_OF_MODULE = ({ i18n }) => { { type: 'textArea', attributeId: 'skill_desc', - displayName: i18n.get('技能描述'), + displayName: intl.formatMessage({ id: '技能描述' }), }, ], awardList: [ { type: 'input', attributeId: 'award_time', - displayName: i18n.get('获奖时间'), + displayName: intl.formatMessage({ id: '获奖时间' }), formItemProps: { rules: [{ required: true }] }, // cfg: { picker: 'month' }, }, { type: 'input', attributeId: 'award_info', - displayName: i18n.get('奖项内容'), + displayName: intl.formatMessage({ id: '奖项内容' }), formItemProps: { rules: [{ required: true }] }, }, ], diff --git a/src/helpers/store-to-local.ts b/src/helpers/store-to-local.ts index b6b204c..c59742a 100644 --- a/src/helpers/store-to-local.ts +++ b/src/helpers/store-to-local.ts @@ -1,10 +1,11 @@ +import { useIntl } from 'react-intl'; import { message } from 'antd'; import type { ResumeConfig } from '@/components/types'; import { customAssign } from '@/helpers/customAssign'; import _ from 'lodash-es'; -import { getLocale } from '@/locale'; import { RESUME_INFO } from '@/datas/resume'; import { fetchResume } from './fetch-resume'; +import { intl } from '@/i18n'; export const LOCAL_KEY = user => `${user ?? ''}resume-config`; @@ -13,7 +14,6 @@ export async function getConfig( branch: string, user: string ): Promise { - const i18n = getLocale(); // 先从本地缓存获取,否则从远程拉取 if (typeof localStorage !== 'undefined') { const config = localStorage.getItem(LOCAL_KEY(user)); @@ -27,7 +27,7 @@ export async function getConfig( } return fetchResume(lang, branch, user).catch(() => { - message.warn(i18n.get('从模板中获取'), 1); + message.warn(intl.formatMessage({ id: '从模板中获取' }), 1); return _.omit( customAssign({}, RESUME_INFO, _.get(RESUME_INFO, ['locales', lang])), ['locales'] @@ -37,11 +37,11 @@ export async function getConfig( export const saveToLocalStorage = _.throttle( (user: string, config: ResumeConfig) => { - const i18n = getLocale(); + const intl = useIntl(); if (typeof localStorage !== 'undefined') { localStorage.setItem(LOCAL_KEY(user), JSON.stringify(config)); - message.success(i18n.get('已缓存在本地'), 0.65); + message.success(intl.formatMessage({ id: '已缓存在本地' }), 0.65); } }, 5000 diff --git a/src/hooks/useModeSwitcher/index.tsx b/src/hooks/useModeSwitcher/index.tsx index e487a21..9955fe5 100644 --- a/src/hooks/useModeSwitcher/index.tsx +++ b/src/hooks/useModeSwitcher/index.tsx @@ -2,7 +2,7 @@ import React from 'react'; import cx from 'classnames'; import { Popover } from 'antd'; import qs from 'query-string'; -import { getLocale } from '@/locale'; +import { FormattedMessage } from 'react-intl'; import { getSearchObj } from '@/helpers/location'; import './index.less'; @@ -16,7 +16,6 @@ export const useModeSwitcher = ({ }: { className?: string; }): [JSX.Element, string, (v) => void] => { - const i18n = getLocale(); const mode = getMode(); const query = getSearchObj(); @@ -42,17 +41,19 @@ export const useModeSwitcher = ({
{mode !== 'edit' && ( changeMode('edit')}> - {i18n.get('编辑')} + )} {mode === 'edit' && (canPreview ? ( - - {i18n.get('预览')} + }> + + + ) : ( changeMode('read')}> - {i18n.get('预览')} + ))}
, diff --git a/src/i18n/index.ts b/src/i18n/index.ts new file mode 100644 index 0000000..317ae7e --- /dev/null +++ b/src/i18n/index.ts @@ -0,0 +1,33 @@ +import { getLanguage } from '@/i18n'; +import type { Locale } from './types'; + +const LocaleMap = {}; + +/** + * register a locale + * @param locale + * @param localeObj + */ +export function registerLocale(locale: string, localeObj: Locale): void { + LocaleMap[locale] = localeObj; +} + +export function getLocale(locale: string): Record { + return LocaleMap[locale]; +} + +import { createIntl, createIntlCache } from 'react-intl'; + +// This is optional but highly recommended +// since it prevents memory leak +const cache = createIntlCache(); + +export const intl = createIntl( + { + locale: getLanguage(), + messages: {}, + }, + cache +); + +export { getLanguage } from './language'; diff --git a/src/locale/language.ts b/src/i18n/language.ts similarity index 77% rename from src/locale/language.ts rename to src/i18n/language.ts index 96cad77..87f5c90 100644 --- a/src/locale/language.ts +++ b/src/i18n/language.ts @@ -5,7 +5,7 @@ import { getSearchObj } from '@/helpers/location'; */ export function getLanguage(): string { const query = getSearchObj(); - const lang = (query.lang as string) || 'zh_CN'; + const lang = (query.lang as string) || navigator.language || 'zh-CN'; typeof document !== 'undefined' && document.body.setAttribute('lang', lang); return lang; } diff --git a/src/locale/locales/en_US.ts b/src/i18n/locales/en-US.ts similarity index 94% rename from src/locale/locales/en_US.ts rename to src/i18n/locales/en-US.ts index 66be94a..306d520 100644 --- a/src/locale/locales/en_US.ts +++ b/src/i18n/locales/en-US.ts @@ -1,7 +1,7 @@ import type { Locale } from '../types'; export const EN_US_LOCALE: Locale = { - locale: 'en_US', + locale: 'en-US', 预览: 'Preview', 编辑: 'Edit', @@ -19,14 +19,14 @@ export const EN_US_LOCALE: Locale = { 继续添加: 'Continue add', 提交: 'Submit', 主题色: 'Brand color', - 'tag 标签色': 'Tag color', + 'Tag 标签色': 'Tag color', 工作经验: 'Work experience', 自我介绍: 'Introduction', 教育背景: 'Educational background', 个人作品: 'Personal works', 专业技能: 'Professional skills', - 更多信息: 'More informations', + 更多信息: 'More information', 工作经历: 'Work experience', 项目经历: 'Project experience', 项目描述: 'Description', @@ -35,7 +35,7 @@ export const EN_US_LOCALE: Locale = { 访问链接: 'link', 头像设置: 'Avatar', - 个人信息: 'Personal infomation', + 个人信息: 'Personal information', 个人技能: 'Personal skills', 隐藏头像: 'Hide avatar', diff --git a/src/locale/types.ts b/src/i18n/types.ts similarity index 100% rename from src/locale/types.ts rename to src/i18n/types.ts diff --git a/src/layout/header.tsx b/src/layout/header.tsx index 2f65997..3524a84 100644 --- a/src/layout/header.tsx +++ b/src/layout/header.tsx @@ -2,11 +2,10 @@ import React from 'react'; import { LangSwitcher } from '@/components/LangSwitcher'; import { getMode, useModeSwitcher } from '@/hooks/useModeSwitcher'; import { getSearchObj } from '@/helpers/location'; -import { getLocale } from '@/locale'; +import { FormattedMessage } from 'react-intl'; import './header.less'; const Header: React.FC = () => { - const i18n = getLocale(); const mode = getMode(); const [ModeSwitcher] = useModeSwitcher({}); @@ -24,7 +23,7 @@ const Header: React.FC = () => { {ModeSwitcher} {mode === 'read' && ( window.print()}> - {i18n.get('下载 PDF')} + )} diff --git a/src/locale/index.ts b/src/locale/index.ts deleted file mode 100644 index aa47b9d..0000000 --- a/src/locale/index.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { get } from 'lodash-es'; -import { template } from '@/helpers/template'; -import { getLanguage } from './language'; -import type { Locale } from './types'; - -const LocaleMap = {}; - -/** - * register a locale - * @param locale - * @param localeObj - */ -export function registerLocale(locale: string, localeObj: Locale): void { - LocaleMap[locale] = localeObj; -} - -/** - * get locale of specific language - * @param lang - * @returns - */ -export function getLocale(locale?: string) { - const lang = locale || getLanguage(); - return { - get: (key: string | string[], obj?: Record) => { - return template( - get(LocaleMap[lang], key) || get(LocaleMap['zh_CN'], key) || key, - obj - ); - }, - }; -} - -export { getLanguage } from './language'; diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 93e5465..4a47696 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -4,11 +4,12 @@ import qs from 'query-string'; import Header from '@/layout/header'; import Footer from '@/layout/footer'; import Content from '@/components'; -import { EN_US_LOCALE } from '@/locale/locales/en_US'; -import { registerLocale } from '@/locale'; +import { EN_US_LOCALE } from '@/i18n/locales/en-US'; +import { getLanguage, registerLocale, getLocale } from '@/i18n'; +import { IntlProvider } from 'react-intl'; import './index.less'; -registerLocale('en_US', EN_US_LOCALE); +registerLocale('en-US', EN_US_LOCALE); const Page = () => { const [title, changeTitle] = useState('Resume Generator'); @@ -20,15 +21,16 @@ const Page = () => { } }, []); + const lang = getLanguage(); return ( - + {title}
- + ); }; diff --git a/temp.json b/temp.json new file mode 100644 index 0000000..a5807b3 --- /dev/null +++ b/temp.json @@ -0,0 +1,71 @@ +{ + "Github": "Github", + "Tag 标签色": "Tag color", + "上传文件有误,请重新上传": {}, + "上传配置已应用": {}, + "下载 PDF": "Download PDF", + "专业": {}, + "专业技能": {}, + "个人作品": {}, + "个人信息": {}, + "个人技能": {}, + "主要工作": {}, + "主题色": {}, + "从模板中获取": {}, + "作品名称": {}, + "作品描述": {}, + "作品链接": {}, + "保存简历": {}, + "公司名称": {}, + "参考:": {}, + "圆形": {}, + "复制配置": {}, + "头像形状": {}, + "头像设置": {}, + "奖项内容": {}, + "姓名": {}, + "学校": {}, + "导入配置": {}, + "工作经历": {}, + "工作经验": {}, + "已缓存在本地": {}, + "您当前浏览器不支持 FileReader,建议使用谷歌浏览器": {}, + "手机号码": {}, + "技能描述": {}, + "技能项": {}, + "担任角色": {}, + "掌握程度": {}, + "提交": {}, + "教育背景": {}, + "方形": {}, + "无用户信息,不允许预览": {}, + "更多信息": {}, + "期望工作地": {}, + "知乎": {}, + "确认删除": {}, + "移动端只提供查看功能,在线制作请前往 PC 端": {}, + "移动端模式下,只支持预览,不支持配置": {}, + "继续添加": {}, + "编辑": {}, + "编辑之后,请及时存储个人信息到个人仓库中。": {}, + "编辑模式下, 切换国际化会导致正在配置的内容丢失,请及时保存": {}, + "职位": {}, + "职位或描述": {}, + "自我介绍": {}, + "获取简历信息失败": {}, + "获奖时间": {}, + "访问链接": {}, + "起始时间": {}, + "起止时间": {}, + "进入在线编辑": {}, + "进行配置": {}, + "选择模板": {}, + "邮箱": {}, + "部门": {}, + "配置简历": {}, + "隐藏头像": {}, + "项目名称": {}, + "项目描述": {}, + "项目经历": {}, + "预览": {} +} From 2895b251636c1fd377af5218ff49c4236fb12a20 Mon Sep 17 00:00:00 2001 From: visiky <736929286@qq.com> Date: Tue, 14 Mar 2023 16:42:38 +0800 Subject: [PATCH 3/7] chore: add formatjs extract & compile scripts --- .gitignore | 3 + i18n.formatter.js | 11 +++ package.json | 4 +- src/components/Resume/Template1/index.tsx | 6 +- src/components/Resume/Template2/index.tsx | 2 +- src/components/Resume/Template3/index.tsx | 6 +- src/i18n/locales/en-US.json | 88 +++++++++++++++++++++++ src/i18n/locales/en-US.ts | 80 --------------------- src/pages/index.tsx | 2 +- temp.json | 71 ------------------ 10 files changed, 110 insertions(+), 163 deletions(-) create mode 100644 i18n.formatter.js create mode 100644 src/i18n/locales/en-US.json delete mode 100644 src/i18n/locales/en-US.ts delete mode 100644 temp.json diff --git a/.gitignore b/.gitignore index 7552b1e..f969ba0 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,6 @@ public # package lock file package-lock.json + +# temp +**temp** diff --git a/i18n.formatter.js b/i18n.formatter.js new file mode 100644 index 0000000..6eea1a0 --- /dev/null +++ b/i18n.formatter.js @@ -0,0 +1,11 @@ +exports.format = function (msgs) { + const results = {}; + for (const [id, msg] of Object.entries(msgs)) { + // results[id] = { + // string: msg.defaultMessage, + // comment: msg.description, + // }; + results[id] = msg.defaultMessage || msg.description || id; + } + return results; +}; diff --git a/package.json b/package.json index 2101d23..fcac5e4 100644 --- a/package.json +++ b/package.json @@ -57,8 +57,8 @@ "prepare": "husky install", "lint-staged": "lint-staged", "i18n-pick": "node ./scripts/i18n-pick.js", - "extract": "formatjs extract 'src/**/*.ts*' --ignore '**/locales/**' --out-file temp.json --flatten", - "compile": "formatjs compile 'temp.json' --out-file i18n/en.json && rm temp.json", + "extract": "formatjs extract 'src/**/*.ts*' --ignore '**/locales/**' --format i18n.formatter.js --out-file i18n.temp.json --flatten", + "compile": "formatjs compile 'temp.json' --out-file i18n/en.json && rm i18n.temp.json", "extract-compile": "npm run extract && npm run compile" }, "lint-staged": { diff --git a/src/components/Resume/Template1/index.tsx b/src/components/Resume/Template1/index.tsx index 095745e..36f6d6f 100644 --- a/src/components/Resume/Template1/index.tsx +++ b/src/components/Resume/Template1/index.tsx @@ -185,7 +185,7 @@ export const Template1: React.FC = props => { {education.school} {start} - {end ? ` ~ ${end}` : ` $`} + {end ? ` ~ ${end}` : }
@@ -313,9 +313,7 @@ export const Template1: React.FC = props => { {start} - {end - ? ` ~ ${end}` - : ` $`} + {end ? ` ~ ${end}` : }
{work.work_desc}
diff --git a/src/components/Resume/Template2/index.tsx b/src/components/Resume/Template2/index.tsx index 09618b9..1bd5a30 100644 --- a/src/components/Resume/Template2/index.tsx +++ b/src/components/Resume/Template2/index.tsx @@ -309,7 +309,7 @@ export const Template2: React.FC = props => { {start} - {end ? ` ~ ${end}` : ` $`} + {end ? ` ~ ${end}` : }
{work.work_desc}
diff --git a/src/components/Resume/Template3/index.tsx b/src/components/Resume/Template3/index.tsx index 0d111a9..e151c43 100644 --- a/src/components/Resume/Template3/index.tsx +++ b/src/components/Resume/Template3/index.tsx @@ -192,7 +192,7 @@ export const Template3: React.FC = props => { {start} - {end ? ` ~ ${end}` : ` $`} + {end ? ` ~ ${end}` : } @@ -312,9 +312,7 @@ export const Template3: React.FC = props => { {start} - {end - ? ` ~ ${end}` - : ` $`} + {end ? ` ~ ${end}` : }
{work.work_desc}
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json new file mode 100644 index 0000000..d17f8f7 --- /dev/null +++ b/src/i18n/locales/en-US.json @@ -0,0 +1,88 @@ +{ + "locale": "en-US", + + "预览": "Preview", + "编辑": "Edit", + + "已缓存在本地": "Save to localStorage", + + "导入配置": "Import config", + "复制配置": "Copy config", + "保存简历": "Save Resume", + "下载 PDF": "Download pdf", + "进行配置": "Enter config", + "选择模板": "Choose template", + "配置简历": "Config resume", + "确认删除": "Confirm delete", + "继续添加": "Continue add", + "提交": "Submit", + "主题色": "Brand color", + "Tag 标签色": "Tag color", + + "工作经验": "Work experience", + "自我介绍": "Introduction", + "教育背景": "Educational background", + "个人作品": "Personal works", + "专业技能": "Professional skills", + "更多信息": "More information", + "工作经历": "Work experience", + "项目经历": "Project experience", + "项目描述": "Description", + "主要工作": "Main work", + "至今": "to present", + "访问链接": "link", + + "头像设置": "Avatar", + "个人信息": "Personal information", + "个人技能": "Personal skills", + + "隐藏头像": "Hide avatar", + "姓名": "Fullname", + "手机号码": "Mobile", + "邮箱": "Email", + "知乎": "Zhihu", + "职位": "Position title", + "期望工作地": "work space", + "起始时间": "Start time", + "学校": "School", + "专业": "Major in", + "项目名称": "Project name", + "担任角色": "Project role", + "部门": "Apartment", + "公司名称": "Compare name", + "职位或描述": "职位或描述", + "作品名称": "Work name", + "作品链接": "Work link", + "作品描述": "Work description", + "技能项": "Skill", + "技能描述": "Skill description", + "掌握程度": "Degree of mastery", + "奖项内容": "Awards description", + "获奖时间": "Awards time", + + "默认模板(适用于单页)": "Default template, apply to single page", + "简易模板": "Simple template", + "简易模板(适用于多页)": "Simple template, apply to multiple page", + + "移动端模式下,只支持预览,不支持配置": "", + "移动端只提供查看功能,在线制作请前往 PC 端": "", + "上传配置已应用": "上传配置已应用", + "上传文件有误,请重新上传": "", + "您当前浏览器不支持 FileReader,建议使用谷歌浏览器": "", + "编辑模式下, 切换国际化会导致配置内容丢失,请及时保存": "", + "进入在线编辑": "进入在线编辑", + "获取简历信息失败": "获取简历信息失败", + "确定": "Ok", + + "无用户信息模式下,不允许预览": "", + "Github": "Github", + "从模板中获取": "Get from template", + "参考:": "参考:", + "头像形状": "头像形状", + "圆形": "圆形", + "方形": "方形", + "无用户信息,不允许预览": "无用户信息,不允许预览", + "编辑之后,请及时存储个人信息到个人仓库中。": "编辑之后,请及时存储个人信息到个人仓库中。", + "编辑模式下, 切换国际化会导致正在配置的内容丢失,请及时保存": "编辑模式下, 切换国际化会导致正在配置的内容丢失,请及时保存", + "起止时间": "起止时间" +} diff --git a/src/i18n/locales/en-US.ts b/src/i18n/locales/en-US.ts deleted file mode 100644 index 306d520..0000000 --- a/src/i18n/locales/en-US.ts +++ /dev/null @@ -1,80 +0,0 @@ -import type { Locale } from '../types'; - -export const EN_US_LOCALE: Locale = { - locale: 'en-US', - - 预览: 'Preview', - 编辑: 'Edit', - - 已缓存在本地: 'Save to localStorage', - - 导入配置: 'Import config', - 复制配置: 'Copy config', - 保存简历: 'Save Resume', - '下载 PDF': 'Download pdf', - 进行配置: 'Enter config', - 选择模板: 'Choose template', - 配置简历: 'Config resume', - 确认删除: 'Confirm delete', - 继续添加: 'Continue add', - 提交: 'Submit', - 主题色: 'Brand color', - 'Tag 标签色': 'Tag color', - - 工作经验: 'Work experience', - 自我介绍: 'Introduction', - 教育背景: 'Educational background', - 个人作品: 'Personal works', - 专业技能: 'Professional skills', - 更多信息: 'More information', - 工作经历: 'Work experience', - 项目经历: 'Project experience', - 项目描述: 'Description', - 主要工作: 'Main work', - 至今: 'to present', - 访问链接: 'link', - - 头像设置: 'Avatar', - 个人信息: 'Personal information', - 个人技能: 'Personal skills', - - 隐藏头像: 'Hide avatar', - 姓名: 'Fullname', - 手机号码: 'Mobile', - 邮箱: 'Email', - 知乎: 'Zhihu', - 职位: 'Position title', - 期望工作地: 'work space', - 起始时间: 'Start time', - 学校: 'School', - 专业: 'Major in', - 项目名称: 'Project name', - 担任角色: 'Project role', - 部门: 'Apartment', - 公司名称: 'Compare name', - 职位或描述: '', - 作品名称: 'Work name', - 作品链接: 'Work link', - 作品描述: 'Work description', - 技能项: 'Skill', - 技能描述: 'Skill description', - 掌握程度: 'Degree of mastery', - 奖项内容: 'Awards description', - 获奖时间: 'Awards time', - - '默认模板(适用于单页)': 'Default template, apply to single page', - 简易模板: 'Simple template', - '简易模板(适用于多页)': 'Simple template, apply to multiple page', - - '移动端模式下,只支持预览,不支持配置': '', - '移动端只提供查看功能,在线制作请前往 PC 端': '', - 上传配置已应用: '', - '上传文件有误,请重新上传': '', - '您当前浏览器不支持 FileReader,建议使用谷歌浏览器': '', - '编辑模式下, 切换国际化会导致配置内容丢失,请及时保存': '', - 进入在线编辑: '', - 获取简历信息失败: '', - 确定: 'Ok', - - '无用户信息模式下,不允许预览': '', -}; diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 4a47696..1a3e760 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -4,7 +4,7 @@ import qs from 'query-string'; import Header from '@/layout/header'; import Footer from '@/layout/footer'; import Content from '@/components'; -import { EN_US_LOCALE } from '@/i18n/locales/en-US'; +import EN_US_LOCALE from '@/i18n/locales/en-US.json'; import { getLanguage, registerLocale, getLocale } from '@/i18n'; import { IntlProvider } from 'react-intl'; import './index.less'; diff --git a/temp.json b/temp.json deleted file mode 100644 index a5807b3..0000000 --- a/temp.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "Github": "Github", - "Tag 标签色": "Tag color", - "上传文件有误,请重新上传": {}, - "上传配置已应用": {}, - "下载 PDF": "Download PDF", - "专业": {}, - "专业技能": {}, - "个人作品": {}, - "个人信息": {}, - "个人技能": {}, - "主要工作": {}, - "主题色": {}, - "从模板中获取": {}, - "作品名称": {}, - "作品描述": {}, - "作品链接": {}, - "保存简历": {}, - "公司名称": {}, - "参考:": {}, - "圆形": {}, - "复制配置": {}, - "头像形状": {}, - "头像设置": {}, - "奖项内容": {}, - "姓名": {}, - "学校": {}, - "导入配置": {}, - "工作经历": {}, - "工作经验": {}, - "已缓存在本地": {}, - "您当前浏览器不支持 FileReader,建议使用谷歌浏览器": {}, - "手机号码": {}, - "技能描述": {}, - "技能项": {}, - "担任角色": {}, - "掌握程度": {}, - "提交": {}, - "教育背景": {}, - "方形": {}, - "无用户信息,不允许预览": {}, - "更多信息": {}, - "期望工作地": {}, - "知乎": {}, - "确认删除": {}, - "移动端只提供查看功能,在线制作请前往 PC 端": {}, - "移动端模式下,只支持预览,不支持配置": {}, - "继续添加": {}, - "编辑": {}, - "编辑之后,请及时存储个人信息到个人仓库中。": {}, - "编辑模式下, 切换国际化会导致正在配置的内容丢失,请及时保存": {}, - "职位": {}, - "职位或描述": {}, - "自我介绍": {}, - "获取简历信息失败": {}, - "获奖时间": {}, - "访问链接": {}, - "起始时间": {}, - "起止时间": {}, - "进入在线编辑": {}, - "进行配置": {}, - "选择模板": {}, - "邮箱": {}, - "部门": {}, - "配置简历": {}, - "隐藏头像": {}, - "项目名称": {}, - "项目描述": {}, - "项目经历": {}, - "预览": {} -} From 67422f108ce4db8a20478d3ceb15d856a17bf984 Mon Sep 17 00:00:00 2001 From: visiky <736929286@qq.com> Date: Tue, 14 Mar 2023 17:18:11 +0800 Subject: [PATCH 4/7] =?UTF-8?q?refactor:=20=E5=B0=86=E7=9B=AE=E5=BD=95=20d?= =?UTF-8?q?atas=20=E6=9B=B4=E5=90=8D=E4=B8=BA=20data?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Drawer/index.tsx | 2 +- src/components/Resume/Template1/index.tsx | 2 +- src/components/Resume/Template2/index.tsx | 2 +- src/components/Resume/Template3/index.tsx | 2 +- src/components/index.tsx | 2 +- src/{datas => data}/constant.ts | 0 src/{datas => data}/resume.ts | 0 src/helpers/store-to-local.ts | 2 +- 8 files changed, 6 insertions(+), 6 deletions(-) rename src/{datas => data}/constant.ts (100%) rename src/{datas => data}/resume.ts (100%) diff --git a/src/components/Drawer/index.tsx b/src/components/Drawer/index.tsx index 6371428..8ca1954 100644 --- a/src/components/Drawer/index.tsx +++ b/src/components/Drawer/index.tsx @@ -14,7 +14,7 @@ import { HTML5Backend } from 'react-dnd-html5-backend'; import _ from 'lodash-es'; import arrayMove from 'array-move'; import { FormCreator } from '../FormCreator'; -import { getDefaultTitleNameMap } from '@/datas/constant'; +import { getDefaultTitleNameMap } from '@/data/constant'; import { FormattedMessage, useIntl } from 'react-intl'; import { MODULES, CONTENT_OF_MODULE } from '@/helpers/contant'; import type { ResumeConfig, ThemeConfig } from '../types'; diff --git a/src/components/Resume/Template1/index.tsx b/src/components/Resume/Template1/index.tsx index 36f6d6f..23146d3 100644 --- a/src/components/Resume/Template1/index.tsx +++ b/src/components/Resume/Template1/index.tsx @@ -14,7 +14,7 @@ import { } from '@ant-design/icons'; import _ from 'lodash-es'; import { FormattedMessage, useIntl } from 'react-intl'; -import { getDefaultTitleNameMap } from '@/datas/constant'; +import { getDefaultTitleNameMap } from '@/data/constant'; import { Avatar } from '../../Avatar'; import type { ResumeConfig, ThemeConfig } from '../../types'; import './index.less'; diff --git a/src/components/Resume/Template2/index.tsx b/src/components/Resume/Template2/index.tsx index 1bd5a30..861bd59 100644 --- a/src/components/Resume/Template2/index.tsx +++ b/src/components/Resume/Template2/index.tsx @@ -14,7 +14,7 @@ import { import cx from 'classnames'; import _ from 'lodash-es'; import { FormattedMessage, useIntl } from 'react-intl'; -import { getDefaultTitleNameMap } from '@/datas/constant'; +import { getDefaultTitleNameMap } from '@/data/constant'; import { Avatar } from '../../Avatar'; import type { ResumeConfig, ThemeConfig } from '../../types'; import './index.less'; diff --git a/src/components/Resume/Template3/index.tsx b/src/components/Resume/Template3/index.tsx index e151c43..24562c9 100644 --- a/src/components/Resume/Template3/index.tsx +++ b/src/components/Resume/Template3/index.tsx @@ -14,7 +14,7 @@ import { } from '@ant-design/icons'; import _ from 'lodash-es'; import { FormattedMessage, useIntl } from 'react-intl'; -import { getDefaultTitleNameMap } from '@/datas/constant'; +import { getDefaultTitleNameMap } from '@/data/constant'; import type { ResumeConfig, ThemeConfig } from '../../types'; import './index.less'; diff --git a/src/components/index.tsx b/src/components/index.tsx index 0699f5b..8ebca19 100644 --- a/src/components/index.tsx +++ b/src/components/index.tsx @@ -7,7 +7,7 @@ import jsonUrl from 'json-url'; import { FormattedMessage, useIntl } from 'react-intl'; import { getLanguage } from '@/i18n'; import { useModeSwitcher } from '@/hooks/useModeSwitcher'; -import { getDefaultTitleNameMap } from '@/datas/constant'; +import { getDefaultTitleNameMap } from '@/data/constant'; import { getSearchObj } from '@/helpers/location'; import { customAssign } from '@/helpers/customAssign'; import { copyToClipboard } from '@/helpers/copy-to-board'; diff --git a/src/datas/constant.ts b/src/data/constant.ts similarity index 100% rename from src/datas/constant.ts rename to src/data/constant.ts diff --git a/src/datas/resume.ts b/src/data/resume.ts similarity index 100% rename from src/datas/resume.ts rename to src/data/resume.ts diff --git a/src/helpers/store-to-local.ts b/src/helpers/store-to-local.ts index c59742a..cb3b789 100644 --- a/src/helpers/store-to-local.ts +++ b/src/helpers/store-to-local.ts @@ -3,7 +3,7 @@ import { message } from 'antd'; import type { ResumeConfig } from '@/components/types'; import { customAssign } from '@/helpers/customAssign'; import _ from 'lodash-es'; -import { RESUME_INFO } from '@/datas/resume'; +import { RESUME_INFO } from '@/data/resume'; import { fetchResume } from './fetch-resume'; import { intl } from '@/i18n'; From efbaaf58864306f56d10f149c8f8d93f84eaafeb Mon Sep 17 00:00:00 2001 From: visiky <736929286@qq.com> Date: Tue, 14 Mar 2023 17:19:05 +0800 Subject: [PATCH 5/7] =?UTF-8?q?chore:=20=E5=A2=9E=E5=8A=A0=20i18n-pick=20?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- i18n.config.js | 3 + scripts/i18n-pick.js | 84 ++++++++++++++++++++++++++++ src/i18n/locales/en-US.json | 106 ++++++++++++++++++------------------ 3 files changed, 139 insertions(+), 54 deletions(-) create mode 100644 i18n.config.js create mode 100644 scripts/i18n-pick.js diff --git a/i18n.config.js b/i18n.config.js new file mode 100644 index 0000000..1ec445e --- /dev/null +++ b/i18n.config.js @@ -0,0 +1,3 @@ +module.exports = { + exclude: ['**/i18n/**', '**/data/**'], +}; diff --git a/scripts/i18n-pick.js b/scripts/i18n-pick.js new file mode 100644 index 0000000..f86a20a --- /dev/null +++ b/scripts/i18n-pick.js @@ -0,0 +1,84 @@ +const glob = require('glob'); +const fs = require('fs'); +const { transformFileAsync } = require('@babel/core'); +const config = require('../i18n.config.js'); + +const wordSet = new Set(); + +/** unicode cjk 中日韩文 范围 */ +const DOUBLE_BYTE_REGEX = /[\u4E00-\u9FFF]/; +function detectChinese(text, path) { + if (DOUBLE_BYTE_REGEX.test(text)) { + wordSet.add(text.trim().replace(/[\r\n]/g, '')); + } +} + +function scan({ types: t }) { + return { + visitor: { + // 匹配: const text = '中文文案'; new Person('小红') + StringLiteral(path) { + const { node } = path; + detectChinese(node.value, path); + }, + // 匹配: jsx 文本 & 属性 + JSXText(path) { + detectChinese(path.node.value); + }, + }, + }; +} + +const { exclude = [] } = config; + +function run(path) { + glob(`${path}/**/*.{js,jsx,ts,tsx}`, { + ignore: exclude.concat('node_modules/**'), + }) + .then(files => { + Promise.all( + files.map(filename => { + // todo 可以匹配一些规则,直接返回 + + return transformFileAsync(filename, { + plugins: [ + // 装饰器插件 + ['@babel/plugin-proposal-decorators', { legacy: true }], + scan, + ], + presets: [ + [ + '@babel/preset-typescript', + // 强制开启 jsx 解析,否则尖括号可能会被识别为 typescript 的类型断言。如 `var foo = bar;` + { isTSX: true, allExtensions: true }, + ], + ['@babel/preset-env', { targets: 'chrome > 58' }], + ], + }); + }) + ).then(() => { + const langPath = 'src/i18n/locales/en-US.json'; + fs.readFile(langPath, (err, d) => { + if (err) return console.error(err); + + const content = JSON.parse(d.toString()); + const actual = Object.assign( + {}, + Object.fromEntries(wordSet.entries()), + content + ); + + fs.writeFileSync( + langPath, + JSON.stringify(actual, null, 2), + err => {} + ); + }); + }); + }) + .catch(err => { + console.error(err); + }); +} + +run('./src'); diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index d17f8f7..08fea58 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -1,88 +1,86 @@ { - "locale": "en-US", - - "预览": "Preview", - "编辑": "Edit", - + "项目代码": "项目代码", + "下载 PDF": "Download pdf", + "在线版本": "在线版本", + "从模板中获取": "Get from template", "已缓存在本地": "Save to localStorage", - - "导入配置": "Import config", + "复制成功": "复制成功", + "获取简历信息失败": "获取简历信息失败", + "请检查用户名": "请检查用户名", + "是否正确或者简历信息是否在": "是否正确或者简历信息是否在", + "下": "下", + "进入在线编辑": "进入在线编辑", + "移动端只提供查看功能,在线制作请前往 PC 端": "", + "上传配置已应用": "上传配置已应用", + "上传文件有误,请重新上传": "", + "您当前浏览器不支持 FileReader,建议使用谷歌浏览器": "", + "参考:": "参考:", "复制配置": "Copy config", "保存简历": "Save Resume", - "下载 PDF": "Download pdf", - "进行配置": "Enter config", - "选择模板": "Choose template", - "配置简历": "Config resume", - "确认删除": "Confirm delete", - "继续添加": "Continue add", - "提交": "Submit", - "主题色": "Brand color", - "Tag 标签色": "Tag color", - - "工作经验": "Work experience", - "自我介绍": "Introduction", + "导入配置": "Import config", + "头像设置": "Avatar", + "个人信息": "Personal information", "教育背景": "Educational background", + "自我介绍": "Introduction", + "更多信息": "More information", "个人作品": "Personal works", "专业技能": "Professional skills", - "更多信息": "More information", "工作经历": "Work experience", "项目经历": "Project experience", - "项目描述": "Description", - "主要工作": "Main work", - "至今": "to present", - "访问链接": "link", - - "头像设置": "Avatar", - "个人信息": "Personal information", - "个人技能": "Personal skills", - "隐藏头像": "Hide avatar", + "头像形状": "头像形状", + "圆形": "圆形", + "方形": "方形", "姓名": "Fullname", "手机号码": "Mobile", "邮箱": "Email", "知乎": "Zhihu", - "职位": "Position title", + "工作经验": "Work experience", "期望工作地": "work space", + "职位": "Position title", "起始时间": "Start time", "学校": "School", "专业": "Major in", + "起止时间": "起止时间", "项目名称": "Project name", "担任角色": "Project role", - "部门": "Apartment", + "项目描述": "Description", + "主要工作": "Main work", "公司名称": "Compare name", + "部门": "Apartment", "职位或描述": "职位或描述", "作品名称": "Work name", - "作品链接": "Work link", "作品描述": "Work description", + "作品链接": "Work link", "技能项": "Skill", - "技能描述": "Skill description", "掌握程度": "Degree of mastery", - "奖项内容": "Awards description", + "技能描述": "Skill description", "获奖时间": "Awards time", - + "奖项内容": "Awards description", + "编辑": "Edit", + "无用户信息,不允许预览": "无用户信息,不允许预览", + "预览": "Preview", + "中": "中", + "编辑模式下, 切换国际化会导致正在配置的内容丢失,请及时保存": "编辑模式下, 切换国际化会导致正在配置的内容丢失,请及时保存", + "至今": "to present", + "访问链接": "link", + "提交": "Submit", + "确认删除": "Confirm delete", + "继续添加": "Continue add", + "进行配置": "Enter config", + "移动端模式下,只支持预览,不支持配置": "", + "选择模板": "Choose template", + "配置简历": "Config resume", + "主题色": "Brand color", + "Tag 标签色": "Tag color", "默认模板(适用于单页)": "Default template, apply to single page", "简易模板": "Simple template", "简易模板(适用于多页)": "Simple template, apply to multiple page", - - "移动端模式下,只支持预览,不支持配置": "", - "移动端只提供查看功能,在线制作请前往 PC 端": "", - "上传配置已应用": "上传配置已应用", - "上传文件有误,请重新上传": "", - "您当前浏览器不支持 FileReader,建议使用谷歌浏览器": "", + "locale": "en-US", + "个人技能": "Personal skills", "编辑模式下, 切换国际化会导致配置内容丢失,请及时保存": "", - "进入在线编辑": "进入在线编辑", - "获取简历信息失败": "获取简历信息失败", "确定": "Ok", - "无用户信息模式下,不允许预览": "", "Github": "Github", - "从模板中获取": "Get from template", - "参考:": "参考:", - "头像形状": "头像形状", - "圆形": "圆形", - "方形": "方形", - "无用户信息,不允许预览": "无用户信息,不允许预览", - "编辑之后,请及时存储个人信息到个人仓库中。": "编辑之后,请及时存储个人信息到个人仓库中。", - "编辑模式下, 切换国际化会导致正在配置的内容丢失,请及时保存": "编辑模式下, 切换国际化会导致正在配置的内容丢失,请及时保存", - "起止时间": "起止时间" -} + "编辑之后,请及时存储个人信息到个人仓库中。": "编辑之后,请及时存储个人信息到个人仓库中。" +} \ No newline at end of file From a923cb93213bc24abf36aa182125da7541a0c398 Mon Sep 17 00:00:00 2001 From: visiky <736929286@qq.com> Date: Tue, 14 Mar 2023 17:19:41 +0800 Subject: [PATCH 6/7] chore: remove useless scripts --- package.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/package.json b/package.json index fcac5e4..eb6ea61 100644 --- a/package.json +++ b/package.json @@ -57,9 +57,7 @@ "prepare": "husky install", "lint-staged": "lint-staged", "i18n-pick": "node ./scripts/i18n-pick.js", - "extract": "formatjs extract 'src/**/*.ts*' --ignore '**/locales/**' --format i18n.formatter.js --out-file i18n.temp.json --flatten", - "compile": "formatjs compile 'temp.json' --out-file i18n/en.json && rm i18n.temp.json", - "extract-compile": "npm run extract && npm run compile" + "extract": "formatjs extract 'src/**/*.ts*' --ignore '**/locales/**' --format i18n.formatter.js --out-file i18n.temp.json --flatten" }, "lint-staged": { "*.{ts,tsx}": [ From c86e4722b954dea513c5c98383ba371c4290830b Mon Sep 17 00:00:00 2001 From: visiky <736929286@qq.com> Date: Tue, 14 Mar 2023 17:25:31 +0800 Subject: [PATCH 7/7] chore: update pnpm-lock.yaml --- pnpm-lock.yaml | 1341 +++++++++++++++++++++++++++++------------------- 1 file changed, 827 insertions(+), 514 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ed31760..c81018c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2,8 +2,6 @@ lockfileVersion: 5.4 specifiers: '@ant-design/icons': ^4.6.2 -<<<<<<< HEAD -======= '@babel/core': ^7.21.0 '@babel/plugin-proposal-class-properties': ^7.18.6 '@babel/plugin-proposal-decorators': ^7.21.0 @@ -11,7 +9,6 @@ specifiers: '@babel/preset-react': ^7.18.6 '@babel/preset-typescript': ^7.21.0 '@formatjs/cli': ^6.0.4 ->>>>>>> d63fe36 (refactor(i18n): 统一使用 react-intl 替换自己写的国际化) '@types/lodash-es': ^4.17.6 '@types/react': ^17.0.3 antd: ^4.16.6 @@ -26,6 +23,7 @@ specifiers: gatsby-plugin-less: ^5.2.0 gatsby-plugin-pnpm: ^1.2.10 gh-pages: ^3.1.0 + glob: ^9.2.1 husky: ^7.0.4 json-url: ^3.0.0 less: ^4.1.0 @@ -66,8 +64,6 @@ dependencies: react-svg: 14.1.19_sfoxds7t5ydpegc3knd667wn6m devDependencies: -<<<<<<< HEAD -======= '@babel/core': 7.21.0 '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.0 '@babel/plugin-proposal-decorators': 7.21.0_@babel+core@7.21.0 @@ -75,7 +71,6 @@ devDependencies: '@babel/preset-react': 7.18.6_@babel+core@7.21.0 '@babel/preset-typescript': 7.21.0_@babel+core@7.21.0 '@formatjs/cli': 6.0.4 ->>>>>>> d63fe36 (refactor(i18n): 统一使用 react-intl 替换自己写的国际化) '@types/lodash-es': 4.17.6 '@types/react': 17.0.47 babel-plugin-import: 1.13.5 @@ -85,6 +80,7 @@ devDependencies: gatsby-plugin-less: 5.14.0_gatsby@2.32.13 gatsby-plugin-pnpm: 1.2.10_gatsby@2.32.13 gh-pages: 3.2.3 + glob: 9.2.1 husky: 7.0.4 less: 4.1.3 lint-staged: 12.5.0 @@ -101,7 +97,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.14 + '@jridgewell/trace-mapping': 0.3.17 /@ant-design/colors/6.0.0: resolution: {integrity: sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==} @@ -154,22 +150,26 @@ packages: resolution: {integrity: sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==} engines: {node: '>=6.9.0'} + /@babel/compat-data/7.21.0: + resolution: {integrity: sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==} + engines: {node: '>=6.9.0'} + /@babel/core/7.10.5: resolution: {integrity: sha512-O34LQooYVDXPl7QWCdW9p4NR+QlzOr7xShPPJz8GsuCU3/8ua/wqTr7gmnxXv+WBESiGU/G5s16i6tUvHkNb+w==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.7 - '@babel/helper-module-transforms': 7.18.6 - '@babel/helpers': 7.18.6 - '@babel/parser': 7.18.6 - '@babel/template': 7.18.6 - '@babel/traverse': 7.18.6 - '@babel/types': 7.18.7 + '@babel/generator': 7.21.1 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helpers': 7.21.0 + '@babel/parser': 7.21.2 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 convert-source-map: 1.8.0 debug: 4.3.4 gensync: 1.0.0-beta.2 - json5: 2.2.1 + json5: 2.2.3 lodash: 4.17.21 resolve: 1.22.1 semver: 5.7.1 @@ -177,24 +177,24 @@ packages: transitivePeerDependencies: - supports-color - /@babel/core/7.18.6: - resolution: {integrity: sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==} + /@babel/core/7.21.0: + resolution: {integrity: sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.7 - '@babel/helper-compilation-targets': 7.18.6_@babel+core@7.18.6 - '@babel/helper-module-transforms': 7.18.6 - '@babel/helpers': 7.18.6 - '@babel/parser': 7.18.6 - '@babel/template': 7.18.6 - '@babel/traverse': 7.18.6 - '@babel/types': 7.18.7 + '@babel/generator': 7.21.1 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helpers': 7.21.0 + '@babel/parser': 7.21.2 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 convert-source-map: 1.8.0 debug: 4.3.4 gensync: 1.0.0-beta.2 - json5: 2.2.1 + json5: 2.2.3 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -207,6 +207,15 @@ packages: '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 + /@babel/generator/7.21.1: + resolution: {integrity: sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.2 + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 + jsesc: 2.5.2 + /@babel/helper-annotate-as-pure/7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} @@ -218,56 +227,70 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.18.7 + '@babel/types': 7.21.2 - /@babel/helper-compilation-targets/7.18.6_@babel+core@7.18.6: + /@babel/helper-compilation-targets/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/compat-data': 7.18.6 - '@babel/core': 7.18.6 - '@babel/helper-validator-option': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-validator-option': 7.21.0 browserslist: 4.21.1 semver: 6.3.0 - /@babel/helper-create-class-features-plugin/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==} + /@babel/helper-compilation-targets/7.20.7_@babel+core@7.21.0: + resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.0 + '@babel/helper-validator-option': 7.21.0 + browserslist: 4.21.5 + lru-cache: 5.1.1 + semver: 6.3.0 + + /@babel/helper-create-class-features-plugin/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.6 - '@babel/helper-function-name': 7.18.6 - '@babel/helper-member-expression-to-functions': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-member-expression-to-functions': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.18.6 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/helper-split-export-declaration': 7.18.6 transitivePeerDependencies: - supports-color - /@babel/helper-create-regexp-features-plugin/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==} + /@babel/helper-create-regexp-features-plugin/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.1.0 + regexpu-core: 5.3.2 - /@babel/helper-define-polyfill-provider/0.3.1_@babel+core@7.18.6: + /@babel/helper-define-polyfill-provider/0.3.1_@babel+core@7.21.0: resolution: {integrity: sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-compilation-targets': 7.18.6_@babel+core@7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.18.6_@babel+core@7.21.0 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 '@babel/traverse': 7.18.6 debug: 4.3.4 lodash.debounce: 4.0.8 @@ -276,15 +299,34 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.21.0: + resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + /@babel/helper-environment-visitor/7.18.6: resolution: {integrity: sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==} engines: {node: '>=6.9.0'} + /@babel/helper-environment-visitor/7.18.9: + resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} + engines: {node: '>=6.9.0'} + /@babel/helper-explode-assignable-expression/7.18.6: resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.7 + '@babel/types': 7.21.2 /@babel/helper-function-name/7.18.6: resolution: {integrity: sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==} @@ -293,6 +335,13 @@ packages: '@babel/template': 7.18.6 '@babel/types': 7.18.7 + /@babel/helper-function-name/7.21.0: + resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.21.2 + /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} @@ -305,24 +354,30 @@ packages: dependencies: '@babel/types': 7.18.7 + /@babel/helper-member-expression-to-functions/7.21.0: + resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.2 + /@babel/helper-module-imports/7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.18.7 - /@babel/helper-module-transforms/7.18.6: - resolution: {integrity: sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==} + /@babel/helper-module-transforms/7.21.2: + resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.18.6 + '@babel/helper-simple-access': 7.20.2 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.18.6 - '@babel/template': 7.18.6 - '@babel/traverse': 7.18.6 - '@babel/types': 7.18.7 + '@babel/helper-validator-identifier': 7.19.1 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 transitivePeerDependencies: - supports-color @@ -339,17 +394,21 @@ packages: resolution: {integrity: sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==} engines: {node: '>=6.9.0'} - /@babel/helper-remap-async-to-generator/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ==} + /@babel/helper-plugin-utils/7.20.2: + resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.21.0: + resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.6 - '@babel/helper-wrap-function': 7.18.6 - '@babel/types': 7.18.7 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-wrap-function': 7.20.5 + '@babel/types': 7.21.2 transitivePeerDependencies: - supports-color @@ -365,11 +424,24 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-simple-access/7.18.6: - resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} + /@babel/helper-replace-supers/7.20.7: + resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.7 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-member-expression-to-functions': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 + transitivePeerDependencies: + - supports-color + + /@babel/helper-simple-access/7.20.2: + resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.2 /@babel/helper-skip-transparent-expression-wrappers/7.18.6: resolution: {integrity: sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw==} @@ -377,38 +449,52 @@ packages: dependencies: '@babel/types': 7.18.7 + /@babel/helper-skip-transparent-expression-wrappers/7.20.0: + resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.2 + /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.18.7 + /@babel/helper-string-parser/7.19.4: + resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier/7.18.6: resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option/7.18.6: - resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} + /@babel/helper-validator-identifier/7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} - /@babel/helper-wrap-function/7.18.6: - resolution: {integrity: sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw==} + /@babel/helper-validator-option/7.21.0: + resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-wrap-function/7.20.5: + resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-function-name': 7.18.6 - '@babel/template': 7.18.6 - '@babel/traverse': 7.18.6 - '@babel/types': 7.18.7 + '@babel/helper-function-name': 7.21.0 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 transitivePeerDependencies: - supports-color - /@babel/helpers/7.18.6: - resolution: {integrity: sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==} + /@babel/helpers/7.21.0: + resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.18.6 - '@babel/traverse': 7.18.6 - '@babel/types': 7.18.7 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 transitivePeerDependencies: - supports-color @@ -427,124 +513,147 @@ packages: dependencies: '@babel/types': 7.18.7 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.18.6: + /@babel/parser/7.21.2: + resolution: {integrity: sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.21.2 + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.20.7_@babel+core@7.21.0: + resolution: {integrity: sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.6 - '@babel/plugin-proposal-optional-chaining': 7.18.6_@babel+core@7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.21.0 - /@babel/plugin-proposal-async-generator-functions/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==} + /@babel/plugin-proposal-async-generator-functions/7.20.7_@babel+core@7.21.0: + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-environment-visitor': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/helper-remap-async-to-generator': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.0 transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.18.6: + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.18.6: + /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.21.0 transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.18.6: + /@babel/plugin-proposal-decorators/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-MfgX49uRrFUTL/HvWtmx3zmpyzMMr4MTj3d527MLlr/4RTT9G/ytFFP7qet2uM2Ve03b+BkpWUpK+lRXnQ+v9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/plugin-syntax-decorators': 7.21.0_@babel+core@7.21.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.0 - /@babel/plugin-proposal-export-namespace-from/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw==} + /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.21.0: + resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.21.0 - /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.18.6: + /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.21.0 - /@babel/plugin-proposal-logical-assignment-operators/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q==} + /@babel/plugin-proposal-logical-assignment-operators/7.20.7_@babel+core@7.21.0: + resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.21.0 - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.18.6: + /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.18.6 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.18.6 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.0 - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.18.6: + /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.21.0 /@babel/plugin-proposal-object-rest-spread/7.10.4_@babel+core@7.10.5: resolution: {integrity: sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA==} @@ -552,137 +661,158 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.10.5 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.10.5 '@babel/plugin-transform-parameters': 7.18.6_@babel+core@7.10.5 - /@babel/plugin-proposal-object-rest-spread/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw==} + /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.21.0: + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.18.6 - '@babel/core': 7.18.6 - '@babel/helper-compilation-targets': 7.18.6_@babel+core@7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.18.6 - '@babel/plugin-transform-parameters': 7.18.6_@babel+core@7.18.6 + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.21.0 - /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.18.6: + /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.0 - /@babel/plugin-proposal-optional-chaining/7.18.6_@babel+core@7.18.6: + /@babel/plugin-proposal-optional-chaining/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.18.6 '@babel/helper-skip-transparent-expression-wrappers': 7.18.6 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.18.6 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.0 - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.18.6: + /@babel/plugin-proposal-optional-chaining/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.0 + + /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.18.6: + /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.18.6 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.21.0 transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.18.6: + /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-create-regexp-features-plugin': 7.18.6_@babel+core@7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.18.6: + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.21.0: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.18.6: + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.21.0: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.18.6: + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.21.0: resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.18.6: + /@babel/plugin-syntax-decorators/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-tIoPpGBR8UuM4++ccWN3gifhVvQu7ZizuR1fklhRJrd5ewgbkUS+0KVFeWWxELtn18NTLoW32XV7zyOgIAiz+w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.18.6 - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.18.6: + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-import-assertions/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==} + /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.21.0: + resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.18.6: + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-jsx/7.10.4_@babel+core@7.10.5: resolution: {integrity: sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==} @@ -690,40 +820,40 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.10.5 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.18.6: + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.18.6: + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.21.0: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.18.6: + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.18.6: + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.21.0: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.10.5: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -731,106 +861,106 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.10.5 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.18.6: + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.18.6: + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.18.6: + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.18.6: + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.21.0: resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.18.6: + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.21.0: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} + /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.21.0: + resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/helper-remap-async-to-generator': 7.18.6_@babel+core@7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.21.0 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-block-scoping/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ==} + /@babel/plugin-transform-block-scoping/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-classes/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-classes/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.6 '@babel/helper-function-name': 7.18.6 @@ -842,173 +972,190 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-computed-properties/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A==} + /@babel/plugin-transform-classes/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-split-export-declaration': 7.18.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-destructuring/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ==} + /@babel/plugin-transform-computed-properties/7.20.7_@babel+core@7.21.0: + resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/template': 7.20.7 - /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-destructuring/7.20.7_@babel+core@7.21.0: + resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-create-regexp-features-plugin': 7.18.6_@babel+core@7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-duplicate-keys/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg==} + /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.21.0: + resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-for-of/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w==} + /@babel/plugin-transform-for-of/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-function-name/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA==} + /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.21.0: + resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-compilation-targets': 7.18.6_@babel+core@7.18.6 - '@babel/helper-function-name': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-literals/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q==} + /@babel/plugin-transform-literals/7.18.9_@babel+core@7.21.0: + resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-modules-amd/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==} + /@babel/plugin-transform-modules-amd/7.20.11_@babel+core@7.21.0: + resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-module-transforms': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - babel-plugin-dynamic-import-node: 2.3.3 + '@babel/core': 7.21.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-commonjs/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==} + /@babel/plugin-transform-modules-commonjs/7.21.2_@babel+core@7.21.0: + resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-module-transforms': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/helper-simple-access': 7.18.6 - babel-plugin-dynamic-import-node: 2.3.3 + '@babel/core': 7.21.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-simple-access': 7.20.2 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-systemjs/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g==} + /@babel/plugin-transform-modules-systemjs/7.20.11_@babel+core@7.21.0: + resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/helper-validator-identifier': 7.18.6 - babel-plugin-dynamic-import-node: 2.3.3 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-identifier': 7.19.1 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-module-transforms': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-named-capturing-groups-regex/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==} + /@babel/plugin-transform-named-capturing-groups-regex/7.20.5_@babel+core@7.21.0: + resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-create-regexp-features-plugin': 7.18.6_@babel+core@7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/helper-replace-supers': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 transitivePeerDependencies: - supports-color @@ -1019,304 +1166,317 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.10.5 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-parameters/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A==} + /@babel/plugin-transform-parameters/7.20.7_@babel+core@7.21.0: + resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.18.6 + '@babel/core': 7.21.0 + '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.21.0 - /@babel/plugin-transform-react-jsx/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-react-jsx/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-Mz7xMPxoy9kPS/JScj6fJs03TZ/fZ1dJPlMjRAgTaxaS0fUBk8FV/A2rRgfPsVCZqALNwMexD+0Uaf5zlcKPpw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.0 '@babel/types': 7.18.7 - /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 regenerator-transform: 0.15.0 - /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-runtime/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-runtime/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-8uRHk9ZmRSnWqUgyae249EJZ94b0yAGLBIqzZzl+0iEdbno55Pmlt/32JZsHwXD9k/uZj18Aqqk35wBX4CBTXA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.18.6 - babel-plugin-polyfill-corejs2: 0.3.1_@babel+core@7.18.6 - babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.18.6 - babel-plugin-polyfill-regenerator: 0.3.1_@babel+core@7.18.6 + babel-plugin-polyfill-corejs2: 0.3.1_@babel+core@7.21.0 + babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.21.0 + babel-plugin-polyfill-regenerator: 0.3.1_@babel+core@7.21.0 semver: 6.3.0 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-spread/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-spread/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.18.6 '@babel/helper-skip-transparent-expression-wrappers': 7.18.6 - /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-spread/7.20.7_@babel+core@7.21.0: + resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + + /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-template-literals/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw==} + /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.21.0: + resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-typeof-symbol/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g==} + /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.21.0: + resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-typescript/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-ijHNhzIrLj5lQCnI6aaNVRtGVuUZhOXFLRVFs7lLrkXTHip4FKty5oAuQdk4tywG0/WjXmjTfQCWmuzrvFer1w==} + /@babel/plugin-transform-typescript/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.21.0 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-unicode-escapes/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==} + /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.21.0: + resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-create-regexp-features-plugin': 7.18.6_@babel+core@7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/preset-env/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw==} + /@babel/preset-env/7.20.2_@babel+core@7.21.0: + resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.18.6 - '@babel/core': 7.18.6 - '@babel/helper-compilation-targets': 7.18.6_@babel+core@7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-proposal-async-generator-functions': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-proposal-export-namespace-from': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-proposal-logical-assignment-operators': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-proposal-object-rest-spread': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-proposal-optional-chaining': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.18.6 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.18.6 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.18.6 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.18.6 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.18.6 - '@babel/plugin-syntax-import-assertions': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.18.6 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.18.6 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.18.6 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.18.6 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.18.6 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.18.6 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.18.6 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.18.6 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.18.6 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-block-scoping': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-classes': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-computed-properties': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-destructuring': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-duplicate-keys': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-for-of': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-function-name': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-literals': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-modules-amd': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-modules-systemjs': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-named-capturing-groups-regex': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-parameters': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-spread': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-template-literals': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-typeof-symbol': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-unicode-escapes': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.18.6 - '@babel/preset-modules': 0.1.5_@babel+core@7.18.6 - '@babel/types': 7.18.7 - babel-plugin-polyfill-corejs2: 0.3.1_@babel+core@7.18.6 - babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.18.6 - babel-plugin-polyfill-regenerator: 0.3.1_@babel+core@7.18.6 - core-js-compat: 3.23.3 + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.0 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.21.0 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.21.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.21.0 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.21.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.21.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.21.0 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.21.0 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-computed-properties': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-destructuring': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-for-of': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-modules-amd': 7.20.11_@babel+core@7.21.0 + '@babel/plugin-transform-modules-commonjs': 7.21.2_@babel+core@7.21.0 + '@babel/plugin-transform-modules-systemjs': 7.20.11_@babel+core@7.21.0 + '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5_@babel+core@7.21.0 + '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-spread': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.21.0 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.21.0 + '@babel/preset-modules': 0.1.5_@babel+core@7.21.0 + '@babel/types': 7.21.2 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.21.0 + babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.21.0 + babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.21.0 + core-js-compat: 3.29.1 semver: 6.3.0 transitivePeerDependencies: - supports-color - /@babel/preset-modules/0.1.5_@babel+core@7.18.6: + /@babel/preset-modules/0.1.5_@babel+core@7.21.0: resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.18.6 - '@babel/types': 7.18.7 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.21.0 + '@babel/types': 7.21.2 esutils: 2.0.3 - /@babel/preset-react/7.18.6_@babel+core@7.18.6: + /@babel/preset-react/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.21.0 - /@babel/preset-typescript/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} + /@babel/preset-typescript/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-typescript': 7.18.6_@babel+core@7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-transform-typescript': 7.21.0_@babel+core@7.21.0 transitivePeerDependencies: - supports-color + /@babel/regjsgen/0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + /@babel/runtime-corejs2/7.21.0: resolution: {integrity: sha512-hVFDLYkuthnvQwWoOniPSq+RWyQTiimVdMXQJujoiSX8maFh/62+qRImGkRpeRflsVXXSMFS4HgNe3X9fuw5ww==} engines: {node: '>=6.9.0'} @@ -1350,6 +1510,14 @@ packages: '@babel/parser': 7.18.6 '@babel/types': 7.18.7 + /@babel/template/7.20.7: + resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 + /@babel/traverse/7.18.6: resolution: {integrity: sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==} engines: {node: '>=6.9.0'} @@ -1367,6 +1535,23 @@ packages: transitivePeerDependencies: - supports-color + /@babel/traverse/7.21.2: + resolution: {integrity: sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.21.1 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + /@babel/types/7.18.7: resolution: {integrity: sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==} engines: {node: '>=6.9.0'} @@ -1374,6 +1559,14 @@ packages: '@babel/helper-validator-identifier': 7.18.6 to-fast-properties: 2.0.0 + /@babel/types/7.21.2: + resolution: {integrity: sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + /@ctrl/tinycolor/3.4.1: resolution: {integrity: sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==} engines: {node: '>=10'} @@ -1696,6 +1889,10 @@ packages: resolution: {integrity: sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==} engines: {node: '>=6.0.0'} + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + /@jridgewell/set-array/1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} @@ -1709,6 +1906,12 @@ packages: '@jridgewell/resolve-uri': 3.0.8 '@jridgewell/sourcemap-codec': 1.4.14 + /@jridgewell/trace-mapping/0.3.17: + resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + /@mdx-js/util/2.0.0-next.8: resolution: {integrity: sha512-T0BcXmNzEunFkuxrO8BFw44htvTPuAoKbLvTG41otyZBDV1Rs+JMddcUuaP5vXpTWtgD3grhcrPEwyx88RUumQ==} @@ -2735,12 +2938,12 @@ packages: esutils: 2.0.3 js-tokens: 3.0.2 - /babel-core/7.0.0-bridge.0_@babel+core@7.18.6: + /babel-core/7.0.0-bridge.0_@babel+core@7.21.0: resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 /babel-eslint/10.1.0_eslint@6.8.0: resolution: {integrity: sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==} @@ -2759,14 +2962,14 @@ packages: transitivePeerDependencies: - supports-color - /babel-loader/8.2.5_xcbjw3zjektbxpb7yraegegdpi: + /babel-loader/8.2.5_idmflsbzmivcz6fnnmcaipezqe: resolution: {integrity: sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==} engines: {node: '>= 8.9'} peerDependencies: '@babel/core': ^7.0.0 webpack: '>=2' dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 find-cache-dir: 3.3.2 loader-utils: 2.0.2 make-dir: 3.1.0 @@ -2803,47 +3006,80 @@ packages: cosmiconfig: 6.0.0 resolve: 1.22.1 - /babel-plugin-polyfill-corejs2/0.3.1_@babel+core@7.18.6: + /babel-plugin-polyfill-corejs2/0.3.1_@babel+core@7.21.0: resolution: {integrity: sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.18.6 - '@babel/core': 7.18.6 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.21.0 semver: 6.3.0 transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-corejs3/0.5.2_@babel+core@7.18.6: + /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.21.0: + resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + + /babel-plugin-polyfill-corejs3/0.5.2_@babel+core@7.21.0: resolution: {integrity: sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.21.0 core-js-compat: 3.23.3 transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-regenerator/0.3.1_@babel+core@7.18.6: + /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.21.0: + resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.0 + core-js-compat: 3.29.1 + transitivePeerDependencies: + - supports-color + + /babel-plugin-polyfill-regenerator/0.3.1_@babel+core@7.21.0: resolution: {integrity: sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.18.6 + '@babel/core': 7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.21.0 + transitivePeerDependencies: + - supports-color + + /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.21.0: + resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.0 transitivePeerDependencies: - supports-color - /babel-plugin-remove-graphql-queries/2.16.1_tbhl377dg44a56d7b4fvf7o4ty: + /babel-plugin-remove-graphql-queries/2.16.1_eaq54klar4rnrtz67x5sczaeou: resolution: {integrity: sha512-PkHJuRodMp4p617a/ZVhV8elBhRoFpOTpdu2DaApXJFIsDJWhjZ8d4BGbbFCT/yKJrhRDTdqg1r5AhWEaEUKkw==} engines: {node: '>=10.13.0'} peerDependencies: '@babel/core': ^7.0.0 gatsby: ^2.0.0 dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 '@babel/runtime': 7.18.6 '@babel/types': 7.18.7 gatsby: 2.32.13_fjtp7haypwd3jrz2anmo67qyu4 @@ -2852,23 +3088,23 @@ packages: /babel-plugin-transform-react-remove-prop-types/0.4.24: resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} - /babel-preset-gatsby/0.12.3_3kyp5depl2v5iwcjqqsek4v4se: + /babel-preset-gatsby/0.12.3_dssxs2nbzvb4ozfpdzwwd7cgw4: resolution: {integrity: sha512-s/5Nkeeihu/oNUcLQakm+lwLCiNWcQamQliB+NqEVB/IgRVn1FQPxqmxNbEb0i2HrEBPKgOrXyt82IfzirCmgg==} engines: {node: '>=10.13.0'} peerDependencies: '@babel/core': ^7.11.6 core-js: ^3.0.0 dependencies: - '@babel/core': 7.18.6 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-proposal-optional-chaining': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.18.6 - '@babel/plugin-transform-classes': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-runtime': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-spread': 7.18.6_@babel+core@7.18.6 - '@babel/preset-env': 7.18.6_@babel+core@7.18.6 - '@babel/preset-react': 7.18.6_@babel+core@7.18.6 + '@babel/core': 7.21.0 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-optional-chaining': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-transform-classes': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-runtime': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-spread': 7.18.6_@babel+core@7.21.0 + '@babel/preset-env': 7.20.2_@babel+core@7.21.0 + '@babel/preset-react': 7.18.6_@babel+core@7.21.0 '@babel/runtime': 7.18.6 babel-plugin-dynamic-import-node: 2.3.3 babel-plugin-macros: 2.8.0 @@ -3053,6 +3289,12 @@ packages: balanced-match: 1.0.2 concat-map: 0.0.1 + /brace-expansion/2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + /braces/2.3.2: resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} engines: {node: '>=0.10.0'} @@ -3155,6 +3397,16 @@ packages: node-releases: 2.0.5 update-browserslist-db: 1.0.4_browserslist@4.21.1 + /browserslist/4.21.5: + resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001465 + electron-to-chromium: 1.4.328 + node-releases: 2.0.10 + update-browserslist-db: 1.0.10_browserslist@4.21.5 + /buffer-from/1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -3343,6 +3595,9 @@ packages: /caniuse-lite/1.0.30001363: resolution: {integrity: sha512-HpQhpzTGGPVMnCjIomjt+jvyUu8vNFo3TaDiZ/RcoTrlOq/5+tC8zHdsbgFB6MxmaY+jCpsH09aD80Bb4Ow3Sg==} + /caniuse-lite/1.0.30001465: + resolution: {integrity: sha512-HvjgL3MYAJjceTDCcjRnQGjwUz/5qec9n7JPOzUursUoOTIsYCSDOb1l7RsnZE8mjbxG78zVRCKfrBXyvChBag==} + /ccount/1.1.0: resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} @@ -3830,6 +4085,11 @@ packages: browserslist: 4.21.1 semver: 7.0.0 + /core-js-compat/3.29.1: + resolution: {integrity: sha512-QmchCua884D8wWskMX8tW5ydINzd8oSJVx38lx/pVkFGqztxt73GYre3pm/hyYq8bPf+MW5In4I/uRShFDsbrA==} + dependencies: + browserslist: 4.21.5 + /core-js-pure/3.23.3: resolution: {integrity: sha512-XpoouuqIj4P+GWtdyV8ZO3/u4KftkeDVMfvp+308eGMhCrA3lVDSmAxO0c6GGOcmgVlaKDrgWVMo49h2ab/TDA==} requiresBuild: true @@ -4594,6 +4854,9 @@ packages: /electron-to-chromium/1.4.178: resolution: {integrity: sha512-aWuhJXkwIdoQzGR8p2QvR3N0OzdUKZSP8+P/hzuMzNQIPZoEa8HiCGM75bQBHjyz+eKT5PB9dVCzkK/tyQ4B5Q==} + /electron-to-chromium/1.4.328: + resolution: {integrity: sha512-DE9tTy2PNmy1v55AZAO542ui+MLC2cvINMK4P2LXGsJdput/ThVG9t+QGecPuAZZSgC8XoI+Jh9M1OG9IoNSCw==} + /elliptic/6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: @@ -5949,13 +6212,13 @@ packages: resolution: {integrity: sha512-p32qJVDi5Xw1Oo5vLMUXdRBxSDlMrfxTGb7etMAsVfyLRlRhMLb2YsuXJIvN1IfybQ6Z3EbhlH293cpxn5jozg==} engines: {node: '>=10.13.0'} dependencies: - '@babel/core': 7.18.6 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-proposal-optional-chaining': 7.18.6_@babel+core@7.18.6 - '@babel/preset-typescript': 7.18.6_@babel+core@7.18.6 + '@babel/core': 7.21.0 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-optional-chaining': 7.18.6_@babel+core@7.21.0 + '@babel/preset-typescript': 7.21.0_@babel+core@7.21.0 '@babel/runtime': 7.18.6 - babel-plugin-remove-graphql-queries: 2.16.1_tbhl377dg44a56d7b4fvf7o4ty + babel-plugin-remove-graphql-queries: 2.16.1_eaq54klar4rnrtz67x5sczaeou transitivePeerDependencies: - gatsby - supports-color @@ -5991,11 +6254,11 @@ packages: resolution: {integrity: sha512-ToYeGCica4390QFWsW6+3DM6hhkpKifUEFoKDUdsQGw4rmD8aYndj5oASKIsvPAU0GUbxe8IDsDnP3V5iMtyEQ==} deprecated: gatsby-recipes has been removed from gatsby/gatsby-cli >=4.5.0. Update to gatsby@latest/gatsby-cli@latest to use versions without gatsby-recipes. This package will no longer receive updates. dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 '@babel/generator': 7.18.7 '@babel/helper-plugin-utils': 7.18.6 - '@babel/plugin-proposal-optional-chaining': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-optional-chaining': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.21.0 '@babel/runtime': 7.18.6 '@babel/standalone': 7.19.3 '@babel/template': 7.18.6 @@ -6088,7 +6351,7 @@ packages: react-dom: ^16.4.2 || ^17.0.0 dependencies: '@babel/code-frame': 7.18.6 - '@babel/core': 7.18.6 + '@babel/core': 7.21.0 '@babel/parser': 7.18.6 '@babel/runtime': 7.18.6 '@babel/traverse': 7.18.6 @@ -6107,14 +6370,14 @@ packages: ansi-html: 0.0.7 autoprefixer: 9.8.8 axios: 0.21.4_debug@3.2.7 - babel-core: 7.0.0-bridge.0_@babel+core@7.18.6 + babel-core: 7.0.0-bridge.0_@babel+core@7.21.0 babel-eslint: 10.1.0_eslint@6.8.0 - babel-loader: 8.2.5_xcbjw3zjektbxpb7yraegegdpi + babel-loader: 8.2.5_idmflsbzmivcz6fnnmcaipezqe babel-plugin-add-module-exports: 1.0.4 babel-plugin-dynamic-import-node: 2.3.3 babel-plugin-lodash: 3.3.4 - babel-plugin-remove-graphql-queries: 2.16.1_tbhl377dg44a56d7b4fvf7o4ty - babel-preset-gatsby: 0.12.3_3kyp5depl2v5iwcjqqsek4v4se + babel-plugin-remove-graphql-queries: 2.16.1_eaq54klar4rnrtz67x5sczaeou + babel-preset-gatsby: 0.12.3_dssxs2nbzvb4ozfpdzwwd7cgw4 better-opn: 2.1.1 better-queue: 3.8.12 bluebird: 3.7.2 @@ -6357,6 +6620,16 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 + /glob/9.2.1: + resolution: {integrity: sha512-Pxxgq3W0HyA3XUvSXcFhRSs+43Jsx0ddxcFrbjxNGkL2Ak5BAUBxLqI5G6ADDeCHLfzzXFhe0b1yYcctGmytMA==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + fs.realpath: 1.0.0 + minimatch: 7.4.2 + minipass: 4.2.5 + path-scurry: 1.6.1 + dev: true + /global-dirs/3.0.0: resolution: {integrity: sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==} engines: {node: '>=10'} @@ -7616,7 +7889,7 @@ packages: dependencies: '@babel/runtime-corejs2': 7.21.0 bluebird: 3.7.2 - lz-string: 1.4.4 + lz-string: 1.5.0 lzma: 2.3.2 msgpack5: 4.5.1 node-lzw: 0.3.1 @@ -7642,6 +7915,11 @@ packages: engines: {node: '>=6'} hasBin: true + /json5/2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + /jsonfile/4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: @@ -8004,13 +8282,18 @@ packages: dependencies: yallist: 4.0.0 + /lru-cache/7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + dev: true + /lru-queue/0.1.0: resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} dependencies: es5-ext: 0.10.61 - /lz-string/1.4.4: - resolution: {integrity: sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==} + /lz-string/1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true dev: false @@ -8574,6 +8857,13 @@ packages: dependencies: brace-expansion: 1.1.11 + /minimatch/7.4.2: + resolution: {integrity: sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist/1.2.6: resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} @@ -8601,6 +8891,11 @@ packages: dependencies: yallist: 4.0.0 + /minipass/4.2.5: + resolution: {integrity: sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==} + engines: {node: '>=8'} + dev: true + /mississippi/3.0.0: resolution: {integrity: sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==} engines: {node: '>=4.0.0'} @@ -8836,6 +9131,9 @@ packages: resolution: {integrity: sha512-jY5dPJzw6NHd/KPSfPKJ+IHoFS81/tJ43r34ZeNMXGzCOM8jwQDCD12HYayKIB6MuznrnqIYy2e891NA2g0ibA==} engines: {node: '>=0.10.0'} + /node-releases/2.0.10: + resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} + /node-releases/2.0.5: resolution: {integrity: sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==} @@ -9378,6 +9676,14 @@ packages: /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + /path-scurry/1.6.1: + resolution: {integrity: sha512-OW+5s+7cw6253Q4E+8qQ/u1fVvcJQCJo/VFD8pje+dbJCF1n5ZRMV2AEHbGp+5Q7jxQIYJxkHopnj6nzdGeZLA==} + engines: {node: '>=14'} + dependencies: + lru-cache: 7.18.3 + minipass: 4.2.5 + dev: true + /path-to-regexp/0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} @@ -10795,8 +11101,8 @@ packages: dependencies: '@babel/runtime': 7.18.6 - /regenerate-unicode-properties/10.0.1: - resolution: {integrity: sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==} + /regenerate-unicode-properties/10.1.0: + resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} engines: {node: '>=4'} dependencies: regenerate: 1.4.2 @@ -10839,16 +11145,16 @@ packages: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} - /regexpu-core/5.1.0: - resolution: {integrity: sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==} + /regexpu-core/5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} engines: {node: '>=4'} dependencies: + '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 - regenerate-unicode-properties: 10.0.1 - regjsgen: 0.6.0 - regjsparser: 0.8.4 + regenerate-unicode-properties: 10.1.0 + regjsparser: 0.9.1 unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 /registry-auth-token/4.2.2: resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} @@ -10862,11 +11168,8 @@ packages: dependencies: rc: 1.2.8 - /regjsgen/0.6.0: - resolution: {integrity: sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==} - - /regjsparser/0.8.4: - resolution: {integrity: sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==} + /regjsparser/0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true dependencies: jsesc: 0.5.0 @@ -12333,8 +12636,8 @@ packages: unicode-canonical-property-names-ecmascript: 2.0.0 unicode-property-aliases-ecmascript: 2.0.0 - /unicode-match-property-value-ecmascript/2.0.0: - resolution: {integrity: sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==} + /unicode-match-property-value-ecmascript/2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} engines: {node: '>=4'} /unicode-property-aliases-ecmascript/2.0.0: @@ -12494,6 +12797,16 @@ packages: resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} engines: {node: '>=4'} + /update-browserslist-db/1.0.10_browserslist@4.21.5: + resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.5 + escalade: 3.1.1 + picocolors: 1.0.0 + /update-browserslist-db/1.0.4_browserslist@4.21.1: resolution: {integrity: sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==} hasBin: true