From f2c2a5c2445504d51c05eb61b56bd88917dbf9d0 Mon Sep 17 00:00:00 2001 From: Zhou xiao Date: Mon, 4 Nov 2024 16:05:31 +0800 Subject: [PATCH] docs: optimize doc format (#690) * docs: delete old doc * docs: fix doc format --- website-new/docs/api/registerApp.mdx | 2 +- website-new/docs/guide/demo/angular.mdx | 6 +- website-new/docs/guide/demo/react.mdx | 1 + website-new/docs/guide/demo/vite.mdx | 2 +- .../src/components/config/_sandbox.mdx | 2 +- .../src/components/config/_webpackConfig.mdx | 5 +- website/.editorconfig | 23 - website/.gitignore | 22 - website/.npmrc | 1 - website/CHANGELOG.md | 16 - website/CNAME | 1 - website/README.md | 43 - website/babel.config.js | 3 - website/docs/api/__meta__.md | 5 - website/docs/api/api.md | 28 - website/docs/api/channel.md | 44 - website/docs/api/clearEscapeEffect.md | 20 - website/docs/api/getGlobal.md | 31 - website/docs/api/loadApp.md | 298 - website/docs/api/loader.md | 82 - website/docs/api/preloadApp.md | 48 - website/docs/api/registerApp.md | 182 - website/docs/api/router.md | 268 - website/docs/api/run.md | 212 - website/docs/api/setExternal.md | 75 - website/docs/api/setGlobal.md | 26 - website/docs/api/setOptioins.md | 32 - website/docs/blog/__meta__.md | 5 - website/docs/blog/architecture.md | 443 - website/docs/blog/hmr.md | 299 - website/docs/blog/sourcemap.md | 134 - website/docs/guide/API/loadApp.md | 253 - website/docs/guide/advance/__meta__.md | 5 - website/docs/guide/advance/nested.md | 53 - website/docs/guide/advance/plugins.md | 310 - website/docs/guide/concept/__meta__.md | 5 - website/docs/guide/concept/bridge.md | 431 - website/docs/guide/concept/buildConfig.md | 77 - website/docs/guide/concept/cache.md | 90 - website/docs/guide/concept/lifecycle.md | 57 - website/docs/guide/concept/router.md | 35 - website/docs/guide/concept/sandbox.md | 507 - website/docs/guide/demo/__meta__.md | 5 - website/docs/guide/demo/angular.md | 182 - website/docs/guide/demo/demo.md | 20 - website/docs/guide/demo/react.md | 197 - website/docs/guide/demo/vite.md | 125 - website/docs/guide/demo/vue.md | 307 - website/docs/guide/quickStart/__meta__.md | 5 - website/docs/guide/quickStart/env.md | 40 - website/docs/guide/quickStart/index.md | 62 - website/docs/guide/quickStart/start.mdx | 204 - website/docs/issues/childApp.md | 527 - website/docs/issues/webComponent.md | 241 - website/docs/plugins/__meta__.md | 5 - website/docs/plugins/es-module.md | 7 - website/docs/plugins/plugins.md | 7 - website/docusaurus.config.js | 154 - .../current.json | 22 - .../current/api/attributes/loadApp.md | 159 - .../current/api/attributes/props.md | 57 - .../current/api/attributes/router.md | 106 - .../current/api/index.md | 17 - .../current/api/instance.md | 220 - .../current/community/discuss.md | 11 - .../current/guide/advance/__meta__.md | 5 - .../current/guide/advance/loadApp.md | 159 - .../current/guide/develop/__meta__.md | 5 - .../current/guide/develop/fromZero.md | 151 - .../current/guide/start/__meta__.md | 5 - .../current/guide/start/index.md | 52 - .../current/issues/childApp.md | 68 - .../current/issues/multipleApp.md | 20 - .../current/issues/oldApp.md | 66 - .../current/issues/router.md | 45 - .../current/issues/style.md | 120 - website/i18n/zh/code.json | 169 - .../current.json | 22 - .../zh/docusaurus-theme-classic/footer.json | 6 - .../zh/docusaurus-theme-classic/navbar.json | 18 - website/package.json | 60 - website/plugin/slardar/index.js | 10 - website/plugin/slardar/initSlardar.js | 66 - website/pnpm-lock.yaml | 12919 ---------------- website/pnpm-workspace.yaml | 3 - website/sidebars.js | 99 - website/src/README.md | 25 - website/src/components/Highlight/index.js | 16 - .../src/components/TeamProfileCards/index.jsx | 76 - website/src/components/config/_basename.mdx | 8 - website/src/components/config/_domGetter.mdx | 16 - .../components/config/_insulationVariable.mdx | 10 - .../components/config/_protectVariable.mdx | 6 - website/src/components/config/_sandbox.mdx | 74 - website/src/components/config/_viteConfig.mdx | 19 - .../src/components/config/_webpackConfig.mdx | 45 - .../src/components/lifeCycle/_afterEval.mdx | 21 - .../src/components/lifeCycle/_afterLoad.mdx | 19 - .../src/components/lifeCycle/_afterMount.mdx | 22 - .../components/lifeCycle/_afterUnmount.mdx | 8 - .../src/components/lifeCycle/_beforeEval.mdx | 23 - .../src/components/lifeCycle/_beforeLoad.mdx | 20 - .../src/components/lifeCycle/_beforeMount.mdx | 23 - .../components/lifeCycle/_beforeUnmount.mdx | 11 - .../components/lifeCycle/_errorLoadApp.mdx | 21 - .../components/lifeCycle/_errorMountApp.mdx | 21 - .../components/lifeCycle/_errorUnmountApp.mdx | 20 - .../lifeCycle/_onNotMatchRouter.mdx | 19 - website/src/components/sumarryImg/index.jsx | 12 - website/src/css/custom.css | 160 - website/src/pages/index.jsx | 279 - website/src/pages/index.module.css | 326 - website/src/pages/resource.js | 38 - website/src/pages/resource.module.css | 79 - website/src/pages/showcase.js | 39 - website/src/pages/showcase.module.css | 84 - website/static/.nojekyll | 0 .../static/img/undraw_docusaurus_mountain.svg | 170 - .../static/img/undraw_docusaurus_react.svg | 169 - website/static/img/undraw_docusaurus_tree.svg | 1 - 120 files changed, 11 insertions(+), 22799 deletions(-) delete mode 100644 website/.editorconfig delete mode 100644 website/.gitignore delete mode 100644 website/.npmrc delete mode 100644 website/CHANGELOG.md delete mode 100644 website/CNAME delete mode 100644 website/README.md delete mode 100644 website/babel.config.js delete mode 100644 website/docs/api/__meta__.md delete mode 100644 website/docs/api/api.md delete mode 100644 website/docs/api/channel.md delete mode 100644 website/docs/api/clearEscapeEffect.md delete mode 100644 website/docs/api/getGlobal.md delete mode 100644 website/docs/api/loadApp.md delete mode 100644 website/docs/api/loader.md delete mode 100644 website/docs/api/preloadApp.md delete mode 100644 website/docs/api/registerApp.md delete mode 100644 website/docs/api/router.md delete mode 100644 website/docs/api/run.md delete mode 100644 website/docs/api/setExternal.md delete mode 100644 website/docs/api/setGlobal.md delete mode 100644 website/docs/api/setOptioins.md delete mode 100644 website/docs/blog/__meta__.md delete mode 100644 website/docs/blog/architecture.md delete mode 100644 website/docs/blog/hmr.md delete mode 100644 website/docs/blog/sourcemap.md delete mode 100644 website/docs/guide/API/loadApp.md delete mode 100644 website/docs/guide/advance/__meta__.md delete mode 100644 website/docs/guide/advance/nested.md delete mode 100644 website/docs/guide/advance/plugins.md delete mode 100644 website/docs/guide/concept/__meta__.md delete mode 100644 website/docs/guide/concept/bridge.md delete mode 100644 website/docs/guide/concept/buildConfig.md delete mode 100644 website/docs/guide/concept/cache.md delete mode 100644 website/docs/guide/concept/lifecycle.md delete mode 100644 website/docs/guide/concept/router.md delete mode 100644 website/docs/guide/concept/sandbox.md delete mode 100644 website/docs/guide/demo/__meta__.md delete mode 100644 website/docs/guide/demo/angular.md delete mode 100644 website/docs/guide/demo/demo.md delete mode 100644 website/docs/guide/demo/react.md delete mode 100644 website/docs/guide/demo/vite.md delete mode 100644 website/docs/guide/demo/vue.md delete mode 100644 website/docs/guide/quickStart/__meta__.md delete mode 100644 website/docs/guide/quickStart/env.md delete mode 100644 website/docs/guide/quickStart/index.md delete mode 100644 website/docs/guide/quickStart/start.mdx delete mode 100644 website/docs/issues/childApp.md delete mode 100644 website/docs/issues/webComponent.md delete mode 100644 website/docs/plugins/__meta__.md delete mode 100644 website/docs/plugins/es-module.md delete mode 100644 website/docs/plugins/plugins.md delete mode 100644 website/docusaurus.config.js delete mode 100644 website/i18n/en/docusaurus-plugin-content-docs/current.json delete mode 100644 website/i18n/en/docusaurus-plugin-content-docs/current/api/attributes/loadApp.md delete mode 100644 website/i18n/en/docusaurus-plugin-content-docs/current/api/attributes/props.md delete mode 100644 website/i18n/en/docusaurus-plugin-content-docs/current/api/attributes/router.md delete mode 100644 website/i18n/en/docusaurus-plugin-content-docs/current/api/index.md delete mode 100644 website/i18n/en/docusaurus-plugin-content-docs/current/api/instance.md delete mode 100644 website/i18n/en/docusaurus-plugin-content-docs/current/community/discuss.md delete mode 100644 website/i18n/en/docusaurus-plugin-content-docs/current/guide/advance/__meta__.md delete mode 100644 website/i18n/en/docusaurus-plugin-content-docs/current/guide/advance/loadApp.md delete mode 100644 website/i18n/en/docusaurus-plugin-content-docs/current/guide/develop/__meta__.md delete mode 100644 website/i18n/en/docusaurus-plugin-content-docs/current/guide/develop/fromZero.md delete mode 100644 website/i18n/en/docusaurus-plugin-content-docs/current/guide/start/__meta__.md delete mode 100644 website/i18n/en/docusaurus-plugin-content-docs/current/guide/start/index.md delete mode 100644 website/i18n/en/docusaurus-plugin-content-docs/current/issues/childApp.md delete mode 100644 website/i18n/en/docusaurus-plugin-content-docs/current/issues/multipleApp.md delete mode 100644 website/i18n/en/docusaurus-plugin-content-docs/current/issues/oldApp.md delete mode 100644 website/i18n/en/docusaurus-plugin-content-docs/current/issues/router.md delete mode 100644 website/i18n/en/docusaurus-plugin-content-docs/current/issues/style.md delete mode 100644 website/i18n/zh/code.json delete mode 100644 website/i18n/zh/docusaurus-plugin-content-docs/current.json delete mode 100644 website/i18n/zh/docusaurus-theme-classic/footer.json delete mode 100644 website/i18n/zh/docusaurus-theme-classic/navbar.json delete mode 100644 website/package.json delete mode 100644 website/plugin/slardar/index.js delete mode 100644 website/plugin/slardar/initSlardar.js delete mode 100644 website/pnpm-lock.yaml delete mode 100644 website/pnpm-workspace.yaml delete mode 100644 website/sidebars.js delete mode 100644 website/src/README.md delete mode 100644 website/src/components/Highlight/index.js delete mode 100644 website/src/components/TeamProfileCards/index.jsx delete mode 100644 website/src/components/config/_basename.mdx delete mode 100644 website/src/components/config/_domGetter.mdx delete mode 100644 website/src/components/config/_insulationVariable.mdx delete mode 100644 website/src/components/config/_protectVariable.mdx delete mode 100644 website/src/components/config/_sandbox.mdx delete mode 100644 website/src/components/config/_viteConfig.mdx delete mode 100644 website/src/components/config/_webpackConfig.mdx delete mode 100644 website/src/components/lifeCycle/_afterEval.mdx delete mode 100644 website/src/components/lifeCycle/_afterLoad.mdx delete mode 100644 website/src/components/lifeCycle/_afterMount.mdx delete mode 100644 website/src/components/lifeCycle/_afterUnmount.mdx delete mode 100644 website/src/components/lifeCycle/_beforeEval.mdx delete mode 100644 website/src/components/lifeCycle/_beforeLoad.mdx delete mode 100644 website/src/components/lifeCycle/_beforeMount.mdx delete mode 100644 website/src/components/lifeCycle/_beforeUnmount.mdx delete mode 100644 website/src/components/lifeCycle/_errorLoadApp.mdx delete mode 100644 website/src/components/lifeCycle/_errorMountApp.mdx delete mode 100644 website/src/components/lifeCycle/_errorUnmountApp.mdx delete mode 100644 website/src/components/lifeCycle/_onNotMatchRouter.mdx delete mode 100644 website/src/components/sumarryImg/index.jsx delete mode 100644 website/src/css/custom.css delete mode 100644 website/src/pages/index.jsx delete mode 100644 website/src/pages/index.module.css delete mode 100644 website/src/pages/resource.js delete mode 100644 website/src/pages/resource.module.css delete mode 100644 website/src/pages/showcase.js delete mode 100644 website/src/pages/showcase.module.css delete mode 100644 website/static/.nojekyll delete mode 100644 website/static/img/undraw_docusaurus_mountain.svg delete mode 100644 website/static/img/undraw_docusaurus_react.svg delete mode 100644 website/static/img/undraw_docusaurus_tree.svg diff --git a/website-new/docs/api/registerApp.mdx b/website-new/docs/api/registerApp.mdx index 6e2a753a5..304d334ac 100644 --- a/website-new/docs/api/registerApp.mdx +++ b/website-new/docs/api/registerApp.mdx @@ -159,7 +159,7 @@ Garfish 处理 app 参数的原则是: > activeWhen 为基于路由模式加载子应用时的激活路径(或条件),目的是为了寻找当前应该激活的子应用。当用户使用 [loadApp](/api#loadApp) 手动挂载应用时,此时可省略 `activeWhen` 参数。 -:::caution +:::danger 1. 子应用如果本身具备路由,在微前端的场景下,必须把 basename 作为子应用的基础路径,没有基础路由,子应用的路由可能与主应用和其他应用发生冲突; 2. 我们强留建议不要使用根路径作为子应用的激活条件,[为什么?](/issues/#根路由作为子应用的激活条件) diff --git a/website-new/docs/guide/demo/angular.mdx b/website-new/docs/guide/demo/angular.mdx index 7874d3395..e0641d9eb 100644 --- a/website-new/docs/guide/demo/angular.mdx +++ b/website-new/docs/guide/demo/angular.mdx @@ -35,7 +35,7 @@ npm install @angular-builders/custom-webpack:dev-server -D // angular.json "builder": "@angular-builders/custom-webpack:dev-server", ``` -:::caution +:::danger 1. 请注意,在 [packageName] > architect > build > options 的配置中,index 属性我们设置为空,这是因为在 angular 13 中编译产物默认会带上 esm 标识,即 type=module, 即使打包产物是 umd 格式,这会导致 garfish 加载子应用失败; 2. index 置空后,编译产物会去除 es module 标识,子应用加载正常; @@ -44,7 +44,8 @@ npm install @angular-builders/custom-webpack:dev-server -D ### 3. 添加 webpack 配置文件 -:::caution 【重要】注意: +:::tip danger +【重要】注意: 1. libraryTarget 需要配置成 umd 规范; 2. globalObject 需要设置为 'window',以避免由于不规范的代码格式导致的逃逸沙箱; 3. 如果你的 webpack 为 v4 版本,需要设置 jsonpFunction 并保证该值唯一(否则可能出现 webpack chunk 互相影响的可能)。若为 webpack5 将会直接使用 package.json name 作为唯一值,请确保应用间的 name 各不相同; @@ -129,6 +130,7 @@ module.exports = { 3. 目前主应用仅支持 history 模式的子应用路由,[why](../../issues/childApp.md#为什么主应用仅支持-history-模式) ::: + ```ts // app.module.ts import { NgModule } from '@angular/core'; diff --git a/website-new/docs/guide/demo/react.mdx b/website-new/docs/guide/demo/react.mdx index 01cbfff2c..eb7eac392 100644 --- a/website-new/docs/guide/demo/react.mdx +++ b/website-new/docs/guide/demo/react.mdx @@ -125,6 +125,7 @@ export const provider = () => { 1. 为什么要设置 basename?请参考 [issue](../../issues/childApp.md#子应用拿到-basename-的作用) 2. 我们强烈建议使用从主应用传递过来的 basename 作为子应用的 basename,而非主、子应用约定式,避免 basename 后期变更未同步带来的问题。 3. 目前主应用仅支持 history 模式的子应用路由,[why](../../issues/childApp.md#为什么主应用仅支持-history-模式) + ::: ```tsx diff --git a/website-new/docs/guide/demo/vite.mdx b/website-new/docs/guide/demo/vite.mdx index c80ec765c..c329b3fe4 100644 --- a/website-new/docs/guide/demo/vite.mdx +++ b/website-new/docs/guide/demo/vite.mdx @@ -30,7 +30,7 @@ Garfish.run({ }) ``` -:::caution +:::danger 注意,不要设置 Garfish.run() 顶层的 sandbox 属性,这会导致所有子应用的沙箱关闭。 ::: diff --git a/website-new/src/components/config/_sandbox.mdx b/website-new/src/components/config/_sandbox.mdx index 4dc4a99a6..3e1bdf54e 100644 --- a/website-new/src/components/config/_sandbox.mdx +++ b/website-new/src/components/config/_sandbox.mdx @@ -55,7 +55,7 @@ Garfish.run({ }); ``` -:::caution +:::danger 请注意: 如果你在沙箱内自定义的行为将会产生副作用,请确保在 recover 函数中清除你的副作用,garfish 将在应用卸载过程中执行 recover 函数销毁沙箱副作用,否则可能会造成内存泄漏。 ::: diff --git a/website-new/src/components/config/_webpackConfig.mdx b/website-new/src/components/config/_webpackConfig.mdx index b435759bb..d8ee2d3ee 100644 --- a/website-new/src/components/config/_webpackConfig.mdx +++ b/website-new/src/components/config/_webpackConfig.mdx @@ -35,12 +35,13 @@ module.exports = { }; ``` -:::tip 【重要】注意: +

+【重要】注意: 1. libraryTarget 需要配置成 umd 规范; 2. globalObject 需要设置为 'window',以避免由于不规范的代码格式导致的逃逸沙箱; 3. 如果你的 webpack 为 v4 版本,需要设置 jsonpFunction 并保证该值唯一(否则可能出现 webpack chunk 互相影响的可能)。若为 webpack5 将会直接使用 package.json name 作为唯一值,请确保应用间的 name 各不相同; 4. publicPath 设置为子应用资源的绝对地址,避免由于子应用的相对资源导致资源变为了主应用上的相对资源。这是因为主、子应用处于同一个文档流中,相对路径是相对于主应用而言的 5. 'Access-Control-Allow-Origin': '\*' 允许开发环境跨域,保证子应用的资源支持跨域。另外也需要保证在上线后子应用的资源在主应用的环境中加载不会存在跨域问题(**也需要限制范围注意安全问题**); -::: +

diff --git a/website/.editorconfig b/website/.editorconfig deleted file mode 100644 index 2fcea15de..000000000 --- a/website/.editorconfig +++ /dev/null @@ -1,23 +0,0 @@ -# EditorConfig is awesome: http://EditorConfig.org - -root = true - -[*] -charset = utf-8 -end_of_line = lf -indent_style = space -insert_final_newline = true - -[*.{js,jsx,ts,tsx,mjs,mjsx,cjs,cjsx,sh,rb}] -indent_size = 2 -max_line_length = 80 -trim_trailing_whitespace = true - -[*.py] -indent_size = 4 -max_line_length = 80 -trim_trailing_whitespace = true - -[*.{css,scss,less,html,hbs,ejs,json,code-workspace,yml,yaml,gql,md,mdx}] -indent_size = 2 -trim_trailing_whitespace = true diff --git a/website/.gitignore b/website/.gitignore deleted file mode 100644 index b3e07b0b5..000000000 --- a/website/.gitignore +++ /dev/null @@ -1,22 +0,0 @@ -# Dependencies -/node_modules - -# Production -/build -/output -/output_resource - -# Generated files -.docusaurus -.cache-loader - -# Misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/website/.npmrc b/website/.npmrc deleted file mode 100644 index 73d02cbc9..000000000 --- a/website/.npmrc +++ /dev/null @@ -1 +0,0 @@ -registry = 'https://registry.npmjs.org' diff --git a/website/CHANGELOG.md b/website/CHANGELOG.md deleted file mode 100644 index eb2b797fe..000000000 --- a/website/CHANGELOG.md +++ /dev/null @@ -1,16 +0,0 @@ -# Change Log - -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. - -## [0.1.7](https://github.com/bytedance/garfish/compare/v0.1.5...0.1.7) (2021-09-07) - -**Note:** Version bump only for package garfish-docs - -## [0.1.6](https://github.com/bytedance/garfish/compare/v0.1.5...0.1.6) (2021-09-06) - -**Note:** Version bump only for package garfish-docs - -## [0.0.36](https://github.com/bytedance/garfish/compare/v0.0.35...0.0.36) (2021-07-29) - -**Note:** Version bump only for package garfish-docs diff --git a/website/CNAME b/website/CNAME deleted file mode 100644 index 8580f7fb5..000000000 --- a/website/CNAME +++ /dev/null @@ -1 +0,0 @@ -garfishjs.org diff --git a/website/README.md b/website/README.md deleted file mode 100644 index 1f9d1f31f..000000000 --- a/website/README.md +++ /dev/null @@ -1,43 +0,0 @@ -# Garfish Docs - -## 安装 - -```console -yarn setup -``` - -## 本地开发 - -```console -yarn start -``` - -该命令会启动一个本地服务并打开浏览器窗口 - -## 构建 - -```console -yarn build -``` - -该命令会在 `build` 目录下生成网站静态页面 - -## 发布 - -待补充 - -## 文档搜索 - -**注意**: 文档搜索功能需要在 `build` 模式下才能生效,直接执行 `yarn start` 将无法搜索到结果,正确步骤如下: - -第一步: - -```base -yarn build -``` - -第二步 - -```base -yarn serve -``` diff --git a/website/babel.config.js b/website/babel.config.js deleted file mode 100644 index e00595dae..000000000 --- a/website/babel.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - presets: [require.resolve('@docusaurus/core/lib/babel/preset')], -}; diff --git a/website/docs/api/__meta__.md b/website/docs/api/__meta__.md deleted file mode 100644 index 6d7eff77b..000000000 --- a/website/docs/api/__meta__.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: API -collapsed: false -order: 4 ---- diff --git a/website/docs/api/api.md b/website/docs/api/api.md deleted file mode 100644 index 6f9895361..000000000 --- a/website/docs/api/api.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: 概览 -slug: /api -order: 1 ---- - -```ts -import Garfish from "garfish"; -``` -在主应用中,我们通过 `import Garfish from "garfish";` 来引入 Garfish,并调用相关 Garfish api 去注册子应用或运行微前端应用。 - -其中,Garfish 是 `garfish` 包默认导出的实例,实例上包含微前端相关API,用户可以通过相应 API 完成对整个微前端应用的管理。 - -:::tip -这里需要特殊说明的是,子应用不需要额外引入 Garfish 实例,子应用可通过 `window.Garfish` 获取全局 Garfish 实例信息,参考 [Garfish 环境变量](../guide/quickStart/env.md)。 -::: - - -## Garfish 实例方法 -- [Garfish.run](/api/run) (用于初始化应用参数、启动路由监听,当路由发生变化时自动激活应用或销毁应用) -- [Garfish.registerApp](/api/registerapp)(用于动态注册应用信息) -- [Garfish.loadApp](/api/loadapp)(可以手动控制子应用加载和销毁) -- [Garfish.router](/api/router)(提供路由跳转和路由守卫能力) -- [Garfish.channel](/api/channel)(提供应用间通信的能力) -- [Garfish.setExternal](/api/setexternal)(支持应用间的依赖共享) -- [Garfish.getGlobalObject](/api/getglobalobject)(用于获取真实 Window) -- [Garfish.setGlobalObject](/api/getglobalobject)(用于设置真实 Window 的值) -- [Garfish.clearEscapeEffect](/api/getglobalobject)(用于清除逃逸的副作用) diff --git a/website/docs/api/channel.md b/website/docs/api/channel.md deleted file mode 100644 index d1291cad5..000000000 --- a/website/docs/api/channel.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Garfish.channel -slug: /api/channel -order: 5 ---- - -import Highlight from '@site/src/components/Highlight'; - -用于应用间的通信,`Garfish.channel` 为 Garfish 的实例属性,该属性是 [EventEmitter2](https://github.com/EventEmitter2/EventEmitter2) 的实例。 - -### Type - -```ts -channel: EventEmitter2; -``` - -### 默认值 - -- 无 - -### 示例 - -```js -// 子应用监听登录事件 -const App = () => { - const handleLogin = (userInfo) => { - console.log(`${userInfo.name} has login`); - }; - - useEffect(() => { - window?.Garfish.channel.on('login', handleLogin); - return () => { - window?.Garfish.channel.removeListener('login', handleLogin); - }; - }); -}; - -// 主应用触发监听事件 -api.getLoginInfo().then((res) => { - if (res.code === 0) { - window.Garfish.channel.emit('login', res.data); - } -}); -``` diff --git a/website/docs/api/clearEscapeEffect.md b/website/docs/api/clearEscapeEffect.md deleted file mode 100644 index 252d3c5fd..000000000 --- a/website/docs/api/clearEscapeEffect.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Garfish.clearEscapeEffect -slug: /api/clearEscapeEffect -order: 9 ---- - -用来清除逃逸沙箱的变量。 - -> 在微前端应用下,子应用将默认开启沙箱模式。在沙箱模式下,若发现有一些特殊的行为会逃逸沙箱系统,可以使用此方法来清除逃逸的变量; - -## Type -```ts -clearEscapeEffect: (key: string, value?: any) => void; -``` - -## 示例 - -```js -Garfish.clearEscapeEffect('webpackJsonp'); -``` diff --git a/website/docs/api/getGlobal.md b/website/docs/api/getGlobal.md deleted file mode 100644 index b8bd40be9..000000000 --- a/website/docs/api/getGlobal.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Garfish.getGlobalObject -slug: /api/getGlobalObject -order: 7 ---- -import Highlight from '@site/src/components/Highlight'; - -用于子应用获取真实 window 的值。 - -> 在微前端应用下,子应用将默认开启沙箱模式。在沙箱模式下,子应用中全局变量为被 proxy 的 'fakeWindow',而全局变量(真实 window)默认会被隔离。若子应用需求获取真实 window 的值,可以通过此方法获取。 - - -:::tip -1. 一般情况下我们不建议直接通过此 API 获取真实 window,这样建议的原因是: - - 使用此 API 后子应用产生了一个无法独立运行的逻辑,导致子应用失去独立运行的能力; - - 由于环境变量的修改并不是单向数据流,造成主应用无法感知哪些子应用会去修改 window 上的哪些变量,可能造成数据管理的混乱; - -2. 若需要获取真实 window 上的环境变量,可通过 [`protectVariable`](/api/run#protectvariable) 属性,将需要共享的属性放入列表中即可通过子应用的全局变量获取,这样主应用能感知到哪些值是会被修改的,哪些值是不会被修改的,能在一定程度上控制 `window` 变量的修改; -::: - -## Type -```ts -getGlobalObject: () => Window & typeof globalThis; -``` -## 示例 - -```js -import Garfish from 'garfish'; - -const nativeWindow = Garfish.getGlobalObject(); -``` diff --git a/website/docs/api/loadApp.md b/website/docs/api/loadApp.md deleted file mode 100644 index bd7050de0..000000000 --- a/website/docs/api/loadApp.md +++ /dev/null @@ -1,298 +0,0 @@ ---- -title: Garfish.loadApp -slug: /api/loadApp -order: 4 ---- - -import Highlight from '@site/src/components/Highlight'; - -用于手动挂载子应用,可动态控制子应用的渲染和销毁。 - -> Garfish 支持路由驱动式的应用挂载和销毁模式, -> 如果你的应用配置了 `activeWhen`, Garfish 则将自动监听路由变化并在路由命中时加载对应的子应用。这种模式属于路由驱动式的应用加载模式。如果你希望手动控制应用的加载和销毁,我们提供了 `Garfish.loadApp()` API 以供用户手动加载和销毁应用,这是一种更加灵活的子应用加载模式。 - -:::info - -1. 基于路由匹配的应用加载模式会通过子应用的 `activeWhen` 参数在在路由变化后自动判断当前应加载的子应用; -2. 在手动加载模式下(Garfish.loadApp),Garfish 不会根据路径匹配而是完全由开发者控制应用加载和销毁,此时应用加载不会受到 `activeWhen` 参数的影响; - -::: - -## 类型 - -```ts -loadApp(appName: string, options?: Omit): Promise; -``` - -## 默认值 - -- 无 - -## 示例 - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - - - - - -## 参数 - -### name - -- Type: string -- 要加载的子应用名称,必选。 -- 各子应用的名称应保持唯一,这是子应用的唯一标识; - -:::tip - -1. 请确保当前要加载的子应用信息已注册。Garfish 会从已注册的 app 信息中查找同名 app,若应用信息未注册将导致应用加载失败。 -2. 应用信息注册可通过 `Garfish.run()`、`Garfish.registerApp()`、`Garfish.setOptions()` 三种方式注册; - ::: - -### options? - -- Type: Omit - -- `options` 参数含义本质上与 [registerApp](/api/registerApp#参数) 中同名参数保持一致,可选。 -- 可移步 [registerApp](/api/registerApp#参数) 查看具体参数说明;这里仅针对注意事项进行说明。 - -:::info - -> `options` 的作用? - -这里提供 `options` 是允许用户在手动加载 App 时自定义当前应用的信息参数,若之前已注册过子应用,则会将已配置信息和这里的 `options` 参数进行 deepMerge,提供用户运行时更新 App 应用信息参数的能力; - -值得注意的是,若已缓存过 App 实例,则再次加载会直接返回当前缓存的实例,同时 `options` 参数仍会进行 merge。若设置 `cahce: false` 关闭缓存,则会使用当前 merge 后的配置重新生成 App 实例信息并返回; -::: - -- ** 注意事项 **: - - `options` 中不允许传递 `name` 属性,只允许更新当前 App 的应用信息参数; - - `options` 若不传,则会默认使用已注册的应用信息参数; - - `options` 若传递,则会覆盖已注册应用信息中的同名属性(二者进行 deepMerge),请确保在应用信息 merge 后 `entry` 入口信息参数存在,否则将会抛出错误; - - 子应用信息的更新不影响全局配置; - -## 返回值 - -```ts -import Garfish from 'garfish'; -import type { interfaces } from 'garfish'; - -let app: interfaces.App; -app = await Garfish.loadApp('vue-app', { - cache: true, - basename, - domGetter: '#container', - entry: 'http://localhost:8092', -}); -``` - -> loadApp 的返回值为子应用的 App 实例对象,实例对象上存在一些方法和属性,提供给开发者用于手动进行 App 的挂载、销毁及判断 App 当前应用状态等信息; - -### 实例属性 - -- name: string - -应用名称,string。 - -- mounted: boolean - -应用是否已挂载,boolean。 `true` 表示已挂载,`false` 表示未挂载。 - -- display: boolean - -应用是否被隐藏,boolean。 `true` 表示显示状态,未隐藏,`false` 表示隐藏态。 - -- strictIsolation: boolean - -是否开启严格隔离。`true` 表示已开启,`false` 表示未开启。 - -- isHtmlMode: boolean - -是否是 `html` 入口模式。 - -- appContainer: HTMLElement - -应用容器 - -- appInfo: AppInfo - -应用配置信息 - -- hooks: interfaces.AppHooks - 应用生命周期钩子函数 - -### 实例方法 - -- app.mount() - - - Type - - ```ts - mount(): Promise - ``` - - - 示例 - - ```ts - import Garfish from 'garfish'; - import type { interfaces } from 'garfish'; - - const app = await Garfish.loadApp('vue-app', { - cache: true, - basename, - domGetter: '#container', - entry: 'http://localhost:3000', - }); - await app.mount(); - ``` - - - 触发子应用的 渲染 流程。若应用 已挂载 、或 正在挂载中 、或 正在卸载中 将不会触发渲染流程; - - 在子应用渲染前将会触发 `beforeMount` 钩子函数,渲染完成将触发 `afterMount` 钩子函数并将当前挂载的应用 push 进 `Garfish.activeApps`。若渲染过程中出现异常将触发 `errorMountApp`钩子函数; - - 在此过程中将执行 `provider` 提供的子应用 `render` 函数,若 `provider` 函数未找到将会抛出错误。[尝试解决](/issues/#provider-is-null) - - [mount 过程中都做了哪些事情](/guide/lifecycle#mount) - -:::info 请注意: -对于 es module 子应用(如 Vite 应用),路由驱动模式下默认走缓存模式。子应用不可重复使用 `app.mount`,应用二次渲染只能使用 `app.show()`; -::: - -- app.unmount() - - ```ts - unmount(): boolean; - ``` - - - 触发子应用的 销毁 流程。若应用 正在卸载中 ,将不会重复卸载; - - 在子应用渲染前将会触发 `beforeUnmount` 钩子函数,渲染完成将触发 `afterUnmount` ,若销毁过程中出现异常将触发 `errorUnmountApp` 钩子函数; - - 应用卸载过程中会执行 `provider` 内部提供的 `destroy` 函数。卸载完成后,子应用的渲染容器将被移除、子应用的执行上下文也将被销毁,渲染过程中产生的副作用也都将会被清除,同时将子应用从 - `Garfish.activeApps` 里移除,`mounted` 和 `display` 状态置为 false; - - [unmount 过程中都做了哪些事情](/guide/lifecycle#unmount) - -- app.show() - - - Type - - ```ts - show(): Promise - ``` - - - 触发子应用的 显示 流程; - - 示例 - - ```ts - import Garfish from 'garfish'; - import type { interfaces } from 'garfish'; - - const app = await Garfish.loadApp('vue-app', { - cache: true, - basename, - domGetter: '#container', - entry: 'http://localhost:3000', - }); - // 若已经渲染触发 show,只有首次渲染触发 mount,后面渲染都可以触发 show 提供性能 - app.mounted ? app.show() : await app.mount(); - ``` - - - 触发子应用的 显示 流程。若应用 已显示 、或 未挂载 将不会触发应用渲染流程; - - - 在子应用显示前将会触发 `beforeMount` 钩子函数,显示完成将触发 `afterMount` 钩子函数并将当前挂载的应用 push 进 `Garfish.activeApps`; - - 在此过程中将执行 `provider` 提供的子应用 render 函数,若 `provider` 函数未找到将会抛出错误。[尝试解决](/issues/#provider-is-null) - - [show 过程中都做了哪些事情](/guide/lifecycle#show) - -:::info 请注意: - -1. `app.show()` 用于触发子应用的显示流程,此过程并不是 css 中样式的显示或隐藏,show() 方法会触发子应用的 `render` 函数,若 `render` 函数中存在副作用也会再次执行; -2. `app.show()` 在应用渲染的过程中将会执行 `provider` 中提供的 `render` 函数,但与 `app.mount()` 不同的是,`app.show()` 不会创建新的执行上下文; -3. 在基于路由驱动子应用加载模式下,若已启用缓存(`cache: true`),则会默认使用 show() 触发子应用的渲染。若未开启缓存模式,则会使用 `app.mount()` 渲染子应用。非路由驱动模式下,由开发者控制子应用的渲染和销毁; - ::: - -- app.hide() - - - Type - - ```ts - hide(): boolean; - ``` - - - 触发子应用的 隐藏 流程。若应用 未显示 、或 未挂载 将不会触发应用隐藏流程; - - - 在子应用隐藏前将会触发 `beforeUnmount` 钩子函数,隐藏完成将触发 `afterUnmount` 钩子函数并将当前隐藏的应用从 `Garfish.activeApps` 中移除; - - 在此过程中将执行 `provider` 提供的子应用 `destory` 函数。当移除完成,子应用的渲染容器也将被移除。 - - [hide 过程中都做了哪些事情](/guide/lifecycle#hide) diff --git a/website/docs/api/loader.md b/website/docs/api/loader.md deleted file mode 100644 index d21cd37f6..000000000 --- a/website/docs/api/loader.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Garfish.loader -slug: /api/loader -order: 4 ---- -import Highlight from '@site/src/components/Highlight'; - - -`Garfish.loadApp` 底层使用 `Garfish.loader` 来进行资源加载,因此可以通过 `Garfish.loader` 来添加资源加载过程中的回调以及资源的缓存策略 - -## `Garfish.loader` -`Garfish.loader` 是 `Garfish` 实例上的属性,由 `Garfish` 加载器提供。该属性上提供加载资源、缓存、解析能力,可以通过 `Garfish.loader` 上的属性可控制资源的加载策略和缓存策略。 - -### Type -```ts -interface Garfish { - loader: LoaderInterface; -} - -interface LoaderLifecycle{ - fetch: (string, RequestInit)=> Promise | void | undefined -} - -interface LoaderInterface { - setLifeCycle: (lifeCycle: Partial)=> void; -} -``` - -### Garfish.loader.setLifeCycle - -可设置 `Garfish.loader` 在资源加载过程中的处理逻辑 - -#### Type -```ts -(lifeCycle: Partial)=> void; -``` - -#### 参数 - -`options` - -##### fetch? - -- Type: LoaderLifecycle['fetch'] -- 入参: [Parameters<LoaderLifecycle['fetch']>](https://developer.mozilla.org/en-US/docs/Web/API/fetch#parameters) -- 返回值: [ReturnType<LoaderLifecycle['fetch']>](https://developer.mozilla.org/en-US/docs/Web/API/fetch#return_value) -- 示例 - -```ts -import Garfish from 'garfish'; - -Garfish.registerApp({ - name: 'react', - entry: 'http://localhost:3000/index.js' -}) - -// 设置 loader 的 fetch hook 返回值 -// 在 Garfish 调用 http://localhost:3000/index.js 地址时,返回指定的 Response 内容 -// 其他情况不处理,交由原生 fetch 发起请求 -Garfish.loader.setLifeCycle({ - fetch: function(url) { - if (url === 'http://localhost:3000/index.js') { - return Promise.resolve(new Response(` - console.log('hello world'); - `, { - status: 200, - headers: { - 'content-type': 'application/json', - }, - })) - }, - }, -}) - -``` - -#### 说明 - -1. `fetch` 可以在失败重试、资源自定义缓存读取等场景中使用 -2. 使用自定义 `fetch` 可以针对特定的资源进行自定义内容返回,当返回的内容为 `Promise` 实例时, Garfish 内部将不再发起 `fetch`,若返回的内容为其他类型的值将继续通过原生 `fetch` 请求资源 -3. 返回的 `Response` 实例,需要携带 `status` 和 `content-type`, 若未正确携带资源类型,`Garfish` 可能无法正确识别出资源的类型 - diff --git a/website/docs/api/preloadApp.md b/website/docs/api/preloadApp.md deleted file mode 100644 index be4c849b8..000000000 --- a/website/docs/api/preloadApp.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Garfish.preloadApp -slug: /api/preloadApp -order: 4 ---- -import Highlight from '@site/src/components/Highlight'; - - -`Garfish.preloadApp` 用于预加载特定资源,通过 `Garfish.preloadApp` 可以预加载特定子应用的入口资源和入口资源内容的子资源 - - -## `Garfish.preloadApp` - - -### Type -```ts -interface Garfish { - preloadApp: PreLoadAppType; -} - -type PreLoadAppType = (appName: string)=> void -``` - -### 参数 -#### appName - - Type: string -- 要加载的子应用名称,在调用 `preloadApp` 时,必须保证子应用信息已注册 - - -#### 示例 - -```ts -import Garfish from 'garfish'; - -Garfish.registerApp({ - name: 'react', - entry: 'http://localhost:3000' -}); - -// 预加载 react 子应用的入口资源和子资源(子资源表示的是,html 中携带的 script 和 link 信息) -Garfish.preloadApp('react'); - -``` -#### 说明 - -1. 该 `API` 可以用于在未真正加载子应用时进行子应用的资源预加载,当资源加载成功时,真正加载子应用时将不会再发起资源请求,将直接使用独立内存中存储的静态资源 -2. 通常可以将 `preloadApp` 的资源加载提升到主应用的 `html` 阶段,可以保证首屏使用到的子应用资源能够最大程度的提前完成资源的请求处理 - diff --git a/website/docs/api/registerApp.md b/website/docs/api/registerApp.md deleted file mode 100644 index 718a4502d..000000000 --- a/website/docs/api/registerApp.md +++ /dev/null @@ -1,182 +0,0 @@ ---- -title: Garfish.registerApp -slug: /api/registerApp -order: 3 ---- -import Highlight from '@site/src/components/Highlight'; -import SandboxConfig from '@site/src/components/config/_sandbox.mdx'; -import DomGetter from '@site/src/components/config/_domGetter.mdx'; -import BaseNameConfig from '@site/src/components/config/_basename.mdx'; - -用于注册子应用信息,为 Garfish 实例方法。 - -:::info - -1. `Garfish.run()` 中 apps 应用信息注册底层就是依赖 `registerApp` 的注册能力; -2. `registerApp` 为 Garfish 实例方法,用户可调用该 API 动态注册子应用信息,若出现 `Garfish.run()` 中的同名 app 应用信息,将覆盖`Garfish.run()` 中的 app 应用信息(merge, not override); -::: - -## 类型 - -```ts -registerApp(list: interfaces.AppInfo | Array): Garfish; -``` - -## 默认值 - -- 无 - -## 示例 - -```ts -import Garfish from 'garfish'; - -// 注册单个应用: -Garfish.registerApp({ - name: 'vue-app', - basename: '/demo', - activeWhen: '/vue-app', - entry: 'http://localhost:3000', - props: { - msg: 'vue-app msg', - }, -}); - -// 注册多个应用 -Garfish.registerApp([ - { - name: 'vue-app', - activeWhen: '/vue-app', - entry: 'http://localhost:3000', - }, - { - name: 'react-app', - activeWhen: '/react-app', - entry: 'http://localhost:2000', - }, -]); -``` - -## Type AppInfo - -> AppInfo 为子应用 app 配置类型,此配置与 Garfish.run() 全局配置中 app 相关参数含义相同。 - -```ts -export interface AppInfo extends AppConfig, AppLifecycle {} -``` - -:::info -Garfish 处理 app 参数的原则是: - -1. 对于同名字段,子应用中的配置具备更高优先级; -2. 默认情况下,Garfish 使用全局配置作为每个子应用配置; -3. 针对单个子应用的信息配置不影响其它子应用; -::: - -## 参数 - -### name - -- Type: string -- 子应用名称,必选; -- 请确保每个子应用名称唯一; - -### basename? - - - -### entry - -- Type: string -- 子应用的入口资源地址,支持 HTML 和 JS 入口,必选 - -### domGetter? - - - -### props? - -- Type: Object -- 初始化时主应用传递给子应用的数据,可选。子应用 [`provider` 导出函数](/guide/quickStart/start.md#2导出-provider-函数) 生命周期方法中将接收到此数据; - -### sandbox? - - - -### activeWhen? - -- Type: string | ((path: string) => boolean) -- 子应用的激活路径或激活条件,是子应用配置中的重要配置项,接收 string 和 函数类型,可选。 -- `activeWhen` 使用场景为基于路由模式加载子应用时,计算当前应激活的子应用的判断条件,当使用手动加载 [loadApp](/api#loadApp) 时将忽略 `activeWhen` 选项。如果你的应用是基于路由驱动式挂载子应用,你应该始终传递 `activeWhen`; -- 在每次发生路由变化时,Garfish 都会触发 activeWhen 的校验逻辑去判断当前应该激活的子应用; - -- 当参数为 string 类型时: - - - `activeWhen` 应设置为子应用的一级路由 - - Garfish 将使用字符串最短匹配原则作为激活判断条件匹配子应用,各子应用的 `activeWhen` 参数应保持唯一(即:Garfish 能够精准匹配到当前应该激活的子应用,应避免子应用间出现 `activeWhen` 重合的情况; - - - 在路由驱动模式下,子应用中接收到的 `basename` 参数将是 `basename` + `activeWhen`: - activeWhen: '/vue-app',(basename:'/') - - - ✅ https://demo.app/vue-app - - ✅ https://demo.app/vue-app/about - - ✅ https://demo.app/vue-app/detail/goods - - 🚫 https://demo.app/vue-app2 - - 🚫 https://demo.app/react-app - - activeWhen: '/vue-app',(basename:'/demo') - - - ✅ https://demo.app/demo/vue-app - - ✅ https://demo.app/demo/vue-app/about - - ✅ https://demo.app/vue-app - - 🚫 https://demo.app/vue-app/detail/goods - - 🚫 https://demo.app/react-app - -- 当参数为 function 类型时: - - - function 将接受到参数 path,用户可在函数内定义判断逻辑,返回 `true` 表示激活当前应用,否则应返回 `false`; - - 示例 - - ```ts - import Garfish from "garfish"; - Garfish.run({ - ..., - apps: [ - { - name: "vue", - activeWhen: (path) => path.startsWith('/vue-app') || path.startsWith('/sub-app') - entry: 'http://localhost:3000' - } - ] - }) - ``` - - - 校验过程中,当参数为 function 类型时,Garfish 会将当前的路径传入激活函数分割以得到子应用的最长激活路径,并将 `basename` + `子应用最长激活路径` 传递给子应用参数; - -- 什么时候不需要设置 activeWhen? - > activeWhen 为基于路由模式加载子应用时的激活路径(或条件),目的是为了寻找当前应该激活的子应用。当用户使用 [loadApp](/api#loadApp) 手动挂载应用时,此时可省略 `activeWhen` 参数。 - -:::caution - -1. 子应用如果本身具备路由,在微前端的场景下,必须把 basename 作为子应用的基础路径,没有基础路由,子应用的路由可能与主应用和其他应用发生冲突; -2. 我们强留建议不要使用根路径作为子应用的激活条件,[为什么?](/issues/#根路由作为子应用的激活条件) -::: - -### cache? - -- Type: boolean -- 是否缓存子应用。若已加载过应用,在缓存模式下将返回相同的应用实例,可选,默认值为 `true`; -- Garfish 默认会对加载过的 app 进行缓存策略,目的是为了节省二次渲染开销,避免重复的编译代码造成的性能浪费,以及避免逃逸代码可能造成的内存泄漏。若关闭此选项,将会严重影响子应用的加载速度,需要仔细权衡; -- 在缓存模式下,Garfish 将不会执行子应用所有代码,仅执行 render ,可以避免逃逸代码造成的内存问题; -- 缓存模式也存在一定的弊端,关于 Garfish 的缓存机制,请移步 [Garfish 缓存机制](/guide/cache); - -### noCheckProvider - -- Type: boolean -- 是否检查 `provider` 函数,可选,默认为 true; - -### asyncProviderTimeout - -- Type: number -- 全局异步provider超时时间,默认是2000ms,设置为0的话,只允许同步provider; -- 此项特性适用于那些不太方便处理成同步暴露provider的子应用,比如某些脚手架新建的项目,项目里看到的entry文件,实际上会被包裹一层并且动态import进来; diff --git a/website/docs/api/router.md b/website/docs/api/router.md deleted file mode 100644 index 6c64a02da..000000000 --- a/website/docs/api/router.md +++ /dev/null @@ -1,268 +0,0 @@ ---- -title: Garfish.router -slug: /api/router -order: 5 ---- -import Highlight from '@site/src/components/Highlight'; - - -用于微前端下的应用间的路由跳转,提供路守卫能力,在路由变化时触发相应hook,帮助用户更加精确的控制路由变化,灵活地支持各类业务场景。 - -> 路由是微前端中重要且复杂的模块。在微前端应用下,子应用既可作为独立应用运行在自己的路由系统下,又可作为子应用嵌入在主应用下加载,为了实现两种模式的无缝切换,Garfish 实现了一套路由机制保证用户在这两种模式中平滑过渡,你可以在 [Garfish 路由机制](/guide/router) 中了解详细设计。 - -:::info -在阅读下面 API 介绍之前,你需要了解和保证一些配置规范。 -::: - -1. 你需要了解的: - - 目前 Garfish 路由系统通过命名空间(即子应用 basename)来避免应用间的路由冲突; - - 目前 Garfish 路由系统仅支持主应用的 history 路由模式,原因是 hash 路由无法作为子应用的基础路由; - - 不要使用根路由作为子应用的激活条件,否则该应用在任何路径下都会激活,且应用间可能会产生冲突; - - 子应用在 `provider` 中的 `render` 函数拿到的 `basename` = `主应用的 basename` + `activeWhen`; - -2. 你需要配置的: - - 请将 `provider` 中 `render` 函数接收到的 `basename` 设置为子应用的 `basename`,[如何配置](/guide/demo/react#3-根组件设置路由的-basename); - -## `Garfish.router` -`Garfish.router` 是 Garfish 实例上的属性,由 Garfish 路由系统提供。该属性上提供应用间路由跳转的方法、路由导航守卫钩子函数以及路由相关配置信息。其类型定义如下: -### Type -```ts -interface Garfish { - router: RouterInterface; - apps: Record; -} - -interface RouterInterface { - push: ({ path, query, basename}: { - path: string; - basename?: string; - query?: { - [key: string]: string; - }; - }) => void; - replace: ({ path, query, basename}: { - path: string; - basename?: string; - query?: { - [key: string]: string; - }; - }) => void; - beforeEach: (hook: RouterHook) => void; - afterEach: (hook: RouterHook) => void; - registerRouter: (Apps: interfaces.AppInfo | Array) => void; - routerChange: (hook: RouterChange) => void; - setRouterConfig: typeof setRouterConfig; - listenRouterAndReDirect: ({ apps, basename, autoRefreshApp, active, deactive, notMatch}: Options$1) => void; - routerConfig: Options$1; -} -``` -### 默认值 -- 无 -### Garfish.router.push -路由导航方法。 -#### Type -```ts -push: ({ path, query, basename}: { - path: string; - basename?: string; - query?: { - [key: string]: string; - }; - }) => void; -``` -#### 参数 -- path - - 要跳转的路由,`string`,必选。 -- basename - - 设置跳转的基础路由,`string`,非必选。 -- query - - 路由携带的查询参数,`Record`,非必选。 - -#### 示例 -```ts -import Garfish from 'garfish'; - -// 跳转 vue-a 应用: -Garfish.router.push({ - path: '/vue-a' -}); - -// 跳转 react-b 应用详情页: -Garfish.router.push({ - path: "/react-b/detail", - query: { id: "002" }, -}); -``` -#### 说明 -1. `Garfish.router.push()` 方法默认会携带上全局 basename 作为跳转前缀,若使用框架自身路由进行跳转,请记得主动添加`basename` 跳转前缀。下面两种跳转方式等价: - ```ts - Garfish.router.push({ path: '/react-b' }); - navigate('/examples/react-b'); // navigate 为 react-router-dom v6 跳转方法 - ``` -2. 此方法会向 history 栈添加新的记录,点击浏览器后退按钮后能正常返回上一个页面; -3. 若跳转子应用的子路由,使用 `Garfish.router.push()` 方法跳转将触发子应用子路由视图更新。另外若关闭 [autoRefreshApp](/api/run#autorefreshapp) 选项,则将**只能**使用 `Garfish.router` 进行跳转子应用子路由,但子应用一级路由仍将可使用框架路由跳转。 -4. 本 api 可以在 react-router-prompt 触发多次时,配合 autoRefreshApp 配置。关闭其他跳转方法触发子应用刷新组件,可限制 prompt 触发多次或子应用额外卸载多次的场景。 - -:::info -由于目前主流框架并不是通过监听路由变化来触发组件的更新的。在跳转子应用子路由时,若直接使用 `history.pushState` 将不会触发对应路由的组件更新,请使用 `Garfish.router` 提供的方法进行跳转。 -::: - -### Garfish.router.replace -路由导航方法。 -#### Type -```ts -replace: ({ path, query, basename}: { - path: string; - basename?: string; - query?: { - [key: string]: string; - }; - }) => void; -``` - -#### 参数 -- path - - 要跳转的路由,`string`,必选。 -- basename - - 设置跳转的基础路由,`string`,非必选。 -- query - - 路由携带的查询参数,`Record`,非必选。 - -#### 示例 -```ts -import Garfish from 'garfish'; -// 跳转 react-a 应用: -Garfish.router.replace({ - path: '/react-a' -}); -``` -#### 说明 -1. `Garfish.router.replace()` 方法与 [Garfish.router.push()](/api/router#garfishrouterpush) 方法类似,唯一的区别是:它不会向 history 添加新记录,而是跟替换掉当前的 history 记录; -2. 其它参数请参考 [Garfish.router.push()](/api/router#garfishrouterpush) - -### Garfish.router.beforeEach -#### 触发时机 -- 全局路由守卫,在**路由跳转后**,**子应用挂载前**触发。 -#### Type -```ts -beforeEach: (hook: RouterHook) => void; - -type RouterHook = ( - to: CurrentRouterInfo, - from: CurrentRouterInfo, - next, -) => void; - -export interface CurrentRouterInfo { - fullPath: string; - path: string; - query: Object; - state: Object; - matched: Array; -} -``` -#### 参数 -- to - :即将要进入的目标路由信息。 - -- from - :即将离开的路由信息。 - -- next - :阻塞执行回调。 - -#### 示例 -```ts -import Garfish from 'garfish'; -Garfish.router.beforeEach((to, from, next) => { - next(); -}); - -Garfish.run({...}) -``` - -### Garfish.router.afterEach -#### 触发时机 -- 全局路由守卫,在**路由跳转后**,**子应用挂载后**触发。 -#### Type -```ts -afterEach: (hook: RouterHook) => void; - -type RouterHook = ( - to: CurrentRouterInfo, - from: CurrentRouterInfo, - next, -) => void; - -export interface CurrentRouterInfo { - fullPath: string; - path: string; - query: Object; - state: Object; - matched: Array; -} -``` -#### 参数 -- to - :即将要进入的目标路由信息。 - -- from - :即将离开的路由信息。 - -- next - :阻塞执行回调。 - -#### 示例 -```ts -import Garfish from 'garfish'; -Garfish.router.afterEach((to, from, next) => { - next(); -}); - -Garfish.run({...}) -``` - -### Garfish.router.routerChange - -#### 触发时机 - -- 全局路由守卫,在**路由发生变化**,**子应跳转前**触发。 - -#### Type - -```ts -afterEach: (path: string) => void; -``` - -#### 参数 - -- path - :跳转到的location.pathname。 - -#### 示例 - -```ts -import Garfish from 'garfish'; -Garfish.router.routerChange(path => { - console.log(path); -}); - -Garfish.run({...}) -``` - -:::tip -请注意: - -1. `Garfish.router.beforeEach`、`Garfish.router.afterEach` 和 `Garfish.router.routerChange` 均属于 Garfish 提供的路由守卫钩子,将在每次在路由变化后触发。 -2. `Garfish.router.beforeEach`、`Garfish.router.afterEach` 和 `Garfish.router.routerChange` 是**全局唯一的**,如果设置多次,那么只有最后执行的是有效的。对它们的使用应该需要一定的约定,避免多次注册导致互相覆盖。 -3. 请将路由守卫注册放在 `Garfish.run` 前执行,否则将无法接收到首次加载时的路由钩子; -4. 若跳转新的子应用,则 `Garfish.router.beforeEach` 将在子应用加载前触发,`Garfish.router.afterEach` 将在子应用加载后触发。此时路由均已发生变化; -5. `next` 函数可为异步函数,微前端渲染流程将被阻塞直至 `next` 函数被 resolve。 -6. 在子应用间跳转时,若使用了路由守卫钩子,请确保 `next` 函数被执行,否则将导致 Garfish 内部子应用渲染逻辑被阻塞; -7. 子应用内路由跳转不受 `next` 函数调用的影响; diff --git a/website/docs/api/run.md b/website/docs/api/run.md deleted file mode 100644 index fd5869bfb..000000000 --- a/website/docs/api/run.md +++ /dev/null @@ -1,212 +0,0 @@ ---- -title: Garfish.run -slug: /api/run -order: 2 ---- -import Highlight from '@site/src/components/Highlight'; -import BeforeLoad from '@site/src/components/lifeCycle/_beforeLoad.mdx'; -import AfterLoad from '@site/src/components/lifeCycle/_afterLoad.mdx'; -import ErrorLoadApp from '@site/src/components/lifeCycle/_errorLoadApp.mdx'; -import BeforeEval from '@site/src/components/lifeCycle/_beforeEval.mdx'; -import AfterEval from '@site/src/components/lifeCycle/_afterEval.mdx'; -import BeforeMount from '@site/src/components/lifeCycle/_beforeMount.mdx'; -import AfterMount from '@site/src/components/lifeCycle/_afterMount.mdx'; -import ErrorMountApp from '@site/src/components/lifeCycle/_errorMountApp.mdx'; -import BeforeUnmount from '@site/src/components/lifeCycle/_beforeUnmount.mdx'; -import AfterUnmount from '@site/src/components/lifeCycle/_afterUnmount.mdx'; -import ErrorUnmountApp from '@site/src/components/lifeCycle/_errorUnmountApp.mdx'; -import OnNotMatchRouter from '@site/src/components/lifeCycle/_onNotMatchRouter.mdx'; -import SandboxConfig from '@site/src/components/config/_sandbox.mdx'; -import DomGetter from '@site/src/components/config/_domGetter.mdx'; -import BaseNameConfig from '@site/src/components/config/_basename.mdx'; -import ProtectVariable from '@site/src/components/config/_protectVariable.mdx'; -import InsulationVariable from '@site/src/components/config/_insulationVariable.mdx'; - - -用于初始化全局配置、注册子应用信息,并启动基于路由匹配的子应用自动渲染流程。 - -> garfish 基于 `activeWhen` 参数自动进行子应用激活匹配,可参考 [activeWhen](/api/registerApp#activewhen) 了解 garfish 路由匹配逻辑; - - -## 类型 - -```ts -run(options?: interfaces.Options): Garfish; -``` - -```ts -// type 定义 -export interface Options extends Config, AppGlobalConfig, GlobalLifecycle {} -``` - -## 默认值 - -- {} - -## 示例 - -```ts -import Garfish from "garfish"; -import type { interfaces } from "garfish"; - -const config: interfaces.Options = { - /* global options */ - basename: '/', - domGetter: '#subApp', - disablePreloadApp: false, - ... - /* app infos */ - apps: [ - { - name: 'react', - activeWhen: '/react', - entry: 'http://localhost:3000', - ... - } - ], - /* lifecycle hooks */ - beforeLoad(appInfo) { - console.log('子应用开始加载', appInfo.name); - }, - afterLoad(appInfo) { - console.log('子应用加载完成', appInfo.name); - }, - ... -} -Garfish.run({ config }); -``` - -## 参数 - -`options` - -### domGetter? - - - -### basename? - - - -### props? - -- Type: Object -- 初始化时主应用传递给子应用的数据,可选。子应用 [`provider` 导出函数](/guide/quickStart/start.md#2导出-provider-函数) 生命周期方法中将接收到此数据; - -### disablePreloadApp? - -- Type: boolean -- 是否禁用子应用的资源预加载,可选,默认值为 `false`。默认情况下 Garfish 会开启子应用的资源预加载能力; -- Garfish 会在用户端计算子应用打开的次数,应用的打开次数越多,预加载权重越大; -- 预加载能力在弱网情况和手机端将不会开启; - -### disableSourceListCollect? - -- Type: boolean -- 是否禁用收集子应用资源列表,可选,默认值为 `false`。默认情况下 Garfish 会自动收集子应用的资源,用于进行监控分析; - -### sandbox? - - - -### autoRefreshApp? - -- Type: boolean -- 主应用在已经打开子应用页面的前提下,跳转子应用的子路由触发子应用的视图更新,默认值为 `true`; -- 若关闭 `autoRefreshApp`, 则跳转 子应用子路由 将只能通过 [Garfish.router](/api/router) 进行跳转,使用框架自身路由 API(如 react-router)跳转将失效; -- 在某些场景下,通过主应用触发子应用视图更新可能会导致触发子应用的视图刷新而触发子应用的 hook,所以提供关闭触发子应用视图刷新的能力; - -### protectVariable? - - - -### insulationVariable? - - - -### apps? - -- Type: AppInfo[] -- 子应用列表信息,此字段参数信息与 [registerApp](../api/registerApp.md) 一致,可跳转查看详细介绍; - -```ts -export interface AppInfo extends AppConfig, AppLifecycle {} - -export interface AppGlobalConfig { - // 子应用的基础路径,通过路由驱动自动加载子应用时实际传递给子应用的 basename 为计算的值 - // 若手动载入渲染应用时 basename 为这里指定的值 - basename?: string; - // 子应用挂载点,同上,此处会覆盖全局默认的 domGetter - domGetter?: DomGetter; - // 传递给子应用的数据, 同上,此处会覆盖全局默认的 props - props?: Record; - // 子应用的沙箱配置,同上,此处会覆盖全局默认的 sandbox - sandbox?: false | SandboxConfig; -} - -export type AppConfig = Partial & { - // 子应用的名称,需要唯一 - name: string; - // 子应用的入口资源地址,支持 HTML 和 JS - entry?: string; - // 是否缓存子应用,默认值为 true; - cache?: boolean; - // 是否检查 provider, 默认为true; - noCheckProvider?: boolean; -}; -``` - -- 示例 - -```ts -Garfish.run({ - ..., - apps: [ - { - name: 'vue-app', - basename: '/demo', - activeWhen: '/vue-app', - entry: 'http://localhost:3000', - props: { - msg: 'vue-app msg', - } - } - } -] -``` - -### beforeLoad - - -### afterLoad - - -### errorLoadApp - - -### beforeMount - - -### afterMount - - -### beforeEval - - -### afterEval - - -### errorMountApp - - -### beforeUnmount - - -### afterUnmount - - -### errorUnmountApp - - -### onNotMatchRouter - \ No newline at end of file diff --git a/website/docs/api/setExternal.md b/website/docs/api/setExternal.md deleted file mode 100644 index 9d26e2bd1..000000000 --- a/website/docs/api/setExternal.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Garfish.setExternal -slug: /api/setExternal -order: 6 ---- - -用于实现主、子应用间依赖共享。 - -:::tip -1. 主、子应用若开启进行依赖共享能力,需要构建成 'umd' 规范且保证 `jsonpFunction` 唯一;[参考](/guide/build-config); -2. 若子应用通过依赖共享主应用核心包,则子应用将不能独立运行; -3. 主应用的若升级版本会可能会对子应用产生影响; -4. external 的内容会逃逸 vm 沙箱; -::: - -> 请注意,Garfish.setExternal 是 garfish 提供的用于实现应用间的依赖共享的 API,通过该 API 可将依赖进行注册并在注册完成后可实现主子应用的依赖共享。但可能会由于共享带来某些依赖的影响,若出现问题我们建议关闭共享机制。 - -## 类型 -```ts -setExternal(nameOrExtObj: string | Record, value?: any): Garfish; -``` -## 示例 -### 主应用 - -- 主应用 webpack 配置 -```js -// 主应用 webpack.config.js -module.exports = { - output: { - // 需要配置成 umd 规范 - libraryTarget: 'umd', - // 请求确保该值与子应用的值不相同避免与子应用发生影响 - jsonpFunction: 'main-app-jsonpFunction' - }, -}; -``` -- 设置 external -```ts -// 主应用 index.ts -import React from 'react'; -import * as ReactDom from 'react-dom'; -import * as mobxReact from 'mobx-react'; -import * as ReactRouterDom from 'react-router-dom'; -import Garfish from 'garfish'; - -Garfish.setExternal({ - react: React, - 'react-dom': ReactDom, - 'react-router-dom': ReactRouterDom, - 'mobx-react': mobxReact, -}); -``` -### 子应用 - -```js -// 子应用 webpack.config.js -module.exports = { - output: { - // 需要配置成 umd 规范 - libraryTarget: 'umd', - // 修改不规范的代码格式,避免逃逸沙箱 - globalObject: 'window', - // 请求确保每个子应用该值都不相同,否则可能出现 webpack chunk 互相影响的可能 - jsonpFunction: 'vue-app-jsonpFunction', - // 保证子应用的资源路径变为绝对路径,避免子应用的相对资源在变为主应用上的相对资源,因为子应用和主应用在同一个文档流,相对路径是相对于主应用而言的 - publicPath: 'http://localhost:8000' - }, - externals: { - react: 'react', - 'react-dom': 'react-dom', - 'react-router-dom': 'react-router-dom', - 'mobx-react': 'mobx-react' - } -}; -``` diff --git a/website/docs/api/setGlobal.md b/website/docs/api/setGlobal.md deleted file mode 100644 index b7be82cd8..000000000 --- a/website/docs/api/setGlobal.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Garfish.setGlobalObject -slug: /api/setGlobalObject -order: 8 ---- - -用于子应用设置真实 window 的值。 - -> 在微前端应用下,子应用将默认开启沙箱模式。在沙箱模式下,子应用中全局变量为被 proxy 的 'fakeWindow',而全局变量(真实 window)默认会被隔离。若子应用需求设置真实 window 的值,可以通过此方法获取。 - -:::tip -1. 一般情况下我们不建议直接通过此 API 设置真实 window; -2. 若需要设置真实 window 上的环境变量,可通过 [`protectVariable`](/api/run#protectvariable) 属性,将需要共享的属性放入列表中即可通过子应用的全局变量获取; -::: - -## Type -```ts -setGlobalValue(key: string, value?: any): void; -``` -## 示例 - -```ts -import Garfish from 'garfish'; - -Garfish.setGlobalValue(key: string | symbol, value: any); -``` diff --git a/website/docs/api/setOptioins.md b/website/docs/api/setOptioins.md deleted file mode 100644 index 2cac3df7e..000000000 --- a/website/docs/api/setOptioins.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Garfish.setOptions -slug: /api/setOptions -order: 5 ---- - -在 `Garfish.run` 调用前用于动态更新配置信息的API,参数与 [Garfish.run](/api/run) 保持一致。 -## 设计初衷 -在某些场景下,微前端应用的初始化参数信息在运行过程中可能会出现混乱不一致的情况,提供该 `API` 用于用户在复杂场景下设置全局微前端应用参数信息,此 API 作用于全局 Garfish 实例。 - -:::info -`Garfish.setOptions` 用于微前端应用启动前的参数变更。在触发了 `run` 方法后,不可以再通过 `setOptions` 更改应用配置。 -::: - -## 示例 - -```js -// 主应用 index.js -import Garfish from 'garfish'; - -Garfish.setOptions({ - basename: '/', - domGetter: '#container', - // xxx -}); -``` - -## 参数 - -`Options` - -- 此 API 参数与 [Garfish.run](/api/run) 保持一致。 请参考 [Garfish.run](/api/run#参数); diff --git a/website/docs/blog/__meta__.md b/website/docs/blog/__meta__.md deleted file mode 100644 index 776eb373b..000000000 --- a/website/docs/blog/__meta__.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: blog -collapsed: false -order: 4 ---- diff --git a/website/docs/blog/architecture.md b/website/docs/blog/architecture.md deleted file mode 100644 index 91bc03444..000000000 --- a/website/docs/blog/architecture.md +++ /dev/null @@ -1,443 +0,0 @@ ---- -title: 微前端架构设计 -slug: /blog -order: 1 ---- -微前端是什么:微前端是一种类似于微服务的架构,是一种由独立交付的多个前端应用组成整体的架构风格,将前端应用分解成一些更小、更简单的能够独立开发、测试、部署的应用,而在用户看来仍然是内聚的单个产品。 - -微前端诞生在两个大的背景下,在提倡拥抱变化的前端社区可以看到新的框架、技术、概念层出不穷,并且随着 Web 标准的演进,前端应用已经具备更好的性能、更快的开发效率。但随着而来的是应用的复杂程度更高、涉及的团队规模更广、更高的性能要求,应用复杂度已经成为阻塞业务发展的重要瓶颈。 - -微前端就是诞生于 Web 应用日益复杂化的场景中,因为随着网络速度、计算机硬件水平的提升和 Web 标准的演进,过去 Web 应用用户体验远不如传统的应用软件时代已逐渐远去,两者之间在用户体验上的差距不断缩减,并且由于 Web 应用开发速度快、用完即走等特性,导致的一个最终结果就是「能用 Web 技术实现的应用,最终都会通过 Web 来实现」。在近几年涌现了一大批之前只能在传统 PC 软件中才能看到的优秀产品,例如:Photoshop、Web Office、Web IDE。尽管随着 Web 标准的演进,前端工程化也在不断演变,从模块化到组件化在到现在的工程化,但在面对跨团队大规模开发、跨团队企业级应用协作,现有的分治设计模式仍然显得有心无力。 - -![image](https://user-images.githubusercontent.com/27547179/165336394-c724ee52-01a6-4667-9765-2b6c95c07ca6.png) - -## 大规模 Web 应用的困局 - -尽管 Web 应用的复杂度和参与人数以爆炸式的增长速度,但却没有一种新的架构模式来解决现有的困境,并同时兼顾 `DX`(developer experience)和 `UX`(user experience)。 - -以字节跳动内「研发中台」举例,在研发日常工作中需要使用非常多的研发系统,例如:代码管理、代码构建、域名管理、应用发布、CDN 资源管理、对象存储等。站在整个公司研发的角度考虑,最好的产品形态就是将所有的研发系统都放置同一个产品内,用户是无法感知他在使用不同的产品,对于用户而言就是单个产品不存割裂感,也不需要去学习多个平台,仅仅需要学习和了解字节跳动内的「研发中台」即可。 - -在字节跳动内这一类应用随处可见,由于字节跳动内存在大量业务线,每一条业务线都会诞生大量的中台系统,并且还在指数增长,以字节跳动内电商业务举例,对于电商运营的日常工作来说,其实与研发日常工作一样,围绕在:商品、商家、品牌、风控、营销等工作上,那么对于电商运营来说怎么样才最高效的电商运营系统呢,由于整个系统涉及范围较广,在实际的研发过程中必然会以功能或业务需求垂直的切分成更小的子系统,切分成各种小系统后尽管由于分治的设计理念提升了开发者体验,但是一定程度上降低了用户体验。那能否以一种新的架构模式,既保开发者体验,又能提升用户体验呢。 - -### 传统 Web 应用的利与弊 - -这里简单分析一下传统 Web 应用在开发大规模应用和涉及多研发团队协作时遇到的一些困境,以上面案例中的「电商运营平台」举例,对于电商运营而言商品、商家、品牌等都是电商运营平台能力的一部分,而不是独立之间的孤岛。若以传统的前端研发模式进行开发,那么此时有两种项目设计策略: - -1. 将平台内多个系统放置同一个代码仓库维护 ,采用 `SPA`(Single-page Application) 单页应用模式 -2. 将系统分为多个仓库维护,在首页聚合所有平台的入口,采用 `MPA`(Multi-page Application)多页应用模式 - -若采用多个系统放置同一个项目内维护: - -- 优势: - - 统一的权限管控、统一的 Open API 开发能力 - - 更好的代码复用,基础库复用 - - 统一的运营管理能力 - - 不同系统可以很好的通信 - - SPA 应用特有优势: - - 更好的性能 - - 具备局部更新,无缝的用户体验 - - 提前预加载用户下一页的内容 -- 劣势: - - 代码权限管控问题 - - 项目构建时间长 - - 需求发布相互阻塞 - - 代码 commit 混乱、分支混乱 - - 技术体系要求统一 - - 无法同时灰度多条产品功能 - - 代码回滚相互影响 - - 错误监控无法细粒度拆分 - -采用方案一的劣势非常明显,在日常开发中研发:代码构建半小时以上、发布需求时被需求阻塞、无法局部灰度局部升级、项目遇到问题时回滚影响其他业务、无法快速引进新的技术体系提高生产力,项目的迭代和维护对于研发同学而言无疑是噩梦。 - -尽管降低了开发体验,如果对项目整体的代码拆分,懒加载控制得当,其实对于使用平台的用户而言体验却是提升的,这一切都归因于 SPA 应用带来的优势,SPA 应用跳转页面时无需刷新整个页面,路由变化时仅更新局部,不用让用户产生在 MPA 应用切换时整个页面刷新带来的抖动感而降低体验,并且由于页面不刷新的特性可以极大程度的复用页面间的资源,降低切换页面时带来的性能损耗,用户也不会感知他在使用不同平台。 - -若采用拆分成多个仓库维护 - -- 优势 - - 可以以项目维度拆分代码,解决权限管控问题 - - 仅构建本项目代码,构建速度快 - - 可以使用不同的技术体系 - - 不存在同一个仓库维护时的 commit 混乱和分支混乱等问题 - - 功能灰度互不影响 -- 劣势 - - 用户在使用时体验割裂,会在不同平台间跳转,无法达到 SPA 应用带来的用户体验 - - 只能以页面维度拆分,无法拆分至区块部分,只能以业务为维度划分 - - 多系统同灰度策略困难 - - 公共包基础库重复加载 - - 不同系统间不可以直接通信 - - 公共部分只能每个系统独立实现,同一运维通知困难 - - 产品权限无法进行统一收敛 - 采用方案二在一定程度上提升了开发体验,但却降低了用户体验,研发在日常开发工作中需要使用大量的平台,但是却需要跳转到不同的平台上进行日常的研发工作,整体使用体验较差。体验较差的原因在于将由于通过项目维度拆分了整体「研发中台」这样的一个产品,使各个产品之间是独立的孤岛,系统间相互跳转都是传统意义上的 MPA,跳转需要重新加载整个页面的资源,除了性能是远不如 SPA 应用的并且应用间是没法直接通信,这就进一步增强了用户在使用产品时的割裂感。 - -### 背景和意义总结 - -通过以上两个场景案例,其实可以发现由于 Web 应用在逐步取代传统的 PC 软件时,大规模 Web 应用在面对高复杂度和涉及团队成员广下无法同时保证 DX 和 UX 的困境。传统的分而治之的策略已经无法应对现代 Web 应用的复杂性,因此衍生出了微前端这样一种新的架构模式,与后端微服务相同,它同样是延续了分而治之的设计模式,不过却以全新的方法来实现。 - -## 微前端解决方案 - -上一节总结了微前端出现的背景和意义,并且了解了两种传统 Web 应用的研发模式:SPA(Single-page Application)、MPA(Multi-page Application)在涉及人员广和项目复杂度高的场景下带来的劣势,那么期望能有一种新的架构能同时具备 SPA 和 MPA 两种架构优势,并同时提升 DX(developer experience)和 UX(user experience)呢? - -那在理想的情况下,期望能达到,将一个复杂的单体应用以功能或业务需求垂直的切分成更小的子系统,并且能够达到以下能力: - -- 子系统间的开发、发布从空间上完成隔离 -- 子系统可以使用不同的技术体系 -- 子系统间可以完成基础库的代码复用 -- 子系统间可以快速完成通信 -- 子系统间需求迭代互不阻塞 -- 子应用可以增量升级 -- 子系统可以走向同一个灰度版本控制 -- 提供集中子系统权限管控 -- 用户使用体验整个系统是一个单一的产品,而不是彼此的孤岛 -- 项目的监控可以细化到到子系统 - -那么基于上面理想情况,如何从零设计一套全新的架构用于解决现代 Web 应用在面对企业级系统遇到的困境呢。 - -## 微前端的整体架构 - -那么如何提供一套解决方案既具备 SPA 的用户体验,又能够具备 MPA 应用带来的灵活性,并且可以实现应用间同灰度,监控也可能细化到子系统呢。目前在字节跳动内应用的微前端解决方案「Garfish」 ,解决方案主要分为三层:部署侧、框架运行时、调试工具,目前采用的是 SPA 的架构。 - -![image](https://user-images.githubusercontent.com/27547179/165336487-d02e8b09-239b-4108-8351-de33d8f3bb1c.png) -![image](https://user-images.githubusercontent.com/27547179/165336535-8939d56e-0244-41d5-9d1c-b103d8743cc4.png) - -### 微前端部署平台 - -部署平台作为微前端研发流程中重要的一环,主要提供了:微前端的服务发现、服务注册、子应用版本控制、多个子应用间同灰度、增量升级子应用、下发子应用信息列表,分析子应用依赖信息提取公共基础库降低不同应用的依赖重复加载。 -用于解决微前端中子应用的独立部署、版本控制和子应用信息管理,通过 Serverless 平台提供的接口或在渲染服务中下发主应用的 HTML 内容中包含子应用列表信息,列表中包括了子应用的详细信息例如:应用 id、激活路径、依赖信息、入口资源等信息,并通过对于子应用的公共依赖进行分析,下发子应用的公共依赖,在运行时获取到子应用的信息后注册给框架,然后在主应用上控制子应用进行渲染和销毁。 - -![image](https://user-images.githubusercontent.com/27547179/165336565-b18887cf-8069-4bd1-b12a-3e80bc4277ca.png) - -### 微前端运行时 - -> Why not iframe - -谈到微前端绕不开的话题就是为什么不适用 iframe 作为承载微前端子应用的容器,其实从浏览器原生的方案来说,iframe 不从体验角度上来看几乎是最可靠的微前端方案了,主应用通过 iframe 来加载子应用,iframe 自带的样式、环境隔离机制使得它具备天然的沙盒机制,但也是由于它的隔离性导致其并不适合作为加载子应用的加载器,iframe 的特性不仅会导致用户体验的下降,也会在研发在日常工作中造成较多困扰,以下总结了 iframe 作为子应用的一些劣势: - -- 使用 Iframe 会大幅增加内存和计算资源,因为 iframe 内所承载的页面需要一个全新并且完整的文档环境 -- Iframe 与上层应用并非同一个文档上下文导致 - - 事件冒泡不穿透到主文档树上,焦点在子应用时,事件无法传递上一个文档流 - - 主应用劫持快捷键操作 - - 事件无法冒泡顶层,针对整个应用统一处理失效 - - 跳转路径无法与上层文档同步,刷新丢失路由状态 - - Iframe 内元素会被限制在文档树中,视窗宽高限制问题 - - Iframe 登录态无法共享,子应用需要重新登录 - - Iframe 在禁用三方 cookie 时,iframe 平台服务不可用 - - Iframe 应用加载失败,内容发生错误主应用无法感知 - - 难以计算出 iframe 作为页面一部分时的性能情况 -- 无法预加载缓存 iframe 内容 -- 无法共享基础库进一步减少包体积 -- 事件通信繁琐且限制多 - -### 基于 SPA 的微前端架构 - -尽管难以将 `Iframe` 作为微前端应用的加载器,但是却可以参考其设计思想,一个传统的 `Iframe` 加载文档的能力可以分为四层:文档的加载能力、HTML 的渲染、执行 JavaScript、隔离样式和 JavaScript 运行环境。那么微前端库的基础能力也可以参考其设计思想。 -从设计层面采取的是基座+子应用分治的概念,部署平台负责进行服务发现和服务注册,将注册的应用列表信息下发至基座,通过基座来动态控制子系统的渲染和销毁,并提供集中式的模式来完成应用间的通信和应用的公共依赖管理,因此 Garfish 在 Runtime 层面主要提供了以下四个核心能力: - -- 加载器(Loader) - - 负责注册平台侧提供的应用列表 - - 负责加载和解析子应用入口资源 - - HTML 入口类型,拆解 HTML Dom、Script、Style - - JS 入口类型,提供基础 Dom 容器 - - 预加载能力 - - 解析子应用导出内容 -- 沙箱隔离(Sandbox) - - 提供代码执行能力,收集执行代码时存在的副作用 - - 提供销毁收集副作用的能力 - - 支持沙箱多实例,收集不同实例的副作用 -- 路由托管(Router) - - 解决不同应用间的路由不同步问题 - - 提供路由劫持能力,在主应用上管控子应用路由 - - 提供路由驱动能力来拼装完整的平台的能力 -- 子应用通信(Store) - - 建立通信桥梁 - - 提供共享机制 - -![image](https://user-images.githubusercontent.com/27547179/165336609-b903adc8-7978-4776-a966-104a251e0555.png) - -### 应用生命周期 - -整个微前端子应用的生命周期基本可以总结为: - -- 渲染阶段 - - 主应用通过路由驱动或手动挂载的方式触发子应用渲染 - - 开始加载应用的资源内容,并初始化子应用的沙箱运行时环境 - - 判断入口类型 - - 若入口类型为 `HTML` 类型,将开始解析和拆解子应用资源 - - 若入口类型为 `JS`,创建子应用的挂点 `DOM` - - 将子应用存在”副作用“(对当前页面可能产生影响的内容)交由沙箱处理 - - 开始渲染子应用的 `DOM` 树 - - 触发子应用的渲染 `Hook` -- 销毁阶段 - - 若路由变化离开子应用的激活范围或主动触发销毁函数,触发应用的销毁 - - 清除应用在渲染时和运行时产生的副作用 - - 移除子应用的 `DOM` 元素 - -![image](https://user-images.githubusercontent.com/27547179/165336638-d344a74b-ec15-43c1-958e-5dcec9e045fc.png) - -### 加载器的设计 - -加载器的整体设计理念其实与 `React-loadable` 非常类似,具备以下能力: - -- 异步加载组件资源 -- 可以预加载资源 -- 可以缓存组件资源 -- 缓存组件实例 - -与组件不同的是微前端作为一种能够将单体应用拆解成多个子应用的架构模式,不同于组件,这些被拆分出去的子应用最好的研发模式是在开发、测试、部署都与宿主环境分离,子应用本身应具备自治能力,那么此时就与 Iframe 提供的能力非常类似,Iframe 通过加载 HTML 文档的形式加载整个子应用的资源,那么子应用本身就可作为一个独立站点,天然具备独立开发、测试的能力。因此 Garfish 的加载器提供了两种应用入口类型:HTML 类型和 JS 入口类型,但需要注意的是 Garfish 并非像 Iframe 一样将其分为了另一个文档流,而是将其与主应用作为同一个文档流处理,用以规避其不在同一个文档流带来的体验感割裂问题。 - -由于 HTML 入口类型天然具备独立、开发、测试的特性,在微前端整体架构设计中,对于跨团队协作而言,最好的研发模式是能降低其沟通成本,而降低沟通成本的最好方式是不沟通,所以一般项目类型都尽可能的推荐用户使用 HTML 的入口类型。 - -那么针对 HTML 入口类型的加载器需要做一些什么呢,下面是一张浏览器的渲染过程图: - -![image](https://user-images.githubusercontent.com/27547179/165336682-bbf6625a-eb49-4546-8f05-ff12d473c4d9.png) - -针对浏览器的渲染过程也可将其分为:`HTML` 文本下载、 `HTML` 拆解为语法树、拆解语法树中具备”副作用的内容“(对当前页面可能产生影响的内容)如 `Script`、`Style`、`Link` 并交由沙箱处理进行后渲染,与一般的子应用不同的是需要子应用提供 `provider`,`provider` 中包含了子应用渲染和销毁的生命周期,这两个 `Hook`可以应用缓存模式中进一步增强应用的渲染速度和性能。 - -![image](https://user-images.githubusercontent.com/27547179/165336727-3489f2e6-20a9-4722-89f8-a3291fab8569.png) - -### 沙箱的设计 - -其实在过去的 Web 应用中是很少提及到沙箱这一概念的,因为组件的开发一般都会由研发通过研发规范来尽可能的去避免组件对当前应用环境造成副作用,诸如:组件渲染后添加了定时器、全局变量、滚动事件、全局样式并且在组件销毁后会及时的清除子应用对当前环境产生的副作用。 -与组件完全不同的是微前端是由多个独立运行的应用组成的架构风格,这些系统可能分别来自不同的技术体系。项目的开发、测试从空间和时间上都是分离的,由于没有 Iframe 一样原生能力的隔离很难应用间不发生冲突,这些冲突可能会导致应用发生异常、报错、甚至不可用等状态。 - -以 Webpack4 JsonpFunction 为例 -在 Webpack5 中提供了一个重要的功能就是 Module Federation,随着 Webpack 5 推出 Module Federation ,与 Webpack 4 发生变化的一个重要配置就是 JsonpFunction 属性变为了 chunkLoadingGlobal,并且由原来的默认值 webpackJsonp 变成了默认使用 output.library 名称或者上下文中的 package.json 的 包名称(package name)作为唯一值(webpack.js.org/issues/3940)。 - -为什么会发生这个转变呢,如果了解过 Webpack 构建产物的一定会知道 Webpack 通过全局变量存储了分 chunk 后的产物,用于解决分包 chunk 的加载问题。由于 Webpack 5 引入 Module Federation 页面中可能会同时存在两个以上的 Webpack 构建产物,如果还是通过同一个变量存储要加载的 chunk ,必然会造成产物之间的互相影响。 - -通过 Webpack 4 到 Webpack 5 支持 Module Federation 之后可以发现,在一个基础库尚未考虑默认兼容多实例的场景下,贸然将其作为多实例使用很可能会造成应用无法按照预期运行,更为严重的是你以为其正常运行了其实应用已经发生了严重的内存泄漏或不可预知的情况,倘若将 Webpack 构建产物的应用多次动态的在页面中运行,将会发现已经造成严重的内存泄漏,因为 Webpack 会增量的向全局存储 chunk 的变量上挂载模块以及依赖信息,简单来说就是每次执行 Webpack 构建的子应用代码都会向 webpackJsonp 数组 push 大量的数据,最终造成内存泄漏,直至页面崩溃。 - -#### 沙箱的核心能力 - -为了保证应用能够稳定的运行且互不影响,需要提供安全的运行环境,能够有效地隔离、收集、清除应用在运行期间所产生的副作用,那应用运行期间主要会产生哪些副作用呢,可以将其分为以下几类:全局变量、全局事件、定时器、网络请求、`localStorage`、`Style` 样式、`DOM` 元素。 - -在 Garfish Runtime 中的沙箱主要能力也是围绕在这一块的能力建设上,针对子应用可能产生的副作用类型主要分为两类,一类是:静态副作用、另一类则是:动态副作用。这里静态副作用和动态副作用分别指的是什么呢,静态副作用指的是 HTML 中静态标签内容例如:Script 标签、Style 标签、Link 标签,这些内容属于在 HTML 文档流中就包含的,另外一部分副作用属于动态副作用,动态副作用指的是由 JavaScript 动态创建出来的,例如 JavaScript 可以动态创建 Style、动态创建 Script、动态创建 Link、动态执行代码、动态添加 DOM 元素、添加全局变量、添加定时器、网络请求、localStorage 等对当前页面产生副作用的内容。 - -针对子应用的静态副作用的收集比较简单,Loader 核心模块上已经提供了子应用入口资源类型的分析和拆解,可以从子应用 DOM 树中轻松拆解获取副作用内容,那么对于静态副作用已经可以完成有效的收集、清除,但是尚未具备隔离的能力。动态创建的副作用都是通过 JavaScript 来动态创建的,需要收集到 JavaScript 运行时产生的副作用,并提供副作用的隔离和销毁能力。 - -#### 沙箱设计的两种思路 - -在 Garfish 微前端中,如何有效收集、隔离、清除应用的副作用是保障应用能够平稳运行的核心能力之一。沙箱的主要能力也在于能够捕获动态创建的副作用,对应用的副作用进行隔离和清除。 - -那么如何能够有效的捕获到动态创建的副作用、收集、并隔离呢?目前 Garfish 提供了两种设计思路,一种是快照模式,另外一种是 VM 模式。 - -快照沙箱:顾名思义,在应用运行前通过快照的模式来保存当前执行环境,在应用销毁后恢复回应用之前的执行环境,用于实现应用间副作用的隔离和清除。类似于 “SL 大法”,通过 save 存储环境,通过 load 加载环境的模式。 - -代码实现思路 - -![image](https://user-images.githubusercontent.com/27547179/165336764-027a864a-6fd5-4420-ac98-28d2301ae0a5.png) - -核心设计思想简述: - -1. 针对每一种副作用提供一个 Patch 类,这个类需要提供 save 和 load 两个方法 -2. Save 对应着该副作用的环境快照存储,Load 对应着销毁该副作用的销毁恢复环境 -3. 并且针对每一种 Patch 还可以存储其在运行期间发生的变化,在优化场景时并不用所有代码,仅恢复执行环境即可 - -###### VM 沙箱 - -通过快照沙箱的最简化的核心实现后可以发现,它的设计理念依赖于整个代码的执行属于线性的过程,即:存储执行环境=>执行具备副作用的代码=>恢复执行环境,但在实际的场景中对于应用的划分并非以页面为维度划分,同一个页面可能存在多个应用,所以它的执行顺序并非线性,可能同时存在多个快照沙箱的实例环境,也就是快照沙箱多实例,以下面代码举例: - -![image](https://user-images.githubusercontent.com/27547179/165336842-861d7e28-8c61-476d-9eb0-cfee04415e09.png) - -通过上面的代码可以发现,在同时运行多个快照沙箱实例时,在代码执行顺序非线性的场景下,并不能有效的收集和处理应用的副作用,也基于此快照沙箱无法使用在非线性呢多实例的场景中,因此也进一步推出了 VM(virtual machine) 沙箱。 - -维基百科关于 VM 的解释:在计算机科学中的体系结构里,是指一种特殊的软件,可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于虚拟机这个软件所创建的环境来操作其它软件。虚拟机(VM)是计算机系统的仿真器,通过软件模拟具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,能提供物理计算机的功能。 - -在 Node 中也提供了 VM 模块,不过不过不同于传统的 VM,它并不具备虚拟机那么强的隔离性,并没有从模拟完整的硬件系统,仅仅将指定代码放置在特定的上下文中编译并执行代码,所以它无法用于不可信来源的代码。 - -参考 Node 中 VM 模块的设计,以及 JavaScript 词法作用域 的特性,可以设计出 VM 沙箱,不过与传统的 VM 差异也同样存在,它并能执行不可信的代码,因为它的隔离能力仅限于将其运行在一个指定的上下文环境中。 - -从而得出以下设计 - -![image](https://user-images.githubusercontent.com/27547179/165336890-1f3ea38f-33b6-4eea-abad-4e928bdcddea.png) - -![image](https://user-images.githubusercontent.com/27547179/165336915-6bbb2ecd-4fef-4c7c-9d19-9d3b72ba3497.png) - -隔离环境需要哪些上下文 -针对副作用的类型:全局变量、全局事件、定时器、网络请求、localStorage、Style 样式、DOM 元素,分别提供了全新的执行上下文: - -- Window - - 用于隔离全局环境 -- document - - 用于捕获动态创建的 DOM 节点、Style、Script - - 收集 DOM 副作用 - - 收集 Style 副作用,进行处理 - - 收集 Script,继续放置沙箱处理 -- timeout、interval - - 处理定时器 -- localstorage - - 隔离 localStorage -- listener - - 收集全局事件 - -新的执行上下文哪里来 -新的执行上下文有两个来源, - -- 来源于当前环境 -- 来源于 Iframe 的执行环境 - 由于 Iframe 创建后需要需要较多的内存资源和计算资源,而微前端中的 VM 沙箱并不需要一个完全的执行上下文,所以可以基于当前环境。 - -![image](https://user-images.githubusercontent.com/27547179/165336962-e61778cb-a953-41d5-99b8-6b8234eb808f.png) - -快照沙箱和 VM 沙箱能力对比 - -![image](https://user-images.githubusercontent.com/27547179/165336996-76db3051-3dc2-4cbf-9540-264db8bf9168.png) - -#### 路由系统的设计 - -在于现代 MVC 的设计思想,前端框架的设计思想也一直在发生变更,现代 Web 前端框架提供的最经典的能力莫过于将 MVC 中的 Controller 变为了 Router,目前几乎主流的前端框架都支持路由驱动视图,仅提供一个 Router Map 路由表,无需关注控制任何路由状态即可完成跳转后的路由更新。 - -通过微前端出现的背景和意义,可以了解到微前端主要是用于解决:应用增量升级、多技术体系并存、构建大规模企业级 Web 应用而诞生的。那么在基于 SPA 的微前端架构中也可以了解到,目前微前端主要是采用应用分而治之 + 动态加载 + SPA 应用的模式来解决大规模应用带来的一系列问题。在以组件为颗粒度的 SPA 应用中组件内部是不需要关心路由的,但是在微前端中主要通过应用维度来拆分,那么拆分的应用也可能是一个独立的 SPA 应用,那么此时主应用与子应用的关系如何编排呢? - -微前端应用中理想的路由调度,假设存在一个 Garfish 站点,这个站点它是由主应用+三个子应用构成,主应用的 basename 为 /demo,并存在三个 Tab 分别指向跳转至不同的应用,理想的路由效果: - -1. 在点击 vue-app Tab,跳转至 /demo/vue-app 路由后,分别激活 vue-app 下,为 Vue 类型的 A 应用和 B 应用,并激活 A 应用和 B 应用中的 Home 组件 -2. 点击 React-app Tab 进入到 /demo/react-app 路由后,分别激活 react-app 下,为 React 类型的 C 应用,并激活 C 应用的 Home 组件 -3. 在激活 C 应用的基础上,点击 Detail 按钮,跳转至 /demo/react-app/detail,并激活 C 应用的 detail 组件。 -4. 点击浏览器返回按钮展示,跳转 /demo/react-app/detail,并激活 C 应用的 Home 组件,至此完成浏览器的基本路由跳转能力。 - -![image](https://user-images.githubusercontent.com/27547179/165337076-752ff44b-397f-4c02-a755-252e22ae4813.png) - -> 不考虑任何路由处理的场景 - -假设存在一个 Garfish 站点,这个站点它是由主应用+一个子应用构成。由于 Garfish 采用的是 SPA 架构,子应用与主应用所处于同一个执行上下文,子应用的路由原样反应在主应用上。 - -![image](https://user-images.githubusercontent.com/27547179/165337201-16a88ecb-5a1e-4227-8238-d00799ab34a6.png) - -那么此时分别跳转到:/home、/detail 路由会发现哪些问题呢? - -- 假定跳转的方法可以同时触发主子应用路由更新,主应用路由和子应用路由会同时发生抢占情况,后渲染的组件会覆盖先渲染的路由组件 -- 在触发路由跳转方后,只有主应用视图触发刷新、只有子应用视图刷新、或都不刷新 - - 「视图的路由状态维护在框架内部」,通过原生跳转无法触发视图更新 - -此时当分别跳转到:/home、/detail、/test 路由时分别触发对应的组件视图,但是倘若子应用路由中也存在 /detail 视图呢,由于应用的开发采用分治的模式,应用的开发从空间和时间上都是分离的,无法保证应用间的路由不发生路由抢占的情况。 - -「通过 history 路由跳转无法保证应用能够触发视图更新」,在通过 history api 进行路由跳转时,是无法触发应用视图更新,假设存在一个 React 应用 A,存在一个组件视图 Test,分别通过 React 提供的路由方法跳转和原生的路由跳转进行观察: - -![image](https://user-images.githubusercontent.com/27547179/165337244-1649b3a5-0048-4bad-a836-247a95c0ceea.png) - -Hash 和 History 路由模式 -目前主流的 SPA 前端应用基本上都支持两种路由模式,一种是:hash 模式、另一种则是 History 路由模式,两者的优劣和使用并不在本文的讨论范围之内,这里仅做在微前端这种分离式开发模式下的介绍,在微前端这种分离式 SPA 应用开发的模式下该选择哪种路由模式,以及多 SPA 应用下他们的路由应该如何编排: -正常路由情况 -假设站点地址为:http://garfish.bytedance.com - -- 主应用 history 模式、子应用 history 模式 - - 主应用(basename: /example): - - 主应用所有路由基于:http://garfish.bytedance.com/example - - 例如跳转到:/appA,http://garfish.bytedance.com/example/appA/ - - 子应用(basename: /example/appA): - - 子应用所有路由基于:http://garfish.bytedance.com/example/appA - - 跳转到子应用的 /detail 页,http://garfish.bytedance.com/example/appA/detail - - 特点: - - 当主子应用分别为 history 模式时,子应用的路由基于主应用基础路由并带上自己的业务路由 - - 路由同步到主应用路由上,通过 子应用 scope 命名空间隔离(子应用 A,提供 appA 的 scope)主应用和其他应用的路由冲突,并将子应用 - - 路径符合用户和开发者认知和理解 - - 支持嵌套层级使用,并继续通过 scope 的命名空间保证路由可读 -- 主应用 history 模式、子应用 hash 模式 - - 主应用(basename: /example) - - 主应用所有路由基于:http://garfish.bytedance.com/example - - 例如跳转到:/appA,http://garfish.bytedance.com/example/appA/ - - 子应用(basename: /example/appA): - - 子应用所有路由基于:http://garfish.bytedance.com/example/appA - - 从主应用:http://garfish.bytedance.com/example/appA,跳转到子应用的 /detail 页,http://garfish.bytedance.com/example/appA#/detail - - 特点: - - 在一定程度上具备主子应用都为 history 模式的优势,不支持嵌套层级使用 - - 目前多数框架都不支持以 hash 值作为 basename - - 可读性尚可 - -异常路由情况 - -- 主应用 hash 模式、子应用 history 模式 - - 主应用(basename: /example) - - 主应用所有路由基于:http://garfish.bytedance.com/example - - 例如跳转到:/detail,http://garfish.bytedance.com/example#/appA - - 子应用(basename: /example#/appA): - - 子应用所有路由基于:http://garfish.bytedance.com/example#/appA - - 跳转到子应用的 /detail 页,http://garfish.bytedance.com/example/detail#/appA - - 特点: - - 「路由混乱」,不符合用户和开发者直觉 - - 目前多数框架都不支持以 hash 值作为 basename -- 主应用 hash 模式、子应用 hash 模式 - - 主应用(basename: /example) - - 主应用所有路由基于:http://garfish.bytedance.com/example - - 例如跳转到:/detail,http://garfish.bytedance.com/example#/appA - - 子应用(basename: /example#/appA): - - 子应用所有路由基于:http://garfish.bytedance.com/example#/appA - - 跳转到子应用的 /detail 页,http://garfish.bytedance.com/example#/detail - - 特点: - - 「路由混乱」,不符合用户和开发者直觉 - - 目前多数框架都不支持以 hash 值作为 basename - - 可能与主应用或其他子应用发生路由冲突 - -#### Garfish Router 如何处理路由 - -通过上面理想的路由模式案例发现,微前端应用拆分成子应用后,子应用路由应具备自治能力,可以充分的利用应用解耦后的开发优势,但与之对应的是应用间的路由可能会发生冲突、两种路由模式下可能产生用户难以理解的路由状态、无法激活不同前端框架的下带来的视图无法更新等问题。 -目前 Garfish 主要提供了以下四条策略 - -- 提供 Router Map,减少典型中台应用下的开发者理解成本 -- 为不同子应用提供不同的 basename 用于隔离应用间的路由抢占问题 -- 路由发生变化时能准确激活并触发应用视图更新 - -> Router Map 降低开发者理解成本 - -在典型的中台应用中,通常可以将应用的结构分为两块,一块是菜单另一块则是内容区域,依托于现代前端 Web 应用的设计理念的启发,通过提供路由表来自动化完成子应用的调度,将公共部分作为拆离后的子应用渲染区域。 - -![image](https://user-images.githubusercontent.com/27547179/165337300-a82aa763-4c70-474f-a33a-dabc7843178b.png) -![image](https://user-images.githubusercontent.com/27547179/165337326-29590a81-4531-47a9-abf7-c1c3b647a2b8.png) - -> 自动计算出子应用所需的 basename -> 当应用处于激活状态时,根据应用的激活条件自动计算出应用所需的基础路径,并在渲染时告诉框架,以便于应用间路由不发生冲突。 - -![image](https://user-images.githubusercontent.com/27547179/165337379-43506a80-71e9-4219-a14d-0f05dd64cfcb.png) - -如何有效的触发不同应用间的视图更新 -目前主流框架实现路由的方式并不是监听路由变化触发组件更新,让开发者通过框架包装后的 API 进行跳转,并内部维护路由状态,在使用框架提供 API 方法发生路由更新时,内部状态发生变更触发组件更新。 -由于框架的路由状态分别维护在各自的内部,那么如何保证在路由发生变化时能及时有效的触发应用的视图更新呢,答案是可以的,目前主要有两种实现策略: - -1. 收集框架监听的 popstate 事件 -2. 主动触发 popstate 事件 - 因为目前支持 SPA 应用的前端框架都会监听浏览器后退事件,在浏览器后退时根据路由状态触发应用视图的更新,那么其实也可以利用这种能力主动触发应用视图的更新,可以通过收集框架的监听事件,也可以触发 popstate 来响应应用的 popstate 事件 - -## 微前端的优点 - -- 适用于大规模 Web 应用的开发 -- 更快的开发速度 -- 支持迭代可开发和增强升级 -- 拆解后的部分降低了开发者的理解成本 -- 同时具备 UX 和 DX 的开发模式 - -## 微前端的缺点 - -- 复杂度从代码转向基础设施 -- 整个应用的稳定性和安全性变得更加不可控 -- 具备一定的学习和了解成本 -- 需要建立全面的微前端周边设施,才能充分发挥其架构的优势 - - 调试工具 - - 监控系统 - - 上层 Web 框架 - - 部署平台 - -## 何时使用微前端 - -- 大规模企业级 Web 应用开发 -- 跨团队及企业级应用协作开发 -- 长期收益高于短期收益 -- 不同技术选型的项目 -- 内聚的单个产品中部分需要独立发布、灰度等能力 -- 微前端的目标并非用于取代 Iframe - - 应用的来源必须可信 - - 用户体验要求更高 - -## 总结 - -微前端概念的出现是前端发展的必然阶段,PC 互联网转向移动互联网时代时,PC 的场景并未完全被消灭,反而转向了衍生出了更多沉浸感更高、体验感更强的应用,与之对应的应该是出现新的架构模式来应对这些应用规模的增长。 - -微前端也并非银弹,采用微前端后复杂度并未凭空消失,而是由代码转向了基础设施,对架构设计带来了更大的挑战,并且在新的架构下需要设计并提供更多的周边工具和生态来助力这一新的研发模式。 - -本文更多的是从背景和设计层面讲清楚微前端解决方案应具备哪些能力,以及核心模块的设计。 - -## 参考资料 - -- 如何设计微前端中的主子路由调度:https://mp.weixin.qq.com/s/TAXP7ipDdtb2Jb-L3QHszA -- 如何取巧实现一个沙箱:https://mp.weixin.qq.com/s/Mg3fU0WvZUQnlWHdxc-b5A -- 微服务架构及其最重要的 10 个设计模式:https://www.infoq.cn/article/kdw69bdimlx6fsgz1bg3 -- single-spa:https://github.com/single-spa/single-spa diff --git a/website/docs/blog/hmr.md b/website/docs/blog/hmr.md deleted file mode 100644 index c9917fe26..000000000 --- a/website/docs/blog/hmr.md +++ /dev/null @@ -1,299 +0,0 @@ ---- -title: 热更新问题 -slug: /blog/hmr -order: 2 ---- - -> 1. 微前端是为了解决将复杂的单体应用以功能或业务需求垂直的切分成更小的子系统而设计的一套解决方案,主应用和子应用可独立开发、独立部署。微前端模式下主、子应用都是独立的应用,微前端作为运行在主、子应用之下的框架层,不会干涉主、子 应用在 dev 模式下的热更新能力。 -> 2. 在微前端场景下,主、子应用的热更新能力需要构建工具层提供相应的配置(例如 webpack), garfish 不默认提供热更新的能力。 -> 3. 但是在微前端场景下,由于应用场景的特殊性,我们也会针对各种场景下的热更新情况作出相应的说明与配置示例,期望能给业务方提供相应的参考。 - -## 什么是模块热更新? - -模块热更新也叫 HMR,全称是 Hot Module Replacement,指当你在更改并保存代码时,构建工具将会重新进行编译打包,并将新的包模块发送至浏览器端,浏览器用新的包模块替换旧的,从而可以在不刷新浏览器的前提下达到修改的功能。 - -## 模块热更新常用方案 - -### 配置 webpack 的 hot.module 回调 - -```js -// webpack.config.js -module.exports = { - devServer: { - hot: true, - }, -} - -// index.tsx -import ReactDOM from 'react-dom'; -import App from './components/App'; - -// 设置 hot.module 回调开启热更新: -if ((module as any).hot) { - (module as any).hot.accept(['./components/App'], () => { - ReactDOM.render(, document.getElementById('root')); - }); -} -``` - -### react-fast-refresh 插件 - -> React 官方提供,相比于 react-hot-loader,容错能力更高。 - -```js -// webpack.config.js -const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin'); -const isDevelopment = process.env.NODE_ENV !== 'production'; -const HtmlWebpackPlugin = require('html-webpack-plugin'); - -module.exports = { - entry: './index.js', - module: { - rules: [ - { - test: /\.js$/, - exclude: /node_modules/, - loader: 'babel-loader', - options: { - presets: ['@babel/env', '@babel/preset-react'], - plugins: [require.resolve('react-refresh/babel')], // 为 react-refresh 添加 - }, - }, - ], - }, - plugins: [ - isDevelopment && new ReactRefreshPlugin(), // 为 react-refresh 添加 - new HtmlWebpackPlugin({ - template: './index.html', - }), - ], -}; -``` - -### react-hot-loader 插件 - -1. react-hot-loader 对代码侵入性较大,需要使用 `hot` 包裹入口组件。 -2. 其次,如果使用 ts-loader(没有使用 babel-loader) 去编译 ts 文件的话,使用 react-hot-loader 会不成功,因为 react-hot-loader 依赖于 babel-loader,所以对于使用 ts-loader 的项目来说不太友好。 - -> React-Hot-Loader is expected to be replaced by React Fast Refresh. Please remove React-Hot-Loader if Fast Refresh is currently supported on your environment -- 官网 - -```js -// webpack.config.js -module.exports = { -// 1. 在入口添加 react-hot-loader/patch, 保证 react-hot-loader 在 react 和 react-dom 之前加载 - entry: ['react-hot-loader/patch', './src'], - ... - // 2. 设置 ts/tsx 的编译方式,使用 babel-loader 时在 options 中添加 plugins - { - test: /\.[jt]sx?$/, - exclude: /node_modules/, - use: { - loader: "babel-loader", - options: { - cacheDirectory: true, - babelrc: false, - presets: [ - [ - "@babel/preset-env", - ], - "@babel/preset-typescript", - "@babel/preset-react", - ], - plugins: [ - // plugin-proposal-decorators is only needed if you're using experimental decorators in TypeScript - ["@babel/plugin-proposal-decorators", { legacy: true }], - ["@babel/plugin-proposal-class-properties", { loose: true }], - "react-hot-loader/babel", // 添加 react-hot-loader 插件 - ], - }, - }, - } - // ... other configuration options - resolve: { - // 3. 设置 @hot-loader/react-dom,支持 React Hooks - alias: { - "react-dom": "@hot-loader/react-dom", - }, - },}; - -// App.js -import { hot } from 'react-hot-loader/root'; -const App = () =>
Hello World!
; -export default hot(App); -``` - -## 微前端不同场景下热更新表现 - -首先,请确认微前端应用的构建配置已按照推荐配置进行了设置: - -```js -// webpack.config.js -module.exports = { - output: { - // 开发环境设置 true 将会导致热更新失效 - clean: process.env.NODE_ENV === 'production' ? true : false, - filename: '[name].[contenthash].js', - chunkFilename: '[name].[contenthash].js', - // 需要配置成 umd 规范 - libraryTarget: 'umd', - // 修改不规范的代码格式,避免逃逸沙箱 - globalObject: 'window', - jsonpFunction: 'garfish-demo-react17', - // 保证子应用的资源路径变为绝对路径 - publicPath: 'http://localhost:8080', - }, -}; -``` - -### 主、子 应用都在本地 - -- 支持主应用热更新; -- 支持子应用热更新; - -### 主应用线上、子应用线下 - -- 子应用独立启动时,子应用热更新能力不受影响; -- 在微前端模式下的子应用(即主应用线上加载的线下子应用) - - 【若当前域名为子应用域名】:子应用 hmr 能力不受影响; - - 【若当前域名为主应用域名】:需要指定 ws 的连接地址为本地 ws 连接 - -```js -// 以 webpack 为例,可以通过 devServer 的 client.webSocketURL 来指定 ws 地址 -// 值得注意的是,当本地地址指定为 0.0.0.0 时,ws 指定为本地并未生效, 即依然为ws的默认连接地址(当前域名) -// 可以指定本地地址 localhost 或者 127.0.0.1 ,请保证该 ws 连接有效 - -module.exports = { - devServer: { - hot: true, - open: true, - historyApiFallback: true, - port, - headers: { - 'Access-Control-Allow-Origin': '*', - }, - allowedHosts: 'all', - // 配置 webSocketURL 地址为本地 ws, 达到微前端模式下子应用热更新的能力 - client: { - webSocketURL: 'ws://localhost:8091/ws', // ok - // webSocketURL: 'ws://127.0.0.1:8091/ws', // ok - // webSocketURL: 'ws://0.0.0.0:8091/ws', // wrong - - // webSocketURL: { - // hostname: 'localhost', // ok - // hostname: '127.0.0.1', // ok - // hostname: '0.0.0.0', // wrong - // pathname: '/ws', - // password: 'dev-server', - // port: 8091, - // protocol: 'ws', - // username: 'webpack', - // }, - }, - }, -}; -``` - -## 常见问题 - -### 子应用热更新未生效 - -主应用线下、子应用线下场景: - -- 首先检查子应用作为独立应用启动时,是否具备热更新能力。 - - 如果子应用运行没有 HMR 能力,需要排查问题 - - 若使用了 react-fast-refresh。webpack 的  externals  配置项会导致  react-refresh  失效,可在  dev 环境下可以先关闭配置。 - - 若使用了 react-fast-refresh。react-refresh 最低支持版本  react-dom@16.9+,如果热更新没有生效,请确认版本是否满足要求。 - - -- 如果子应用作为独立应用启动时,具备热更新能力,但微前端模式下未生效,可能原因: - - - 若主应用使用了 react-fast-refresh webpack 插件作为热更新配置,请关闭该配置: - - ```js - // webpack 场景,禁用 react-fast-refresh ,可改用 webpack hot.module 回调 - // 或使用 react-hot-loader - plugins: [ - // 微前端场景下子应用热更新需要关闭 react-fast-refresh, 否则子应用热更新不会生效 - // isDevelopment && new ReactRefreshWebpackPlugin() - ], - ``` - - - 禁用 react-fast-refresh 后,根组件可使用 webpack hot.module 回调,达到热更新效果 - - ```js - // 根组件使用 webpack hot.module 回调,达到热更新效果 - // index.tsx - import ReactDOM from 'react-dom'; - import App from './components/App'; - - // 设置 hot.module 回调开启热更新: - if ((module as any).hot) { - (module as any).hot.accept(['./components/App'], () => { - ReactDOM.render(, document.getElementById('root')); - }); - }; - ``` - - - 禁用 react-fast-refresh,也可以使用 react-hot-loader ,达到热更新效果 - - ```js - // App.tsx - import { hot } from 'react-hot-loader'; - const RootComponent = () => { - ... - } - export default hot(module)(RootComponent); - - // index.tsx - import ReactDOM from 'react-dom'; - import App from './components/App'; - - // 设置 hot.module 回调开启热更新: - if ((module as any).hot) { - (module as any).hot.accept(['./components/App'], () => { - ReactDOM.render(, document.getElementById('root')); - }); - }; - ``` - -主应用线上、子应用线下场景: - -- 【若在主应用域名下】 - - - 观察子应用 ws 连接是否正常,若 ws 连接失败需要指定 ws 地址为本地 ws 地址; - -- 【若在子应用域名下】 - - 正常情况下子应用的 hmr 能力应不受影响。若出现 ws 连接正常,资源请求正常,页面未正确更新。若使用的是 react-fast-refresh 插件,请确认项目中该插件仅注册了一次(一般情况下我们一次性也需要跑一个 dev 的应用),原因是 react-refresh 中存在防重复注入机制,若加载多次,新的 webpack runtime 中 劫持 **REACT_DEVTOOLS_GLOBAL_HOOK** 相关的代码并不会再次被执行。当代码变更 webpack 进行热更新时,因为闭包的原因,mountedRootsSnapshot 这个变量寻找的是之后加载的 runtime 里定义的模块里的变量,长度为 0,直接跳过更新阶段。这也是主、子应用均为 dev 模式下子应用若需要热更新,那么主应用需要关闭 react-fast-refresh 的原因。 - -```js -/* global __react_refresh_library__ */ - -const safeThis = require('core-js-pure/features/global-this'); -const RefreshRuntime = require('react-refresh/runtime'); - -if (process.env.NODE_ENV !== 'production') { - if (typeof safeThis !== 'undefined') { - var $RefreshInjected$ = '__reactRefreshInjected'; - // Namespace the injected flag (if necessary) for monorepo compatibility - if ( - typeof __react_refresh_library__ !== 'undefined' && - __react_refresh_library__ - ) { - $RefreshInjected$ += '_' + __react_refresh_library__; - } - - // Only inject the runtime if it hasn't been injected - if (!safeThis[$RefreshInjected$]) { - // Inject refresh runtime into global scope - RefreshRuntime.injectIntoGlobalHook(safeThis); - - // Mark the runtime as injected to prevent double-injection - safeThis[$RefreshInjected$] = true; - } - } -} -``` - -### 主应用热更新后子应用内容丢失 - -这种情况发生在主、子 应用都为本地的场景下。在子应用页面下主应用热更新后子应用内容丢失。 -此问题 garfish 方案已解决。请升级 garfish 至最新版本。 diff --git a/website/docs/blog/sourcemap.md b/website/docs/blog/sourcemap.md deleted file mode 100644 index 88765841a..000000000 --- a/website/docs/blog/sourcemap.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: 错误处理和 sourcemap -slug: /blog/sourcemap -order: 3 ---- - -## 背景 - -微前端场景下,存在沙盒机制,基于 eval 和 new Function 的形式去实现沙箱机制。在手动执行代码的情况下,会产生堆栈丢失、sourcemap 还原错行等问题。 - -## 解决方案 - -1. 修改代码执行方式,开发环境可用 - -> 解决堆栈错行 - -- step1:升级主应用至 garfish 至最新版本 - -2. 新增 webpack 插件,解决生产环境问题堆栈还原问题 - -> 子应用与 Garfish 相关微前端配置可以自动生成,解决代码压缩后在 Garfish 沙箱内执行堆栈异常 - -```js -// webpack配置 -const webpack = require('webpack'); - -config.plugins = [ - new webpack.BannerPlugin({ - banner: 'Micro front-end', - }); -] -``` - -## 具体问题 - -## 堆栈丢失问题 - -使用 eval、new Function 去执行函数,如果在错误抛出的时候,堆栈是不完整的,只会显示到 eval 或 new Function 执行的那行。 -如 - -```js -var str = ` - var a = 1; - throw Error(123) -`; -eval(str); -``` - -错误抛出的位置是 eval 的这行,(new Function 同理)。 -![image.png](https://tosv.byted.org/obj/eden-internal/ozpmyhn_lm_hymuPild/ljhwZthlaukjlkulzlp/sourcemap1.png) - -这也是此前许多使用 Garfish 的用户遇到的一个问题,js 执行出错,但是缺少堆栈,导致排查困难。 - -## 解决方法 - -对于此问题,浏览器是提供了相关解决方案来解决的,那就是 sourceURL。 -( MDN:https://developer.mozilla.org/en-US/docs/Tools/Debugger/How_to/Debug_eval_sources ) - -我们还是拿上面的例子,增加了 sourceURL - -```js -var str = ` - var a = 1; - throw Error(123) -//# sourceURL=./index.js -`; -eval(str); -``` - -可以看到有了具体的堆栈。 - -于是 Garfish 执行代码的形式变成,这样抛出的错误就有详细的堆栈,能够解决看不到堆栈的问题。 - -```js -new Function(' - ...code -//# sourceURL=url -' -``` - -## sourcemap 对应错误 - -### 错行 - -由于使用 new Function 来执行,加上拼接了一些变量,所以使用构建生成的 sourcemap 来还原会导致错行的问题。 -源码 - -```js -// code - -// 沙箱里执行的代码 -function (window) { - with(window) { - // code - } -} -``` - -可以看到使用 sourcemap 还原的时候会错两行,这也是很多使用 Garfish 的同学遇到的问题,sourcemap 定位错误,虽然能够还原一定的情况,但是对于 debug 来说,还是比较蛋疼的。 - -#### 解决方法 - -使用 eval 替代 new Function,同时将拼接的代码放置于同一行。 - -形如 - -```js -eval(function(window) {{with} { //code -}} -``` - -这样可以解决错行的问题。 - -### 错列 - -上面的解决方法可以解决行数对应不上的问题,在开发环境基本没有问题,因为代码没有进行压缩。 -由于在前面增加了"function(window)",列数对应还是有问题的,特别是对于生产环境还是有比较大的问题,因为生产环境代码会压缩成一行,所以列数对应不上就成了大问题。 - -### 方案对比 - -1. 在运行时进行错误抛出的时候修正列数 - 我们可以计算出错的列数的数字,catch 住错误然后对 error 的 stack 进行修改。 - 问题:无法捕获所有的错误,有的错误不是在编译阶段抛出,可能在页面渲染或者交互的时候抛出的,这些错误 garfish 无法捕获,也尝试重写 Error 对象,但是无法涵盖全部情况。 - -- 捕获所有异常 - - window.onerror - - 常见异步 api 封装: - - setTimeout、promise 捕获异常 - - Dom - - 事件流都包了一层 - -2. 在编译的时候修正列数 -3. 在编译阶段修正,如生成的 sourcemap 就进行列的偏移,但是这会导致独立运行的时候子应用堆栈不正确。 - 所以经过考虑,可能在生产编译产物和 sourcemap 的时候,就默认给 js 文件顶部生产一行注释,不仅可以解决行数列数对应不上问题,也可以解决独立运行子应用的问题。对于不经过编译的 cdn 加载文件有问题。 diff --git a/website/docs/guide/API/loadApp.md b/website/docs/guide/API/loadApp.md deleted file mode 100644 index 46e85894b..000000000 --- a/website/docs/guide/API/loadApp.md +++ /dev/null @@ -1,253 +0,0 @@ ---- -title: Garfish.loadApp -slug: /api/loadApp -order: 4 ---- - -与 `Garfish.run` 函数不同,run 方法是在执行后,当路由发生变化时会自动的匹配符合条件的应用执行渲染和销毁逻辑,`Garfish.loadApp` 提供了更加灵活的加载微前端应用模式,通过 `Garfish.loadApp` API 可以手动控制子应用的渲染预销毁 - -### 示例 - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - - - - -```jsx -import React from 'react'; -import Garfish from 'garfish'; -import { BrowserRouter, Route, Link, Switch } from 'react-router-dom'; - -function VueApp(basename) { - useEffect(async () => { - const app = await Garfish.loadApp('vue-app', { - cache: true, - basename, - domGetter: '#container', - entry: 'http://localhost:8092', - }); - // 若已经渲染触发 show,只有首次渲染触发 mount,后面渲染都可以触发 show 提供性能 - app.mounted ? app.show() : await app.mount(); - return () => app.hide(); - }); - - return
; -} - -function App() { - return ( - - VueApp - - // 分配一个路由给 vue 应用 - VueApp('/vue-app')}> - - - ); -} -``` - -
- - -> 提供 ReactApp 的 Vue 组件 - -```html - - - - -``` - -> 将 ReactApp 组件添加到路由中 - -```js -// index.js -import Vue from 'vue'; -import VueRouter from 'vue-router'; -import ReactApp from './component/ReactApp.vue'; - -const router = new VueRouter({ - mode: 'history', - base: '/', - routers: [{ path: '/react-app', component: ReactApp }], -}); - -new Vue({ - router, - store, - render: (h) => h(App), -}).$mount('#app'); -``` - - -
- -### 参数 - -
-
name: string
-
子应用的名称,也是子应用的的唯一 id,若 name 的应用已经通过 run、setOptions 注册过,提供 name 时将直接获取应用的信息
-
Options: AppInfo
-
-
basename?: string(默认值: /)
-
子应用的基础路径,子应用所有的路由都在此基础上
-
entry: string
-
子应用的入口资源地址,可以为 HTML 子应用入口地址,也可以为JS 子应用入口地址
-
domGetter?: string | () => Element
-
子应用的挂载点,提供 string 类型时需要其值是 `cssSelector`,Garfish 内部会使用 `document.querySelector(domGetter)` 去选中子应用的挂载点。当提供函数时,子应用在路由驱动挂载和手动挂载时将会执行该函数并且期望返回一个 dom 元素
-
cache?: boolean(默认值: true)
-
在调用 loadApp 时若已经加载过应用实例将返回相同的应用实例
-
props?: Object
-
传递给子应用的参数,子应用的生命周期将接受到该参数
-
-
- -### 返回值 - -`AppInstance` - -
-
mounted: boolean
-
是否已经触发 mount 渲染函数
-
mount: Function
-
触发子应用的渲染流程:创建子应用的渲染容器、创建一个子应用的执行环境、执行子应用的所有代码、执行 provider 提供的子应用 render 函数
-
show: Function
-
触发子应用的显示流程:显示子应用的渲染容器、执行子应用的 render 函数(不会创建新的执行上下文)
-
unmount: Function
-
触发子应用的销毁流程:移除子应用的渲染容器、销毁子应用的执行上下文、子应用在渲染过程中产生的副作用都会被清除、执行 provider 提供的子应用 destroy 函数
-
hide: Function
-
触发子应用的隐藏流程:隐藏子应用的渲染容器、执行 provider 提供的子应用 destroy 函数
-
- -### 不需要缓存的手动加载方案: - -```js -// options 是可选的,如果不传,默认会从 Garfish.options 上深拷贝一份过来 -const app = await Garfish.loadApp('appName', { - domGetter: () => document.getElementById('id'), -}); - -// 渲染:编译子应用的代码 -> 创建应用容器 -> 调用 provider.render 渲染 -// 注意:由于沙箱的实现,相同应用重复渲染,可能会导致内存泄漏问题 -const success = await app.mount(); -// 卸载:清除子应用的副作用 -> 调用 provider.destroy -> 销毁应用容器 -const success = await app.unmount(); -``` - -### 需要缓存的手动加载方案(推荐使用缓存) - -```js -const cache = true; -const app = await Garfish.loadApp('appName', { - domGetter: () => document.getElementById('id'), -}); - -// 渲染 -if (cache && app.mounted) { - const success = app.show(); -} else { - const success = await app.mount(); -} -// 卸载 -const success = app.hide(); -``` - -### app.mount 做了哪些事情 - -1. 创建 `app` 容器并添加到文档流上 -2. 编译子应用的代码 -3. 拿到子应用的 `provider` -4. 调用 `app.options.beforeMount` 钩子 -5. 调用 `provider.render` -6. 将 `app.display` 和 `app.mounted` 设置为 `true` -7. 将 `app` set 到 `Garfish.activeApps` 中 -8. 调用 `app.options.afterMount` 钩子 - > 如果渲染失败,`app.mount` 会返回 `false`,否则渲染成功会返回 `true`,你可以根据返回值做对应的处理。 - -### app.unmount 做了哪些事件 - -1. 调用 `app.options.beforeUnmount` 钩子 -2. 调用 `provider.destroy` -3. 清除编译的副作用 -4. 将 `app` 的容器从文档流上移除 -5. 将 `app.display` 和 `app.mounted` 设置为 `false` -6. 在 `Garfish.activeApps` 中移除当前的 `app` 实例 -7. 调用 `app.options.afterUnmount` 钩子 - > 同上,可以根据返回值来判断是否卸载成功。 - -### app.show 做了哪些事件 - -1. 将 `app` 的容器添加到文档流上 -2. 调用 `provider.render` -3. 将 `app.display` 设置为 `true` - > 同上,可以根据返回值来判断是否渲染成功。 - -### app.hide 做了哪些事件 - -1. 调用 `provider.destroy` -2. 将 `app` 的容器从文档流上移除 -3. 将 `app.display` 设置为 `false` - > 同上,可以根据返回值来判断是否隐藏成功。 - -### 缓存 - -手动加载提供的了 `cache` 功能,以便复用 `app`,避免重复的编译代码造成的性能浪费,在 `Garfish.loadApp` 时,传入 `cache` 参数就可以。 - - 例如下面的代码: - -```js -const app1 = await Garfish.loadApp('appName', { - cache: true, -}); - -const app2 = await Garfish.loadApp('appName', { - cache: true, -}); - -console.log(app1 === app2); // true -``` - -实际上,对于加载的 `promise` 也会是同一份,例如下面的 demo - -```js -const promise1 = Garfish.loadApp('appName', { - cache: true, -}); - -const promise2 = Garfish.loadApp('appName', { - cache: true, -}); - -console.log(promise1 === promise2); // true - -const app1 = await promise1; -const app2 = await promise2; -console.log(app1 === app2); // true -``` diff --git a/website/docs/guide/advance/__meta__.md b/website/docs/guide/advance/__meta__.md deleted file mode 100644 index 6242cca91..000000000 --- a/website/docs/guide/advance/__meta__.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: 进阶 -collapsed: true -order: 5 ---- diff --git a/website/docs/guide/advance/nested.md b/website/docs/guide/advance/nested.md deleted file mode 100644 index 5935a9cdd..000000000 --- a/website/docs/guide/advance/nested.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: 嵌套场景 -slug: /guide/advance/nested -order: 2 ---- - -`Garfish` 目前的源码设计并没有针对嵌套场景进行非常好的兼容,因此不要在使用 Garfish 的嵌套场景,否则出现问题会导致问题难以排查。 - -## Garfish 为什么不容易支持嵌套场景 - -在正式介绍如何在嵌套场景下使用前,先简单介绍一下为什么 `Garfish` 现在并不推荐用户使用嵌套模式的原因: - -- `Garfish` 导出的是实例不是构造函数,多个项目通过 `npm` 包的方式引用始终都是同一个实例(Garfish 最终并没有考虑多实例的情况),因此嵌套场景下使用的都是同一个 `Garfish` 实例,同一个实例会带来很明显的弊端,全局配置会影响其他应用的使用 -- `Garfish` 路由驱动会劫持 `history` 等方法,沙箱会劫持 `dom` 的原型方法,这些劫持方法再应用销毁后进行恢复成本较高 - -## 嵌套场景如何使用 - -### 名称统一约束 - -由于在支持嵌套场景前,在 Garfish 中仅有两种项目类型:一种是主应用,另外一种是子应用,但是在支持嵌套场景后,他们的关系会有更多层次,因此约束一下他们之间的名称: - -- 「子应用」:本身就是一个单纯的应用,本身不包含其他应用 -- 「主应用」:包含其他的子应用,本身不作为子应用使用 -- 「微主应用」:包含其他子应用,并且本身也作为其他主应用的子应用 - -### 使用约束 - -在 「Garfish 为什么不容易支持嵌套场景」一节中提到 `Garfish` 目前的整体设计并不太适合嵌套场景的使用,因此希望通过一些约束来减少上述的使用问题,并且将约束后可能产生的影响也同步给用户,让用户根据实际情况进行判断。 - -由于 `Garfish` 并未直接导出构造函数,而是通过直接导出 `Garfish` 实例,因此在实际使用中要尽可能的避免实例上全局配置带来的影响: - -- 「主应用」、「微主应用」都不要使用 `Garfish.run`、`Garfish.setOptions`, 这两个 `API` 都会直接更改 `Garfish` 实例上的全局配置,可以通过 [`Garfish.loadApp`](/api/loadapp) 的方式加载子应用,这样可以保证不会对 `Garfish` 实例的全局配置产生影响 -- 如果「主应用」使用了 `Garfish.run` 的注意事项 - - 将配置放到 `AppInfo` 维度,这样不会对全局所有的 `App` 实例生效,只会对实际使用的 App 生效,这样会尽可能减少全局配置 - - 在 `Garfish.run` 中配置的生命周期函数不仅会触发主应用配置的加载、渲染销毁的 `hook`,在嵌套场景中「微主应用」的加载渲染子应用也会触发,因为嵌套场景使用的是同一个 `Garfish` 实例 - - 作为「微主应用」要清楚主应用上的全局配置,例如比较关键的沙箱配置,这些配置都会直接影响「微主应用」加载子应用的行为 -- 「微主应用」如何判断是由「主应用」加载的,需要主应用增加环境变量例如:`window.__GARFISH_PARENT__ = true` 等标识,这个时候「微主应用」可以根据标识决定是否独立渲染 -- 「微主应用」中需要保证应用的 `name` 不会与「主应用」列表的 `name` 不会发生冲突,因此为微主应用的子应用 `name` 增加特殊前缀避免与主应用发生冲突 -- 在使用 `Garfish.router`、`Garfish.channel` 等实例上的方法时,可能会受到「主应用」、「微主应用」的影响,例如: - - [`Garfish.router.push`](/api/router#garfishrouterpush) 的 `basename` 如果在「主应用」或者「微主应用」中设置了全局的 `basename` - - [`Garfish.channel`](/api/channel) 的实例在「主应用」或者「微主应用」都是同一个,如果使用了相同的事件名或者回调函数会互相应用 - - 在使用基础类型时都需要注意这些问题 -- `Garfish` 包的升级,会同时影响、主应用和微主应用 - -:::info 约束总结 - -- 不要使用 `Garfish.run`、`Garfish.setOptions` API、避免修改 `Garfish` 全局配置 -- 主应用增加环境标识,通过环境判断让微主应用能够独立运行 -- 将配置信息以子应用维度存放,放置 `AppInfo` 中 -- [`Garfish.loadApp`](/api/loadapp) 的方式加载、渲染微前端子应用 -- 使用 `Garfish` 实例的方法时,需要注意默认配置是否收到了全局配置或其他应用的影响 -- `Garfish` 包的升级,会同时影响、主应用和微主应用 - ::: diff --git a/website/docs/guide/advance/plugins.md b/website/docs/guide/advance/plugins.md deleted file mode 100644 index df13c989c..000000000 --- a/website/docs/guide/advance/plugins.md +++ /dev/null @@ -1,310 +0,0 @@ ---- -title: 插件指南 -slug: /guide/advance/plugins -order: 1 ---- - -import Highlight from '@site/src/components/Highlight'; -import BeforeLoad from '@site/src/components/lifeCycle/\_beforeLoad.mdx'; -import AfterLoad from '@site/src/components/lifeCycle/\_afterLoad.mdx'; -import ErrorLoadApp from '@site/src/components/lifeCycle/\_errorLoadApp.mdx'; -import BeforeEval from '@site/src/components/lifeCycle/\_beforeEval.mdx'; -import AfterEval from '@site/src/components/lifeCycle/\_afterEval.mdx'; -import BeforeMount from '@site/src/components/lifeCycle/\_beforeMount.mdx'; -import AfterMount from '@site/src/components/lifeCycle/\_afterMount.mdx'; -import ErrorMountApp from '@site/src/components/lifeCycle/\_errorMountApp.mdx'; -import BeforeUnmount from '@site/src/components/lifeCycle/\_beforeUnmount.mdx'; -import AfterUnmount from '@site/src/components/lifeCycle/\_afterUnmount.mdx'; -import ErrorUnmountApp from '@site/src/components/lifeCycle/\_errorUnmountApp.mdx'; -import OnNotMatchRouter from '@site/src/components/lifeCycle/\_onNotMatchRouter.mdx'; - -Garfish 框架引入了插件化机制,目的是为了让开发者能够通过编写插件的方式来扩展更多功能,或为自身业务定制个性化功能;同时框架的基础能力也都是通过插件机制来实现,确保框架核心足够精简和稳定。 - -## 插件能做什么 - -插件的功能范围没有严格的限制,一般有下面两种: - -1. 添加全局方法或增加默认参数 -2. 在应用的生命周期中自定义功能(例如:`Garfish router`、`Garfish sandbox`) - -## 编写插件 - -`Garfish Router` 增加了全局方法和应用的自动渲染和销毁能力,下面让我们来以 `Garfish router` 为例,如何编写一个插件,来实现路由的能力。 - -当插件被注册到 `Garfish` 框架时,将会调用插件函数并将 `GarfishInstance` 作为参数传递,函数的返回值中包括插件的基本信息:`name`、`version`,除了基本信息外最重要的则是包括 `hook`,`Garfish` 框架将在应用的整个生命周期中触发 `hook` 的调用,可以在 `hook` 中对信息进行二次处理或执行特定的功能。 - -让我们从编写插件函数开始,建议在单独的文件中创建它并将其导出,如下所示,以保持插件逻辑的整洁和分离,在实际开发过程中我们建议将实际插件的内容放置一个函数中返回,以便插件在实际调用时可接收参数 - -```ts -// plugins/router.ts -import type { interfaces } from 'garfish'; -// function return plugin -export function GarfishRouter(_args?: any) { - // Plugin code goes here - return function (GarfishInstance: interfaces.Garfish): interfaces.Plugin { - return { - name: 'garfish-router', - version: '1.2.1', - // ... - }; - }; -} -``` - -`Garfish Router` 的这个 `plugin` 期望达到的目标是通过提供的 `Router Map` 后 `Garfish` 框架能够自动的完成微前端应用的渲染和销毁调度,从而降低典型中台中管理应用销毁和渲染的工作,提升开发效率。那么要实现这个需求我们需要依次实现以下功能: - -- 扩展类型 - - `appInfo` 的类型,让 `appInfo` 类型提示支持 `activeWhen`、`basename` 等配置 - - `Garfish` 增加 `router` 类型 -- 为 `Garfish` 实例扩展 `router` 方法,用于实现路由跳转和路由监听等能力 -- 监听 `bootstrap hook`(该 hook 会在主应用触发 `Garfish.run` 后调用),触发 `bootstrap` 后 - - 劫持路由变化:改写 `history.push`、`history.replace`,监听 `popstate` 浏览器后退事件 - - 当路由发生变化时通过 `appInfo` 的 `activeWhen` 进行规则判断,对应用进行渲染和销毁 -- 监听 `registerApp hook`(该 hook 会在注册子应用时触发) - - 当有新注册应用时对新应用进行检验是否如何渲染条件,进行销毁 - -:::tip -Garfish Router 就是通过 Garfish 的 Plugin 机制实现,以下案例精简了大部分逻辑,主要介绍如何编写插件来扩展 Garfish 的整体功能,若想了解实现,请参考 [`Garfish Router plugin`](https://github.com/modern-js-dev/garfish/blob/260143bb70ca81c64069650ae278088a2ca8a62f/packages/router/src/index.ts) -::: - -```ts -import type { interfaces } from 'garfish'; -declare module 'garfish' { - // 为 GarfishInstance 添加 router 方法 - export default interface Garfish { - router: { - push: (info: { - path: string; - query?: { [key: string]: string }; - basename?: string; - }) => void; - replace: (info: { - path: string; - query?: { [key: string]: string }; - basename?: string; - }) => void; - }; - } - - export namespace interfaces { - // 为全局配置增加 autoRefreshApp、onNotMatchRouter 参数类型 - export interface Config { - onNotMatchRouter?: (path: string) => Promise | void; - } - - export interface AppInfo { - // 手动加载,可不填写路由 - activeWhen?: string | ((path: string) => boolean); - basename?: string; - } - } -} - -// 这里仅做伪代码的演示,功能无法正常运行 -export function GarfishRouter(_args?: { autoRefreshApp?: boolean }) { - return function (Garfish: interfaces.Garfish): interfaces.Plugin { - // 为 Garfish 实例添加 router 方法 - Garfish.router = { - push: ({ path }) => history.push(null, '', path), - replace: ({ path }) => history.replace(null, '', path), - }; - - return { - name: 'router', - version: '1.0.0', - // 在触发 Garfish.run 后启动路由监听,自动渲染和销毁应用 - bootstrap(options: interfaces.Options) { - let activeApp = null; - const unmounts: Record = {}; - const { basename } = options; - - const apps = Object.values(Garfish.appInfos); - - // 该函数会劫持 history 变化,当某个 appInfo 的 activeWhen 符合触发条件后会触发 active 回调 - // 提供 appInfo 信息,这个时候通过 Garfish.loadApp 加载该应用并进行销毁 - // 当某个 appInfo 处于已经渲染状态,并且在路由发生变化后处于销毁状态将会触发 deactive 回调 - // 通过 appInfo,触发缓存的 app 实例的销毁函数 - listenRouterAndReDirect({ - basename, - active: async (appInfo: interfaces.AppInfo, rootPath: string) => { - const { name, cache = true, active } = appInfo; - - // 当前应用处于激活状态后触发 - const app = await Garfish.loadApp(appInfo.name, { - basename: rootPath, - entry: appInfo.entry, - cache: true, - domGetter: appInfo.domGetter, - }); - - if (app) { - const isDes = cache && app.mounted; - isDes ? await app.show() : await app.mount(); - - unmounts[name] = () => { - const isDes = cache && app.mounted; - isDes ? await app.show() : await app.mount(); - }; - } - }, - deactive: async (appInfo: interfaces.AppInfo, rootPath: string) => { - const { name, deactive } = appInfo; - const unmount = unmounts[name]; - unmount && unmount(); - }, - autoRefreshApp, - notMatch: onNotMatchRouter, - apps, - listening: true, - }); - }, - - registerApp(appInfos) { - // 将新注册的应用信息注入到路由中 - const appList = Object.values(appInfos); - router.registerRouter(appList.filter((app) => !!app.activeWhen)); - // 触发路由的重定向,检测当前应用是否需要触发渲染 - initRedirect(); - }, - }; - }; -} -``` - -> 插件编写总结 - -- 若要为 `Garfish` 实例扩展方法,通过 `declare module` 直接扩展 `Garfish` 的 `interfaces`,然后通过插件函数获取 `Garfish` 的实例直接添加方法,用于扩展 `Garfish` 的能力 -- 可通过 `namespace interfaces` 直接扩展 `Garfish config` 和 `AppInfo` 配置 -- 在对应用用的生命周期中进行能力的扩展 - -## 插件公约 - -- 插件应该包括清晰的名称 -- 如果插件单独封装至 `npm` 包,在 `package.json` 中添加 `garfish-plugin` 关键词 -- 插件应该包括完备的测试 -- 插件应该具备完整的使用文档 -- 如果你觉得你的插件足够通用,请联系:zhouxiao.shaw@bytedance.com,评估后是否是和加入推荐列表 - -## 使用插件 - -通过调用 `Garfish.usePlugin` 方法将插件添加到你的应用程序中。 - -我们将使用在 [`如何编写插件`](#如何编写插件) 部分中创建的 `routerPlugin` 插件进行演示。 - -`usePlugin()` 方法第一个参数接收要安装的插件,在这种情况下为 `routerPlugin` 的返回值。 - -它还会自动阻止你多次使用同一插件,因此在同一插件上多次调用只会安装一次该插件,`Garfish` 内部通过插件执行后返回的 `name` 作为唯一标识来进行区分,在进行插件命名时,请确保不会和其他插件之间发生冲突。 - -```ts -import Garfish from 'garfish'; -import routerPlugin from './plugins/router'; - -Garfish.usePlugin(routerPlugin()); -``` - -## `usePlugin` - -通过 `Garfish.usePlugin` 可以注册插件 - -```ts -Garfish.usePlugin(plugin: (GarfishInstance: interfaces.Garfish)=> interfaces.Plugin) -``` - -## `plugin` - -### `name` - -- Type: `string` -- 插件的名称,作为插件的唯一标识和便于调试 - -### `version?` - -- Type: `string` -- 插件的版本号,用于观测线上环境使用使用的插件版本 - -### `beforeBootstrap?` - -- Type: `(options: interfaces.Options) => void` - - 该 `hook` 的第一个参数为 `Garfish.run` 提供的配置信息 -- Kind: `sync`, `sequential` -- Trigger: - - 在 [`Garfish.run`](/api/run) 调用后触发 - - 触发该 `hook` 时配置未注册到全局 - -### `bootstrap?` - -- Type: `(options: interfaces.Options) => void` - - 该 `hook` 的第一个参数为 `Garfish.run` 提供的配置信息 -- Kind: `sync`, `sequential` -- Trigger: - - 在 [`Garfish.run`](/api/run) 调用后触发 - - 触发该 `hook` 时配置已经注册到全局 -- Previous Hook: `beforeBootstrap` - -### `beforeRegisterApp?` - -- Type: `(appInfo: interfaces.AppInfo | Array) => void` - - 该 `hook` 的第一个参数为需要注册的应用信息 -- Kind: `sync`, `sequential` -- Trigger: - - 调用 [`Garfish.run`](/api/run) 且,提供了 `apps` 参数时触发 - - 直接通过 [`Garfish.registerApp`](/api/registerApp) 调用时 - - 触发该 `hook` 是子应用信息尚未注册成功 - -### `registerApp?` - -- Type: `(appInfo: interfaces.AppInfo | Array) => void` - - 该 `hook` 的第一个参数为需要注册的应用信息 -- Kind: `sync`, `sequential` -- Trigger: - - 调用 [`Garfish.run`](/api/run) 且,提供了 `apps` 参数时触发 - - 直接通过 [`Garfish.registerApp`](/api/registerApp) 调用时 - - 触发该 `hook` 是子应用信息注册成功 - -### beforeLoad - - - -### afterLoad - - - -### errorLoadApp - - - -### beforeMount - - - -### afterMount - - - -### beforeEval - - - -### afterEval - - - -### errorMountApp - - - -### beforeUnmount - - - -### afterUnmount - - - -### errorUnmountApp - - - -### onNotMatchRouter - - diff --git a/website/docs/guide/concept/__meta__.md b/website/docs/guide/concept/__meta__.md deleted file mode 100644 index 6a72807fb..000000000 --- a/website/docs/guide/concept/__meta__.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: 核心能力 -collapsed: true -order: 4 ---- diff --git a/website/docs/guide/concept/bridge.md b/website/docs/guide/concept/bridge.md deleted file mode 100644 index a218995df..000000000 --- a/website/docs/guide/concept/bridge.md +++ /dev/null @@ -1,431 +0,0 @@ ---- -title: bridge -slug: /guide/bridge -order: 1 ---- - -import Highlight from '@site/src/components/Highlight'; - -## 介绍 - -Garfish bridge 是 `garfish` 提供的帮助用户降低接入成本的工具函数,它能自动提供 `provider` 函数所需的应用生命周期函数 `render` 和 `destroy` ,并实现框架不同版本的兼容。封装底层实现,降低接入成本和出错概率。 - -:::info -1. garfish bridge 应用在子应用接入场景; -2. 使用 garfish bridge 后不再需要显示提供 `render` 和 `destroy` 函数; -3. 目前 garfish 仅针对 react 和 vue 框架提供 bridge 函数支持,支持的版本分别为 react v16、v17、v18,vue v2、v3; -4. garfish bridge 暂未针对构建工具如 webpack、vite 提供相应的构建工具插件,我们后期会针对这块能力进行补全,请持续关注; -::: - -## 工具包 -### @garfish/bridge-react - -[@garfish/bridge-react](https://www.npmjs.com/package/@garfish/bridge-react) 工具包是 garfish 为 react v16/v17 应用 提供的 bridge 工具函数包,其导出的 [reactBridge](/guide/bridge#reactbridgefor-react-v16v17) 可用于 react v16/v17 子应用的接入,`@garfish/bridge-react` 的使用见 [demo](/guide/demo/react#react-v16v17-导出)。 - -### @garfish/bridge-react-v18 - -[@garfish/bridge-react-v18](https://www.npmjs.com/package/@garfish/bridge-react-v18) 工具包是 garfish 为 react v18 应用 提供的 bridge 工具函数包,其导出的 [reactBridge](/guide/bridge#reactBridge) 可用于 react v18 子应用的接入,`@garfish/bridge-react-v18` 的使用见 [demo](/guide/demo/react#react-v18-导出)。 - -### @garfish/bridge-vue-v2 - -[@garfish/bridge-vue-v2](https://www.npmjs.com/package/@garfish/bridge-vue-v2) 工具包是 garfish 为 vue v2 应用 提供的 bridge 工具函数包,其导出的 [vueBridge](/guide/bridge#vuebridge) 可用于 vue v2 子应用的接入,`@garfish/bridge-vue-v2` 的使用见 [demo](/guide/demo/vue#vue2-导出)。 - -### @garfish/bridge-vue-v3 - -[@garfish/bridge-vue-v3](https://www.npmjs.com/package/@garfish/bridge-vue-v3) 工具包是 garfish 为 vue v3 应用 提供的 bridge 工具函数包,其导出的 [vueBridge](/guide/bridge#vuebridge) 可用于 vue v3 子应用的接入,`@garfish/bridge-vue-v3` 的使用见 [demo](/guide/demo/vue#vue3-导出)。 -## 安装 - - - - - ```bash npm2yarn - npm install @garfish/bridge-react --save - ``` - - - - - ```bash npm2yarn - npm install @garfish/bridge-vue-v2 --save - ``` - - - - - ```bash npm2yarn - npm install @garfish/bridge-vue-v3 --save - ``` - - - -## reactBridge(for react v16/v17/v18) - -reactBridge 是 `@garfish/bridge-react` 工具包为 react 子应用提供的 bridge 工具函数。 - -:::info -- 针对 react v16/v17 子应用,请使用 `@garfish/bridge-react` 工具包 -- 针对 react v18 子应用,请使用 `@garfish/bridge-react-v18` 工具包 -::: - -reactBridge 是 `@garfish/bridge-react` 或 `@garfish/bridge-react-v18` 工具包为 react 子应用提供的 bridge 工具函数。 -### Type - -```ts -function reactBridge(userOpts: Options): ( - appInfo: any, - props: any, -) => Promise<{ - render: (props: any) => any; - destroy: (props: any) => any; - update: (props: any) => any; -}>; -``` -### 示例 - -> 可访问 [react16 子应用](https://github.com/modern-js-dev/garfish/tree/main/dev/app-react-16)、 [react17 子应用](https://github.com/modern-js-dev/garfish/tree/main/dev/app-react-17)、[react18 子应用](https://github.com/modern-js-dev/garfish/tree/main/dev/app-react-18) 查看完整 demo - - - - -```ts -import { reactBridge } from '@garfish/bridge-react'; -import RootComponent from './components/root'; -import ErrorComponent from './components/ErrorBoundary'; - -export const provider = reactBridge({ - el: '#root', - rootComponent: RootComponent, - errorBoundary: () => , -}); -``` - - - - -```ts -import { reactBridge } from '@garfish/bridge-react-v18'; -import RootComponent from './components/root'; -import ErrorComponent from './components/ErrorBoundary'; - -export const provider = reactBridge({ - el: '#root', - rootComponent: RootComponent, - errorBoundary: () => , -}); -``` - - - - -### 参数 - -`Options` - -- el - - - Type: `string` - - 非必传 - - 子应用挂载点 - - 若子应用构建为 `JS` 入口时,不需要传挂载点,Bridge 将会以子应用的渲染节点作为挂载点; - - 若子应用构建成 `HTML` 入口时,则直接传入选择器,bridge 内部通过 `dom.querySelector` 来基于子应用的 `dom` 来找到挂载点; - -- rootComponent - - - Type:`React.ComponentType` - - 此参数和 `loadRootComponent` 至少传一个 - - 当前应用的顶层 React 组件,该组件中将接受到 garfish 传递的 appInfo 应用相关参数: - ```ts - // components/root.tsx - const RootComponent = ({ appName, basename, dom, props }) => { ... } - ``` - - 当同时传入了 `loadRootComponent` 参数时,`rootComponent` 参数将失效,且 `rootComponent` 组件不会默认接收到 garfish 传递的子应用相关参数; - -- loadRootComponent - - - Type:`loadRootComponentType = (opts: Record) => Promise;` - - 此参数和 `rootComponent` 至少传一个 - - 当前应用的顶层 React 组件,该组件中将接收到 garfish 传递的子应用相关参数: - - ```ts - // components/root.tsx - const RootComponent = ({ appName, basename, dom, props }) => { ... } - ``` - - - `loadRootComponent` 是一个函数,返回一个 Promise 对象,resolve 后需要返回当前 React 应用的顶层组件,该顶层组件含义与 `rootComponent` 含义相同。当需要在 render 前进行异步操作时,可使用 `loadRootComponent` 加入副作用逻辑。 - - `loadRootComponent` 将默认接收到 garfish 传递的子应用相关参数: - - ```ts - import { reactBridge } from "@garfish/bridge-react"; - export const provider = reactBridge({ - ..., - loadRootComponent: ({ basename, dom, appName, props }) => { - // do something async - return Promise.resolve(() => ); - } - }); - ``` - - 此时,`RootComponent` 接收到的参数取决于此处 `loadRootComponent` 传递的参数。 - - - 当同时传入了 `rootComponent` 参数时,`loadRootComponent` 的优先级更高, `rootComponent` 将失效; - -- errorBoundary - - - Type:`errorBoundary: (caughtError: boolean, info: string, props: any) => ReactNode | null;` - - 非必传 - - 设置应用的 errorBoundary 组件,`errorBoundary` 是一个函数,并在子应用发生错误时触发,该函数将传递 error 报错信息及报错相关应用堆栈信息: - - ```ts - import { reactBridge } from "@garfish/bridge-react"; - export const provider = reactBridge({ - ..., - errorBoundary: ( error, info ) => , - }); - ``` - - -## vueBridge(for vue v2) - -:::info -针对 vue v2 子应用,请使用 `@garfish/bridge-vue-v2` 工具包。 -::: - -vueBridge 是 `@garfish/bridge-vue-v2` 工具包为 vue v2 子应用提供的 bridge 工具函数。 - -### 类型 - -```ts -function vueBridge(userOpts: Options): ( - appInfo: any, - props: any, -) => Promise<{ - render: (props: any) => any; - destroy: (props: any) => any; - update: (props: any) => any; -}>; -``` - -### 示例 - -> 可访问 [vue2 子应用](https://github.com/modern-js-dev/garfish/tree/main/dev/app-vue-2) 查看完整 demo - -```ts -import { vueBridge } from '@garfish/bridge-vue-v2'; -import store from './store'; -import App from './App.vue'; -import Home from './components/Home.vue'; - -Vue.use(VueRouter); -Vue.config.productionTip = false; - -function newRouter(basename) { - const router = new VueRouter({ - mode: 'history', - base: basename, - routes: [{ path: '/home', component: Home }], - }); - return router; -} - -export const provider = vueBridge({ - rootComponent: App, - // 可选,注册 vue-router或状态管理对象 - appOptions: ({ basename, dom, appName, props }) => { - // pass the options to Vue Constructor. check https://vuejs.bootcss.com/api/#%E9%80%89%E9%A1%B9-%E6%95%B0%E6%8D%AE - return { - el: '#app', - router: newRouter(basename), - store, - }; - } -}); -``` -### 参数 - -`Options` - -- rootComponent - -- Type:`vue.Component` -- 非必传。此参数和 `loadRootComponent` 至少传一个 -- 当前应用的顶层 Vue 组件,该组件中将接受到 garfish 传递的子应用相关参数: - ```ts - // components/root.tsx - const RootComponent = ({ appName, basename, dom, props, appInfo}) => { ... } - ``` -- 当同时传入了 `loadRootComponent` 参数时,`rootComponent` 将失效,且 `rootComponent` 组件不会默认接受到 garfish 传递的子应用相关参数; - -- loadRootComponent - - - Type:`loadRootComponentType = (opts: Record) => Promise;` - - 非必传。此参数和 `rootComponent` 至少传一个 - - 当前应用的顶层 Vue 组件,该组件中实例的 data 对象中将接收到 garfish 传递的子应用相关参数 - - - `loadRootComponent` 是一个函数,返回一个 Promise 对象,resolve 后需要返回当前 Vue 应用的顶层组件,该顶层组件含义与 `rootComponent` 含义相同。当需要在 render 前进行异步操作时,可使用 `loadRootComponent` 加入副作用逻辑。 - - - `loadRootComponent` 将默认接收到 garfish 传递的子应用相关参数: - - ```ts - import { vueBridge } from "@garfish/bridge-vue-v2"; - export const provider = vueBridge({ - ..., - loadRootComponent: ({ appName, basename, dom, props, appInfo }) => { - // do something async - return Promise.resolve(App); - } - }); - ``` - - - 当同时传入了 `rootComponent` 参数时,`loadRootComponent` 的优先级更高, `rootComponent` 将失效; - - -- appOptions - - - Type: `appOptions: (opts: Record) => Record | Record` - - 非必传 - - 作为函数时,接收 garfish 传递的子应用相关参数并返回用来实例化 Vue 应用的对象参数,也可作为对象类型直接返回用来实例化 Vue 应用的对象参数。实例化完成后,garfish 子应用相关参数将会自动注入到组件实例的 `data` 对象中。 - - `appOptions` 参数将直接透传为 Vue 构造函数实例化时的初始化参数 new Vue(appOptions),此时参数类型与 [vue](https://vuejs.bootcss.com/api/#%E9%80%89%E9%A1%B9-%E6%95%B0%E6%8D%AE) 保持一致。若未传递 `appOptions` 参数,则将自动提供 vue2 应用 `render` 函数用于渲染:`render: (h) => h(opts.rootComponent)`。 - - 若需要指定子应用挂载点,可在此参数中指定:`appOptions: { el: '#app', ...}`,若未指定 `el` 参数,将默认使用全局挂载点。 - -:::tip -需要注意的是,`appOpitons` 中并不会默认包含路由或状态逻辑的处理,可显示在 `appOpitons` 中传递路由参数信息。 -::: - -```js -import { vueBridge } from '@garfish/bridge-vue-v2'; -export const provider = vueBridge({ - rootComponent: App, - appOptions: ({ basename, dom, appName, props, appInfo }) => { - // pass the options to Vue Constructor. check https://vuejs.bootcss.com/api/#%E9%80%89%E9%A1%B9-%E6%95%B0%E6%8D%AE - return { - el: '#app', - router: newRouter(basename), - store, - }; - } -}); -``` - -- handleInstance - - - Type: ` handleInstance: (vueInstance: InstanceType, opts: optionsType) => void;` - - 非必传 - - 处理 app 实例对象的函数,接受创建的 app 实例对象及 garfish 子应用相关参数,可自定义处理逻辑如路由注册或状态管理等相关能力。 -## vueBridge(for vue v3) - -:::info -针对 vue v3 子应用,请使用 `@garfish/bridge-vue-v3` 工具包。 -::: - -vueBridge 是 `@garfish/bridge-vue-v3` 工具包为 vue v3 子应用提供的 bridge 工具函数。 - -### 类型 - -```ts -function vueBridge(userOpts: Options): ( - appInfo: any, - props: any, -) => Promise<{ - render: (props: any) => any; - destroy: (props: any) => any; - update: (props: any) => any; -}>; -``` - -### 示例 - -> 可访问 [vue v3 子应用](https://github.com/modern-js-dev/garfish/tree/main/dev/app-vue-3) 查看完整 demo - -```ts -import { createRouter, createWebHistory } from 'vue-router'; -import { stateSymbol, createState } from './store.js'; -import App from './App.vue'; -import Home from './components/Home.vue'; -import { vueBridge } from '@garfish/bridge-vue-v3'; - -function newRouter(basename) { - const router = createRouter({ - history: createWebHistory(basename), - routes: [{ path: '/home', component: Home }], - }); - return router; -} - -export const provider = vueBridge({ - rootComponent: App, - // 可选,注册 vue-router或状态管理对象 - handleInstance: (vueInstance, { basename, dom, appName, props, appIndfo }) => { - vueInstance.use(newRouter(basename)); - vueInstance.provide(stateSymbol, createState()); - }, -}); -``` - -### 参数 - -`Options` - -- rootComponent - -- Type:`vue.Component` -- 非必传。此参数和 `loadRootComponent` 至少传一个 -- 当前应用的顶层 Vue 组件,该组件中将接受到 garfish 传递的子应用相关参数: - ```ts - // components/root.tsx - const RootComponent = ({ appName, basename, dom, props, appInfo}) => { ... } - ``` -- 当同时传入了 `loadRootComponent` 参数时,`rootComponent` 将失效,且 `rootComponent` 组件不会默认接受到 garfish 传递的子应用相关参数; - -- loadRootComponent - - - Type:`loadRootComponentType = (opts: Record) => Promise;` - - 非必传。此参数和 `rootComponent` 至少传一个 - - 当前应用的顶层 Vue 组件,该组件中实例的 data 对象中将接收到 garfish 传递的子应用相关参数 - - - `loadRootComponent` 是一个函数,返回一个 Promise 对象,resolve 后需要返回当前 Vue 应用的顶层组件,该顶层组件含义与 `rootComponent` 含义相同。当需要在 render 前进行异步操作时,可使用 `loadRootComponent` 加入副作用逻辑。 - - - `loadRootComponent` 将默认接收到 garfish 传递的子应用相关参数: - - ```ts - import { vueBridge } from "@garfish/bridge-vue-v3"; - export const provider = vueBridge({ - ..., - loadRootComponent: ({ appName, basename, dom, props, appInfo }) => { - // do something async - return Promise.resolve(App); - } - }); - ``` - - - 当同时传入了 `rootComponent` 参数时,`loadRootComponent` 的优先级更高, `rootComponent` 将失效; - - -- appOptions - - - Type: `appOptions: (opts: Record) => Record | Record` - - 非必传 - - 作为函数时,接收 garfish 传递的子应用相关参数并返回用来实例化 Vue 应用的对象参数,也可作为对象类型直接返回用来实例化 Vue 应用的对象参数。实例化完成后,garfish 子应用相关参数将会自动注入到组件实例的 `data` 对象中。 - - 在 Vue3 中,`appOptions` 参数将直接透传给 `createApp` 函数调用: `createApp(appOptions)`,此时参数类型与 [createApp](https://vuejs.org/api/application.html#createapp) 保持一致。若未传递 `appOptions` 参数,则将直接调用 `createApp(rootComponent)` 创建根组件。 - - 若需要指定子应用挂载点,可在此参数中指定:`appOptions: { el: '#app', ...}`,若未指定 `el` 参数,将默认使用全局挂载点。 - -:::tip -需要注意的是,`appOptions` 中并不会默认包含路由或状态逻辑的处理,可通过 `handleInstance` 函数拿到创建的 vue 实例对象后进行路由注册。 -::: - -- handleInstance - - - Type: `handleInstance: (vueInstance: vue.App, opts: optionsType) => void;` - - 非必传 - - 处理 app 实例对象的函数,接受创建的 app 实例对象及 garfish 子应用相关参数,可自定义处理逻辑如路由注册或状态管理等相关能力。 - -```js -import { vueBridge } from '@garfish/bridge-vue-v3'; -export const provider = vueBridge({ - rootComponent: App, - // 获取 vue 实例并进行路由注册和状态注册 - handleInstance: (vueInstance, { basename, dom, appName, props, appInfo }) => { - vueInstance.use(newRouter(basename)); - vueInstance.provide(stateSymbol, createState()); - }, -}); -``` diff --git a/website/docs/guide/concept/buildConfig.md b/website/docs/guide/concept/buildConfig.md deleted file mode 100644 index 557095fa8..000000000 --- a/website/docs/guide/concept/buildConfig.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: 构建配置 -slug: /guide/build-config -order: 7 ---- - -在 **「快速开始」** 章节可以发现,`Garfish` 针对不同的构建工具:`webpack`、`vite` 都要求其配置一些构建配置,那么这些构建配置分别在 `Garfish` 微前端应用中起到什么作用呢,「构建配置」这一章节主要是希望能够给帮助你了解背后这些构建配置带来的作用,下面的内容主要以 `webpack` 构建配置为例: - -```js -// webpack.config.js -{ - output: { - // 需要配置成 umd 规范 - libraryTarget: 'umd', - // 修改不规范的代码格式,避免逃逸沙箱 - globalObject: 'window', - // 请求确保每个子应用该值都不相同,否则可能出现 webpack chunk 互相影响的可能 - // webpack 5 使用 chunkLoadingGlobal 代替,若不填 webpack 5 将会直接使用 package.json name 作为唯一值,请确保应用间的 name 各不相同 - jsonpFunction: 'vue-app-jsonpFunction', - // 保证子应用的资源路径变为绝对路径,避免子应用的相对资源在变为主应用上的相对资源,因为子应用和主应用在同一个文档流,相对路径是相对于主应用而言的 - publicPath: 'http://localhost:8000', - }, -} -``` - -## libraryTarget - -在构建配置中通过 `libraryTarget` 可以将项目的产物分别构建成不同规范的产物:`umd`、`commonjs` 等规范的产物,实际 `Garfish` 希望子应用导出的是 `commonjs` 的产物,但是为了避免后续 `Garfish` 采用其他规范的产物,因此通常让微前端子应用构建成 `umd` 的产物,那么 `Garfish` 为什么希望子应用导出的是 `commonjs` 的产物呢?主要是解决两个问题: - -1. 获取 `provider` 渲染协议 -2. 进行依赖注入和共享 - -为什么设置为 `commonjs` 协议后,`Garfish` 框架能够获取 `provider` 协议和进行依赖注册和共享呢,这一切都要从 `commonjs` 的规范讲起,如果了解过 `commonjs` 实现原理的一定对下面这段代码非常熟悉: - -```js -let code = `(function(exports,require,module,__dirname,__filename){ - -})`; -vm.runInThisContext(fn).call(module.exports, module.exports, req, module); -``` - -在 `node` 环境中拥有 `exports`、`require` ... 这几个全局环境变量,通过这些环境能够完成模块的加载,完成内容的导出和载入,那么同时也能够利用 `commonjs` 的机制在代码运行时注入 `exports`、`require` 环境变量从而实现控制子应用获取依赖和拿到子应用导出内容的目的 - -```js -// 实际代码 -let code = ``; -new Function('require', 'exports', code)(fakeRequire, fakerExports); -``` - -## globalObject - -`globalObject` 的配置主要与 `Garfish` 的 `sandbox` 执行代码的机制有关,可以参考 [沙箱机制的异常 case 逃逸](./sandbox.md#特殊-case) - -## jsonpFunction - -> webpackjsonp 是什么? - -`webpack` 使用 `webpackjsonp` 来解决分 chunk 之后的加载问题,在 webpack 5 中采用 chunkLoadingGlobal 代替。 - -`webpackjsonp` 是一个全局变量,用于存储 chunk 的信息。 - -如下图: - -![image](https://user-images.githubusercontent.com/27547179/167364472-8e3ce4b9-94b3-490f-a4bf-b904579ea3a1.png) - -> `jsonpFunction` 配置的作用 - -`jsonpFunction` 的配置主要也与沙箱的机制有关, `Garfish` 的沙箱子应用的执行上下文 `window` 主要来自于主应用,当主应用与子应用都是用相同的 `key` 作为子应用 `jsonp` 存储 `chunk` 的方式时,子应用的 `chunk` 可能会受到主应用和其他应用的影响,因此通过 `jsonpFunction` 配置能够避免应用间的 `chunk` 互相应用 - -## publicPath - -通过 `publicPath` 配置将微前端子应用的资源路径转换成绝对路径,为什么需要将子应用的资源路径转换成绝对路径呢? - -- 子应用在独立运行时,使用相对路径的接口时,接口请求的路径是,当前页面域名+相对路径 -- 但是在主应用时,子应用使用相对路径的接口,请求的路径按道理来说还是,当前域名+相对路径 - -当在微前端的场景下如果 `Garfish` 让子应用走「当前域名+相对路径」会发生更多的异常请求(`hmr` 热更新、`websocket`、`server worker` ...),因为子应用的域名并不一定是与主应用一致,因此 `Garfish` 框架会对相对路径的资源和请求去进行修正,修正的参照物为基础域名为子应用的路径,在本地开发时可能是正常的,但是发到线上出现问题,原因在于发布到线上之后,子应用的入口有可能会走 `CDN`。因此参照的基础路径就变为了 CDN 前缀。那么此时子应用的相对路径请求就变为了 `CDN` 前缀。这一块做了很多权衡,因为 `hmr`、`websocket`、`server worker` 这些内容可能难以被用户控制,所以默认走的还是修正模式。 diff --git a/website/docs/guide/concept/cache.md b/website/docs/guide/concept/cache.md deleted file mode 100644 index 637263948..000000000 --- a/website/docs/guide/concept/cache.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: 缓存机制 -slug: /guide/cache -order: 3 ---- - -`Garfish` 的设计的初衷并不是为了取代 `iframe`,而是为了将一个单体应用拆分成多个子应用后也能保证应用一体化的使用体验,`Garfish` 为了提升应用的渲染性能,提供了缓存渲染模式。 - -缓存的形式分为两种,一种是缓存 `App` 的实例,缓存 `App` 的实例比较容易理解,`Garfish` 在通过 `loadApp` 加载子应用后可以保留 `App` 的实例,另外一种则是缓存子应用的执行上下文,第二遍执行时不执行所有代码来提升整体的渲染速度。 - -## 提升渲染速度 - -为什么 `Garfish` 的子应用需要提供 `provider` 函数呢?原因是通过提供 `provider` 生命周期,我们可以尽可能的优化渲染速度。 - -- 在应用销毁时触发对应框架应用的销毁函数,以达到对框架类型的销毁操作,应用中的一些销毁 `hook` 也可以正常触发 -- 在第二次应用加载时可以启动缓存模式 - - 在应用第一次渲染时的路径为,`html` 下载=> `html` 拆分=> 渲染 `dom` => 渲染 `style` => 执行 `JS` => 执行 `provider` 中的函数 - - 在第二次渲染时可以将整个渲染流程简化为,还原子应用的 `html` 内容=> 执行 `provider` 中的渲染函数。因为子应用的真实执行环境并未被销毁,而是通过 `render` 和 `destroy` 控制对应应用的渲染和销毁 -- 避免内存泄漏 - - 由于目前 `Garfish` 框架的沙箱依赖于浏览器的 `API`,无法做到物理级别的隔离。由于 `JavaScript` 语法的灵活性和闭包的特性,第二次重复执行子应用代码可能会导致逃逸内容重复执行 - - 采用缓存模式时,将不会执行所有代码,仅执行 `render` ,将会避免逃逸代码造成的内存问题 - -> 缓存模式下的弊端 - -- 启动缓存模式后也存在一定弊端,第二遍执行时 `render` 中的逻辑获取的还是上一次的执行环境并不是一个全新的执行环境,下面代码中在缓存模式时和非缓存模式不同的表现 - - 在缓存模式中,多次渲染子应用会导致 `list` 数组的值持续增长,并导致影响业务逻辑 - - 在非缓存模式中,多次渲染子应用 `list` 数组的长度始终为 `1` -- `Garfish` 框架无法有效区分哪些副作用需要销毁 - - 在缓存模式中并不会执行子应用的所有代码,只会还原子应用的上下文并执行子应用的 `render` 函数,因此无法区分哪些副作用是实际应用 `render` 过程中创建的还是其他基础库造成的 - - 目前 `Garfish` 框架在缓存模式下仅会收集和清除:样式副作用、环境变量 - -```js -const list = []; - -export const provider = () => { - return { - render: ({ dom, basename }) => { - list.push(1); - ReactDOM.render( - - - , - dom.querySelector('#root'), - ); - }, - - destroy: ({ dom, basename }) => { - ReactDOM.unmountComponentAtNode(dom.querySelector('#root')); - }, - }; -}; -``` - -具体使用如何使用缓存模式请参考:[Garfish.loadApp](/api/loadApp) - -## 缓存 App 实例 - -手动加载提供了 `cache` 功能,以便复用 `app`,避免重复的编译代码造成的性能浪费,在 `Garfish.loadApp` 时,传入 `cache` 参数就可以。 - - 例如下面的代码: - -```js -const app1 = await Garfish.loadApp('appName', { - cache: true, -}); - -const app2 = await Garfish.loadApp('appName', { - cache: true, -}); - -console.log(app1 === app2); // true -``` - -实际上,对于加载的 `promise` 也会是同一份,例如下面的 demo - -```js -const promise1 = Garfish.loadApp('appName', { - cache: true, -}); - -const promise2 = Garfish.loadApp('appName', { - cache: true, -}); - -console.log(promise1 === promise2); // true - -const app1 = await promise1; -const app2 = await promise2; -console.log(app1 === app2); // true -``` diff --git a/website/docs/guide/concept/lifecycle.md b/website/docs/guide/concept/lifecycle.md deleted file mode 100644 index f9e258782..000000000 --- a/website/docs/guide/concept/lifecycle.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: 生命周期 -slug: /guide/lifecycle -order: 3 ---- - -`Garfish` 应用的生命周期可以归结为:加载、渲染、销毁 三个阶段,因此 `Garfish` 应用的生命周期也是围绕着这三个阶段而展开的。应用的加载主要是通过 [Garfish.loadApp](../../api/loadApp.md),通过 `loadApp` API 会自动创建应用的实例,可以通过应用实例上的 `mount` 和 `show` 方法对应用进行渲染,通过 `unmount` 和 `hide` 方法对应用进行销毁,用户在实际使用的过程中通过 [Garfish.run](../../api/run.md)会发现当路由发生变化时符合加载条件的应用会自动加载渲染,实际上是 [`Garfish Router Plugin`](./router.md) 通过监听路由变化来触发 `loadApp` 和 `mount` 自动完成应用的加载、渲染、销毁。 - - - -### mount - -app.mount 做了哪些事情 - -1. 创建 `app` 容器并添加到文档流上 -2. 编译子应用的代码 -3. 拿到子应用的 `provider` -4. 调用 `app.options.beforeMount` 钩子 -5. 调用 `provider.render` -6. 将 `app.display` 和 `app.mounted` 设置为 `true` -7. 将 `app` set 到 `Garfish.activeApps` 中 -8. 调用 `app.options.afterMount` 钩子 -9. 如果渲染失败,`app.mount` 会返回 `false`,否则渲染成功会返回 `true`,你可以根据返回值做对应的处理。 - -### unmount - -app.unmount 做了哪些事件 - -1. 调用 `app.options.beforeUnmount` 钩子 -2. 调用 `provider.destroy` -3. 清除编译的副作用 -4. 将 `app` 的容器从文档流上移除 -5. 将 `app.display` 和 `app.mounted` 设置为 `false` -6. 在 `Garfish.activeApps` 中移除当前的 `app` 实例 -7. 调用 `app.options.afterUnmount` 钩子 -8. 同上,可以根据返回值来判断是否卸载成功。 - -### show - -app.show 做了哪些事件 - -1. 将 `app` 的容器添加到文档流上 -2. 调用 `provider.render` -3. 将 `app.display` 设置为 `true` -4. 同上,可以根据返回值来判断是否渲染成功。 - -### hide - -app.hide 做了哪些事件 - -1. 调用 `provider.destroy` -2. 将 `app` 的容器从文档流上移除 -3. 将 `app.display` 设置为 `false` -4. 同上,可以根据返回值来判断是否隐藏成功。 diff --git a/website/docs/guide/concept/router.md b/website/docs/guide/concept/router.md deleted file mode 100644 index 54486c351..000000000 --- a/website/docs/guide/concept/router.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: 路由机制 -slug: /guide/router -order: 4 ---- - -为什么需要 `Router`,其实从现在主流的前端框架可以发现他们都是可以通过路由驱动的,开发者只需要配置路由的 `map` 规则,即可在进入指定路由后载入子应用。这无疑大大降低了单页应用的复杂度,微前端上我们也可以借用单页应用的路由驱动模式,将每个子应用作为组件,并且只托管子应用的根路由,二级及以下路由交由子应用自己负责。其他比较复杂的情况,可以通过与手动载入配合。 - -![image](https://user-images.githubusercontent.com/27547179/165110838-2f907b10-40b4-4e00-afab-808ef08d1570.png) - -`Garfish Router` 如何处理路由,通过上面理想的路由模式案例发现,微前端应用拆分成子应用后,子应用路由应具备自治能力,可以充分的利用应用解耦后的开发优势,但与之对应的是应用间的路由可能会发生冲突、两种路由模式下可能产生用户难以理解的路由状态、无法激活不同前端框架的下带来的视图无法更新等问题。 - -> 目前 `Garfish` 主要提供了以下三条策略 - -- 提供 `Router Map`,减少典型中台应用下的开发者理解成本 -- 为不同子应用提供不同的 `basename` 用于隔离应用间的路由抢占问题 -- 路由发生变化时能准确激活并触发应用视图更新 - -## `Router Map` 降低开发者理解成本 - -在典型的中台应用中,通常可以将应用的结构分为两块,一块是菜单另一块则是内容区域,依托于现代前端 Web 应用的设计理念的启发,通过提供路由表来自动化完成子应用的调度,将公共部分作为拆离后的子应用渲染区域。 - -## 提供 basename - -在自动挂载模式下 `Garfish` 会根据用户提供的 `activeWhen` 自动计算出子应用的 basename,子应用使用该 `basename` ,子应用设置 basename 后可以保证应用间的路由互不影响且能达到多个微前端应用组合成单个 `SPA` 应用的体验,并且这些微前端应用能具备自己的路由。 - -## 如何有效的触发不同应用间的视图更新 - -目前主流框架实现路由的方式并不是监听路由变化触发组件更新,让开发者通过框架包装后的 API 进行跳转,并内部维护路由状态,在使用框架提供 API 方法发生路由更新时,内部状态发生变更触发组件更新。 - -由于框架的路由状态分别维护在各自的内部,那么如何保证在路由发生变化时能及时有效的触发应用的视图更新呢,答案是可以的,目前主要有两种实现策略: - -1. 收集框架监听的 `popstate` 事件 -2. 主动触发 `popstate` 事件 - 因为目前支持 SPA 应用的前端框架都会监听浏览器后退事件,在浏览器后退时根据路由状态触发应用视图的更新,那么其实也可以利用这种能力主动触发应用视图的更新,可以通过收集框架的监听事件,也可以触发 `popstate` 来响应应用的 `popstate` 事件 diff --git a/website/docs/guide/concept/sandbox.md b/website/docs/guide/concept/sandbox.md deleted file mode 100644 index d19d20061..000000000 --- a/website/docs/guide/concept/sandbox.md +++ /dev/null @@ -1,507 +0,0 @@ ---- -title: 沙箱机制 -slug: /guide/sandbox -order: 3 ---- - -### Changelog - -| 版本 | 日期 | 修订人 | ChangeLog | -| ---- | --------- | ----------- | ---------------- | -| v0.1 | 2022-4-20 | zengkunpeng | 沙箱机制文章开源 | -| v0.2 | 2022-4-29 | zhouxiao | 调整 DOM 副作用 | - -### 背景 - -在微前端的场景,由于多个独立的应用被组织到了一起,在没有类似 `iframe` 的原生隔离下,势必会出现冲突,如全局变量冲突、样式冲突,这些冲突可能会导致应用样式异常,甚至功能不可用。所以想让微前端达到生产可用的程度,让每个子应用之间达到一定程度隔离的沙箱机制是必不可少的。 - -此外沙箱功能还需要满足多实例的场景,先来了解一下什么是微前端里的多实例。 - -![image](https://user-images.githubusercontent.com/27547179/164134100-2c4d311e-4849-4ca4-a965-de1ff1a980d0.png) - -### 手动执行代码 - -常规的脚本加载,是通过 `script` 标签去执行的,如 - -```html -// 内连 -`,设置该属性后对应的 script 内容将不会运行在 commonjs 环境,对应的环境变量也会正常的插入到子应用的 window 上 - -## SyntaxError: Identifier 'exports' has already been declared - -> 问题概述 - -这个问题其实和上面那个 cdn 的问题,原因是一样的,由于 garfish 会注入一个 exports 变量,而子应用某个脚本(比如 vite 自己的热更引入的`react-refresh-runtime.development.js`)的代码也写了类似`const exports = {}`的代码,导致出现重复声明而报错。 - -> 解决方案 - -解决办法还是和上面加`no-entry`一样,不会注入 commonjs 相关的环境变量,但是,考虑到某些脚本可能是构建工具默认注入的,无法修改 script 标签,所以可以在 html 入口处加入以下配置代码来达到同样的效果(以 vite 的`react-refresh`为例): - -```html - - - - vue sub app - - - - - -
- - - -``` - -## ESModule - -Garfish 核心库默认支持 esModule,但是需要关掉 vm 沙箱或者为快照沙箱时,才能够使用。 - -```js -Garfish.run({ - ... - apps: [ - { - name: 'vue', - activeWhen: '/vue', - entry: 'http://localhost:8080', - sandbox: { - open: false, - // snapshot: true, 或者只开启快照沙箱 - }, - }, - ], -}) -``` - -如果需要在 vm 沙箱下开启 esModule 的能力,可以使用 `@garfish/es-module` 插件。 - -> `@garfish/es-module` 会在运行时分析子应用的源码做一层 esModule polyfill,但他会带来严重的首屏性能问题,如果你的项目不是很需要在 vm 沙箱下使用 esModule 就不应该使用此插件。 - -> 在短期的规划中,为了能在生产环境中使用,我们会尝试使用 wasm 来优化整个编译性能。在未来如果 [module-fragments](https://github.com/tc39/proposal-module-fragments) 提案成功进入标准并成熟后,我们也会尝试使用此方案,但这需要时间。 - -```js -import { GarfishEsModule } from '@garfish/es-module'; - -Garfish.run({ - ... - plugins: [GarfishEsModule()], -}) -``` - -> 提示:当子项目使用 `vite` 开发时,你可以在开发模式下使用 esModule 模式,生产环境可以打包为原始的无 esModule 的模式。 - -## 子应用堆栈信息丢失、sourcemap 行列信息错误 - -> 问题背景 - -微前端场景下,存在沙盒机制,基于 eval 和 new Function 的形式去实现沙箱机制,在手动执行代码的情况下,会产生堆栈丢失、sourcemap 还原错行等问题。 - -> 解决方案 - -可通过增加如下 webpack 配置解决: - -```js -// webpack.config.js -const webpack = require('webpack'); - -config.plugins = [ - new webpack.BannerPlugin({ - banner: 'Micro front-end', - }); -] -``` - -具体原因可参考 [博客](/blog/sourcemap) diff --git a/website/docs/issues/webComponent.md b/website/docs/issues/webComponent.md deleted file mode 100644 index 4929ed2f1..000000000 --- a/website/docs/issues/webComponent.md +++ /dev/null @@ -1,241 +0,0 @@ ---- -title: 使用 Web component(beta) -slug: /guide/develop/webComponent -order: 1 ---- - -本节主要从主应用视角出发,通过 `Web Component` 概览性描微前端应用,Web Component 接入方式特点: - -- 便于与主应用框架结合使用,加载微前端应用像加载组件一样简单 -- 支持设置子应用 Loading 中间态、错误态占位内容 -- 可以与路由驱动模式一起使用 - -## 主应用 - -### 安装依赖 - -```bash npm2yarn -npm install garfish --save -``` - -### 入口处注册 Web Component - -```js -// index.js(主应用入口处) -import { defineCustomElements } from 'garfish'; - -// 定义 WebComponent Tag 为“micro-portal”,并指定 loading 时的内容 -defineCustomElements('micro-portal', { - loading: ({ isLoading, error, pastDelay }) => { - let loadingElement = document.createElement('div'); - // 渲染过程中发生异常,展示异常内容 - if (error) { - loadingElement.innerHTML = `load app get error: ${error.message}`; - return loadingElement; - } - // 渲染中,并且符合延迟时间(避免 loading 闪退) - if (pastDelay && isLoading) { - loadingElement.innerHTML = `loading`; - return loadingElement; - } - return null; - }, -}); -``` - -### 分配路由给微前端应用 - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - - - - -```jsx -import React from 'react'; -import { BrowserRouter, Route, Link, Switch } from 'react-router-dom'; - -function VueApp(basename) { - // name: 子应用名称 - // entry: 子应用入口资源地址,可以为 HTML、或 JS - // basename: 子应用路由的基础路径 - return ( - - ); -} - -function App() { - return ( - - VueApp - - // 分配一个路由给 vue 应用 - VueApp('/vue-app')}> - - - ); -} -``` - - - - -> 提供 ReactApp 的 Vue 组件 - -```html - - - - - -``` - -> 将 ReactApp 组件添加到路由中 - -```js -// index.js -import Vue from 'vue'; -import VueRouter from 'vue-router'; -import ReactApp from './component/ReactApp.vue'; - -const router = new VueRouter({ - mode: 'history', - base: '/', - routers: [{ path: '/react-app', component: ReactApp }], -}); - -new Vue({ - router, - store, - render: (h) => h(App), -}).$mount('#app'); -``` - - - - -## 子应用 - -### 安装依赖 - -```bash npm2yarn -npm install @garfish/bridge-react --save -``` - -### 通过 Bridge 函数包装子应用 - - - - -```jsx -import { BrowserRouter, Switch, Route, Link } from 'react-router-dom'; -import { reactBridge } from '@garfish/bridge-react'; - -function App({ basename }) { - return ( - // 根组件使用传递过来的 basename,作为应用的基础路径 - - Home - - - - - - - ); -} - -export const provider = reactBridge({ - rootComponent: App, - domElementGetter: '#root', // 应用的挂载点,如果子应用打包为 JS 入口,可不填写 -}); -``` - - - - -```js -import App from './App.vue'; -import { vueBridge } from '@garfish/bridge-vue-v2'; - -function newRouter(basename) { - const router = new VueRouter({ - router, - mode: 'history', - base: basename, - routes: [{ path: '/', component: HelloGarfish }], - }); - return router; -} - -export const provider = vueBridge({ - rootComponent: App, - appOptions: ({ basename }) => { - const router = newRouter(basename); - return { - store, - router, - el: '#app', - }; - }, -}); -``` - - - - -### 调整子应用的构建配置 - - - - -```js -// webpack.config.js -const webpack = require('webpack'); - -module.exports = { - output: { - // 需要配置成 umd 规范 - libraryTarget: 'umd', - // 修改不规范的代码格式,避免逃逸沙箱 - globalObject: 'window', - // 请求确保每个子应用该值都不相同,否则可能出现 webpack chunk 互相影响的可能 - jsonpFunction: 'vue-app-jsonpFunction', - // 保证子应用的资源路径变为绝对路径,避免子应用的相对资源在变为主应用上的相对资源,因为子应用和主应用在同一个文档流,相对路径是相对于主应用而言的 - publicPath: 'http://localhost:8000', - }, - plugin: [ - // 保证错误堆栈信息及 sourcemap 行列信息正确 - new webpack.BannerPlugin({ - banner: 'Micro front-end', - }) - ], - devServer: { - // 保证在开发模式下应用端口不一样 - port: '8000', - headers: { - // 保证子应用的资源支持跨域,在线上后需要保证子应用的资源在主应用的环境中加载不会存在跨域问题(**也需要限制范围注意安全问题**) - 'Access-Control-Allow-Origin': '*', - }, - }, -}; -``` - - - diff --git a/website/docs/plugins/__meta__.md b/website/docs/plugins/__meta__.md deleted file mode 100644 index bfb9a49c7..000000000 --- a/website/docs/plugins/__meta__.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: garfish-plugins -collapsed: false -order: 1 ---- diff --git a/website/docs/plugins/es-module.md b/website/docs/plugins/es-module.md deleted file mode 100644 index b29767638..000000000 --- a/website/docs/plugins/es-module.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Garfish es-module plugins -slug: /garfish-plugins/es-module.md -order: 1 ---- - -## garfish es-module plugin diff --git a/website/docs/plugins/plugins.md b/website/docs/plugins/plugins.md deleted file mode 100644 index ed5ffe348..000000000 --- a/website/docs/plugins/plugins.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Garfish 插件 -slug: /garfish-plugins -order: 2 ---- - -## Garfish 插件 diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js deleted file mode 100644 index 3cc1b3f8c..000000000 --- a/website/docusaurus.config.js +++ /dev/null @@ -1,154 +0,0 @@ -module.exports = { - title: 'Garfish', - tagline: '微前端解决方案', - url: 'https://garfishjs.org', - baseUrl: '/', - organizationName: 'bytedance', - projectName: 'garfish', - onBrokenLinks: 'throw', - onBrokenMarkdownLinks: 'warn', - favicon: - 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/open-garfish/icons/icon.png', - organizationName: 'ByteDance', - projectName: 'Garfish Docs', - customFields: { - slogan: 'Garfish 微前端框架', - summary: - '包含构建微前端系统时所需要的基本能力,任意前端框架均可使用。接入简单,可轻松将多个前端应用组合成内聚的单个产品', - }, - themeConfig: { - // sidebarCollapsible: true, - docs: { - sidebar: { - hideable: true, - }, - }, - colorMode: { - defaultMode: 'dark', - disableSwitch: false, - }, - navbar: { - logo: { - alt: 'Garfish', - src: 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/open-garfish/icons/garfish-icon.png', - srcDark: - 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/open-garfish/icons/garfish-icon.png', - }, - items: [ - // left - { - to: 'guide/', - label: '指南', - position: 'right', - }, - { - to: 'api/', - label: 'API', - position: 'right', - }, - { - to: 'blog/', - label: '博客', - position: 'right', - }, - { - href: 'https://github.com/modern-js-dev/garfish/tree/main/dev', - label: 'examples', - position: 'right', - }, - { - to: 'issues/', - label: '常见问题', - position: 'right', - }, - - // { - // href: - // 'https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=601jeae5-250c-48b4-a3bd-7e6211cd4471', - // position: 'right', - // className: 'header-feishu-link', - // }, - { - href: 'https://github.com/bytedance/garfish', - className: 'header-github-link', - position: 'right', - }, - ], - }, - footer: { - style: 'dark', - copyright: `Copyright © ${new Date().getFullYear()} ByteDance, Inc. Powered By Garfish Team`, - }, - }, - plugins: [ - './plugin/slardar', - [ - require.resolve('@easyops-cn/docusaurus-search-local'), - { - // `hashed` is recommended as long-term-cache of index file is possible. - hashed: true, - // For Docs using Chinese, The `language` is recommended to set to: - // ``` - language: ['en', 'zh'], - docsRouteBasePath: ['/guide', 'demo', '/issues', '/quickStart', '/api'], - docsDir: ['docs'], - // ``` - // When applying `zh` in language, please install `nodejieba` in your project. - }, - ], - [ - '@docusaurus/plugin-ideal-image', - { - name: 'ideal-img/[name].[hash:hex:7].[width].[ext]', - }, - ], - ], - scripts: [ - 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/open-garfish/script/slardar-garfish.js', - ], - presets: [ - [ - '@docusaurus/preset-classic', - { - docs: { - routeBasePath: '/', - sidebarPath: require.resolve('./sidebars.js'), - editUrl: 'https://github.com/bytedance/garfish/tree/main/website', - showLastUpdateAuthor: true, - showLastUpdateTime: true, - remarkPlugins: [ - [require('@docusaurus/remark-plugin-npm2yarn'), { sync: true }], - ], - }, - pages: { - remarkPlugins: [require('@docusaurus/remark-plugin-npm2yarn')], - }, - blog: { - showReadingTime: true, - editUrl: 'https://github.com/bytedance/garfish', - feedOptions: { - type: 'all', - copyright: `Copyright © ${new Date().getFullYear()} ByteDance, Inc.`, - }, - }, - theme: { - customCss: require.resolve('./src/css/custom.css'), - }, - }, - ], - ], - i18n: { - defaultLocale: 'zh-CN', - locales: ['zh-CN'], - localeConfigs: { - // en: { - // label: 'English (Auto)', - // direction: 'ltr', - // }, - // 'zh-CN': { - // label: '简体中文(中国)', - // direction: 'ltr', - // }, - }, - }, -}; diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current.json b/website/i18n/en/docusaurus-plugin-content-docs/current.json deleted file mode 100644 index 7ccffd83a..000000000 --- a/website/i18n/en/docusaurus-plugin-content-docs/current.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "version.label": { - "message": "Next", - "description": "The label for version current" - }, - "sidebar.guide.category.指南": { - "message": "guide", - "description": "The label for category 指南 in sidebar guide" - }, - "sidebar.guide.category.快速开始": { - "message": "Quick start", - "description": "The label for category 快速开始 in sidebar guide" - }, - "sidebar.guide.category.进阶功能": { - "message": "Advanced features", - "description": "The label for category 进阶功能 in sidebar guide" - }, - "sidebar.api.category.Garfish methods": { - "message": "Garfish methods", - "description": "The label for category Garfish methods in sidebar api" - } -} diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current/api/attributes/loadApp.md b/website/i18n/en/docusaurus-plugin-content-docs/current/api/attributes/loadApp.md deleted file mode 100644 index 01a1119a3..000000000 --- a/website/i18n/en/docusaurus-plugin-content-docs/current/api/attributes/loadApp.md +++ /dev/null @@ -1,159 +0,0 @@ ---- -title: loadApp -slug: /api/attributes/loadApp -order: 5 ---- - -### Garfish.loadApp(appName: string, opts?: LoadAppOptions) - -- Parameters - - appName - unique id of the application, required, id name of the child application - - opts - `LoadAppOptions` - optional, configure sub-application related configuration (the parameters are basically the same, the only difference is one more `cache` parameter, if there is no configured parameter, it will be downgraded to use the global `options`) - - domGetter - `Element | ()=> Element` - optional, will use Garfish.run's domGetter parameter if not provided - - basename - `string` - optional, defaults to `'/'` the base route of the subapplication, which will be passed as a parameter to the subapplication's exported provider, which will use it as the basename so that the subapplication's base route is based on the current basename -- Return value - `appInstance` - the sub-application instance - - mount(): `promise` - - unmount(): `promise` - - show(): `null` - - hide(): `null` - -### Caution - -This is a specific usage note for `Garfish`'s manual loading scheme. `Garfish` manual loading is the core mechanism for rendering the entire sub-application. It is mainly implemented through the `Garfish.loadApp` api. -The following are the two loading cases. - -:::note Caution - -1. If you want to use manual load mode, you should turn off the `autoRefreshApp` mode of the route to avoid interference with the route driver. 2. -2. If you use manual loading, make sure you have `snapshot` set to `false` and `vm` sandbox turned on, otherwise the linear law based on snapshot sandbox will cause side effects to be cleared accidentally. -3. Manually loaded sub-applications need to be registered in advance using `Garfish.run`, along with the registered sub-application information, without providing `activeWhen` - -``js -Garfish.run({ -sandbox: { -open: true, -snapshot: false, -}, -apps: [ -{ -name: 'vueApp', -entry: 'xxx', -}, -], -autoRefreshApp: false, -}); - -````4. - -4. If the sub-application has a route, you need to pass ``basename`'' as the base route of the current page when ``load`'', for example, when manually loading sub-application b in the page of sub-application a, since the default ``basename`'' of b is ``/b/`'', you need to pass - -```js -Garfish.loadApp('vueApp', { basename: '/vueApp' }); -```` - -::: - -### Manual loading scheme without caching. - -```js -// options is optional, if not passed, a deep copy will be made from Garfish.options by default -const app = await Garfish.loadApp('appName', { - domGetter: () => document.getElementById('id'), -}); - -// rendering: compile the code for the sub-app -> create the app container -> call provider.render to render -const success = await app.mount(); -// unload: clear the side effects of the child application -> call provider.destroy -> destroy the application container -const success = await app.unmount(); -``` - -### Manual loading scheme that requires caching (caching is recommended) - -```js -const cache = true; -const app = await Garfish.loadApp('appName', { - domGetter: () => document.getElementById('id'), -}); - -// Render -if (cache && app.mounted) { - const success = app.show(); -} else { - const success = await app.count(); -} -// unload -const success = app.hide(); -``` - -### What does app.mount do - -1. create the `app` container and add it to the document stream -2. compile the code of the sub-app -3. get the `provider` of the child application -4. call the `app.options.beforeMount` hook -5. call `provider.render` 6. -6. set `app.display` and `app.counted` to `true` -7. set `app` to `Garfish.activeApps` -8. Call the `app.options.afterMount` hook - > If the rendering fails, `app.mount` will return `false`, otherwise it will return `true` if the rendering succeeds, you can do the corresponding processing according to the return value. - -### What events does app.unmount do - -1. call the `app.options.beforeUnmount` hook -2. call `provider.destroy` -3. clear the side effects of the compilation -4. remove the container for `app` from the document stream -5. set `app.display` and `app.counted` to `false` -6. remove the current `app` instance from `Garfish.activeApps` -7. Call the `app.options.afterUnmount` hook - > As above, you can determine if the uninstall was successful based on the return value. - -### What events does app.show do? - -1. add the container for `app` to the document stream -2. call `provider.render` 3. -3. set `app.display` to `true` - > As above, you can determine whether the rendering was successful based on the return value. - -### What events does app.hide do - -1. call `provider.destroy` 2. -2. remove the container of `app` from the document stream -3. set `app.display` to `false` - > As above, you can determine if hiding is successful based on the return value. - -### Caching - -Manual loading provides the `cache` function to reuse `app` and avoid wasted performance caused by duplicate compiled code, just pass in the `cache` parameter when `Garfish.loadApp`. - -For example, the following code. - -```js -const app1 = await Garfish.loadApp('appName', { - cache: true, -}); - -const app2 = await Garfish.loadApp('appName', { - cache: true, -}); - -console.log(app1 === app2); // true -``` - -In fact, it will be the same copy for the loaded `promise`, as in the following demo - -```js -const promise1 = Garfish.loadApp('appName', { - cache: true, -}); - -const promise2 = Garfish.loadApp('appName', { - cache: true, -}); - -console.log(promise1 === promise2); // true - -const app1 = await promise1; -const app2 = await promise2; -console.log(app1 === app2); // true -``` diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current/api/attributes/props.md b/website/i18n/en/docusaurus-plugin-content-docs/current/api/attributes/props.md deleted file mode 100644 index d083f2afd..000000000 --- a/website/i18n/en/docusaurus-plugin-content-docs/current/api/attributes/props.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: props -slug: /api/attributes/props -order: 2 ---- - -`Garfish.props` is used to get the public content passed by the main application, to use shared data, or to pass specified content to child applications. Can be used with [mobx](https://cn.mobx.js.org). - -### Master application shared data - -```js -import Garfish from 'garfish'; -import { observable, computed, action } from 'mobx'; - -class Store { - @observable price = 0; - @observable amount = 1; - - @computed get total() { - return this.price * this.amount; - } - - @action.bound - increment() { - this.amount++; - } -} - -Garfish.run({ - basename: basePath, - domGetter: '#subModule', - apps, - props: { - store: new Store(), - }, -}); -``` - -### Sub-application fetching data - -```js -const store = window.Garfish.props.store; -const price = store.price; -const amount = store.amount; -store.increment(); -``` - -### Or get it in the provider - -```js -export function provider({ dom, basename, store }) { - return { - render() {}, - destroy() {}, - }; -} -``` diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current/api/attributes/router.md b/website/i18n/en/docusaurus-plugin-content-docs/current/api/attributes/router.md deleted file mode 100644 index 593a8e50f..000000000 --- a/website/i18n/en/docusaurus-plugin-content-docs/current/api/attributes/router.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: router -slug: /api/attributes/router -order: 3 ---- - -Provides routing-related capabilities in micro front-end scenarios. - -> It is recommended to use `Garfish.router` as the `api` for switching sub-applications, switching between applications is also possible via `vue-router` or `react-router`, but it will cause exceptions in some special scenarios: [react-router-prompt triggered multiple times](https://code.byted.org/pgcfe/gar/issues/5) - -:::note Notes. - -1. currently the main application only supports `history` mode to automatically mount the sub-application, you can configure `activeWhen` as a function activation condition to activate the main application as a `hash` mode application - -2. When both the main application and the sub-application have routes, please convert the main application to `history` mode (since Garfish does not currently isolate the sub-application routes from the main application routes) - - - Since the main application routing and sub-application are in the same routing execution environment, if the main application is `hash` routing and the sub-application is `history` routing, the routing will not comply with the specification - - After the main application enters the detail page, the address is `http://garfish.bytedance.com#/gar-example/detail`, after loading the sub-application as history, the route becomes `http://garfish.bytedance.com/app1#/gar-example/detail`. 3. - -3. Currently Garfish isolates the routing between applications by `basePath` to avoid routing conflicts like the above between the main application and the child application. `http://garfish.bytedance.com/gar-example`, the child application activation path is `/app1`, the child application will receive `http://garfish.bytedance.com/gar-example/app1` in the `provider`, the child application will use it as its base path, change the path - ::: - -## router.push - -`router.push({ path: string, query?: Record }) : void`
- -To navigate to a different URL, use the `router.push` method. This method adds a new record to the `history` stack, so that when the user clicks the browser back button, it goes back to the previous `URL`. - -### Points to note - -- If there is a `basename` configured at the time of `Garfish.run`. will add `basename` as a jump prefix when jumping. -- Using the routing methods provided by `Garfish`, jumping to a sub-route corresponding to a sub-application in a scenario where the sub-application is already open will trigger a component update - > In a non-Garfish micro front-end environment, jumping a route directly using `history.pushState` will not trigger a component update for the corresponding route, because `vue` and `react` are not listening for route changes and triggering component updates -- This `api` can be configured with `autoRefreshApp` when `react-router-prompt` is triggered multiple times. Turning off other jump methods to trigger child app refresh components limits the scenario where `prompt` triggers multiple times or the child app unloads additional times. -- With the `autoRefreshApp` option turned off, you can only route the application through the `Garfish.router` hopper - -### Example - -```html -Vue AVue BVue A sub routereact2error path }) : void` - -Much like `router.push`, the only difference is that it doesn't add a new record to `history`, but rather replaces the current `history` record, just like its method name. - -## router.beforeEach - -`router.beforeEach(to: RouterInfo, from: RouterInfo, next: Function): void` - -Triggered after a route jump and before a child application is mounted. - -```ts -interface RouterInfo { - fullPath: string; - path: string; - query: Object; - matched: Array; -} -``` - -Each guard method takes three parameters - -- `to` Information about the target route that is coming in. -- `from` The information about the route that is about to leave. -- `next` The blocking execution callback. - -``js -Garfish.router.beforeEach((to, from, next) => { -// console.log(to, from); -next(); -}) - -Garfish.router.afterEach((to, from, next) => { -// console.log(to, from); -next();autoRefreshApp -}) - -Garfish.run(...) ; - -``` - -## router.afterEach - -`router.afterEach(to: RouterInfo, from: RouterInfo, next) : void` - -Much like `router.afterEach`, the only difference is that it is triggered after the route is jumped and the child application is mounted. - -## Route Guard - -As the name suggests, the navigation guard is provided mainly to guard the navigation by jumping or canceling. In a micro front-end environment, when jumping routes, the route guard will block the rendering of the sub-application when the `next` function is not called. - -> but cannot block route hops within a subapplication, because route hops within a subapplication cannot be blocked by `Garfish` - -:::danger Note. - -- Put the route guard registration before `Garfish.run`, otherwise it will not receive the first loaded route hook. -- If you use a route guard, make sure the `next` function is executed, otherwise it will block the route's internal loading logic. - ::: -``` diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current/api/index.md b/website/i18n/en/docusaurus-plugin-content-docs/current/api/index.md deleted file mode 100644 index 8312d8ee9..000000000 --- a/website/i18n/en/docusaurus-plugin-content-docs/current/api/index.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Overview -slug: /api -order: 1 ---- - -## Garfish Instance Methods - -- [Garfish.run](/api/new#run) -- [Garfish.registerApp](/api/new#registerapp) -- [Garfish.loadApp](/api/new#loadapp) - -## Garfish Instance Properties - -- [Garfish.router](/api/attributes/router) -- [Garfish.loadApp](/api/attributes/loadApp) -- [Garfish.props](/api/attributes/props) diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current/api/instance.md b/website/i18n/en/docusaurus-plugin-content-docs/current/api/instance.md deleted file mode 100644 index b5fdd91cb..000000000 --- a/website/i18n/en/docusaurus-plugin-content-docs/current/api/instance.md +++ /dev/null @@ -1,220 +0,0 @@ ---- -title: API Reference -slug: /api/new -order: 2 ---- - -## run - -`Garfish.run(options: Options) : Garfish` - -### Options - -#### `domGetter: () => Element | string` - -You can fill in the node to get the mount point or the characters that `querySelect` can select. - -#### `apps: Array` - -:::note - -1. The main framework is not automatically associated with the remote Garfish management platform and needs to be injected manually. 2. -2. Sub-application resource addresses need to support cross-domain (**please control the allowed range, if not set the allowed range may cause security risks**). -3. `Garfish` will determine whether the resource is an `html entry` or a `js entry` based on its `mineType`. 4. -4. for a single `js`, the exported content must be `provider: { render, destroy }`. - ::: - -- `AppInfo: { name, entry, activeWhen, active, deactive }` - - `name` The name of the template, please make sure that the name is unique. - - `entry` Sub-application entry - - `activeWhen` path name, the path to activate the sub-application, fill in the root route, use as a function please do not use asynchronous logic - - `active` Trigger when the application is activated, used instead of the default rendering logic inside Garfish. This hook can be used to render `iframe` if the app is not accessible quickly, [details](https://site.bytedance.com/docs/4545/6924/ifame) - - `deactive` triggered when the application is destroyed, used instead of `Garfish` internal default destruction logic, with or without `active` configuration - -#### `basename?: string` - -Base routing address, explained in detail below. - -#### `sandbox?: SandboxConfig` - -- `open?: boolean` default `true` -- `snapshot?: boolean` Whether to open the snapshot sandbox, default `false` - -#### `props?: Object` - -Provide parameters as `provider` parameters for the child application - -#### `protectVariable?: Array` - -Save the specified variable without clearing it during the sandbox switch - -#### `autoRefreshApp?: boolean` - -Default `true`, the main app will update the component when jumping through the app subroutes - -#### `beforeLoad?: (appInfo: AppInfo) => void` - -Called before the resource is loaded, returns `false`, which will prevent the `app` from being loaded, when there may be no `app` - -#### `beforeMount?: (appInfo: AppInfo, path: string) => void` - -Called before the child app is mounted - -#### `afterMount?: (appInfo: AppInfo, path: string) => void` - -Called after the child app is mounted - -#### `beforeUnmount?: (appInfo: AppInfo, path: string) => void` - -Called before the child application is destroyed - -#### `afterUnmount?: (appInfo: AppInfo, path: string) => void` - -Called after the destruction of the sub-application - -#### `customLoader?: (provider: any, path: string, module: App) => void` - -Custom loading rules - -#### `errorLoadApp?: (err: Error, appInfo: AppInfo) => void` - -Catch errors in loading sub-applications - -#### `errorMountApp?: (err: Error, appInfo: AppInfo) => void` - -Catch error when mounting a sub-application - -#### `errorUnmountApp?: (err: Error, appInfo: AppInfo) => void` - -Catch the error when unmounting a child application - -#### `onNotMatchRouter?: (path: string) => void` - -Triggered if the corresponding sub-application is not matched - -### Example - -```js -import Garfish from 'garfish'; - -Garfish.run({ - sandbox: false, - basename: '/exmaple', - domGetter: '#submodule', - beforeMount() { - console.log('Before application mount'); - }, - afterUnmount() { - console.log('After application destruction'); - }, - apps: [ - { - name: 'index', - activeWhen: '/index', - entry: 'sourceUrl', // js entry or html entry - }, - ], -}); -``` - -### basename - -- The default value of `basename` is `'/'` -- This parameter is used as the `basePath` of the child application activation and can be provided to the child application as the `basepath` of the child application. -- Example. - - Sub-applications: `activeWhen: '/detail'`, `basename: '/toutiao'`. - - The sub-application will be active when jumping to: `/toutiao/detail`. - - Sub-application jumps based on: `/toutiao/detail`. - -* If the child app has a route itself, you need to use the `basename` passed by the `render` function as the route base path. - -Take the example of the main app Vue, and the child app React. - -```js -// index.js of the main app -const basePath = 'toutiao'; -const router = new VueRouter({ - mode: 'history', - base: basePath, -}); - -Garfish.run({ - basename: basePath, - domGetter: '#submodule', - apps: [ - { - name: 'react', - activeWhen: '/react', - entry: `http://localhost:3000/index.js`, - }, - ], -}); - -const app = new Vue({ router }).$mount('#app'); -``` - -```js -// index.js of the child application -// Get the basename provided by the main app that the framework transfers as the basename of the child app, and use it as the root route when routing hops -class App extends React.Component { - render() { - return ( - -
-
    -
  • - Home -
- - , dom.querySelector('#root')); - }, - - destroy({ dom }) { - const root = dom && dom.querySelector('#root'); - if (root) { - ReactDOM.unmountComponentAtNode(root); - } - }, - }; -} -``` - -## registerApp - -`Garfish.registerApp(app: AppInfo | AppInfo[]) : Garfish` - -This method is used to register subapplication information, in addition to registering information when `Garfish.run` is started. - -```js -Garfish.registerApp({ - name: 'childApp', - entry: 'sourceUrl', - activeWhen: '/xx', -}); - -// You can also register multiple apps by passing in an array -Garfish.registerApp([ - { - name: 'childApp', - entry: 'sourceUrl', - activeWhen: '/xx', - }, -]); -``` - -## loadApp - -`Garfish.loadApp(appName: string, options?: Options) : App | null` - -Manually loaded api, see [manual load app documentation] for more details on usage (... /api/attributes/loadApp) diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current/community/discuss.md b/website/i18n/en/docusaurus-plugin-content-docs/current/community/discuss.md deleted file mode 100644 index b55a8cf94..000000000 --- a/website/i18n/en/docusaurus-plugin-content-docs/current/community/discuss.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Garfish community -slug: /community/discuss -order: 1 ---- - -### Github Discussions - -[Garfish Discussions](https://github.com/bytedance/garfish/discussions) - - diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current/guide/advance/__meta__.md b/website/i18n/en/docusaurus-plugin-content-docs/current/guide/advance/__meta__.md deleted file mode 100644 index dc1ad6988..000000000 --- a/website/i18n/en/docusaurus-plugin-content-docs/current/guide/advance/__meta__.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Advanced features -collapsed: true -order: 3 ---- diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current/guide/advance/loadApp.md b/website/i18n/en/docusaurus-plugin-content-docs/current/guide/advance/loadApp.md deleted file mode 100644 index 80b6a668c..000000000 --- a/website/i18n/en/docusaurus-plugin-content-docs/current/guide/advance/loadApp.md +++ /dev/null @@ -1,159 +0,0 @@ ---- -title: Manual loading -slug: /guide/advance/loadApp -order: 1 ---- - -### Garfish.loadApp(appName: string, opts?: LoadAppOptions) - -- Parameters - - appName - unique id of the app, required, id name of the child app - - opts - `LoadAppOptions` - optional, configure sub-application related configuration (the parameters are basically the same, the only difference is one more `cache` parameter, if there is no configured parameter, it will be downgraded to use the global `options`) - - domGetter - `Element | ()=> Element` - optional, will use Garfish.run's domGetter parameter if not provided - - basename - `string` - optional, defaults to `'/'` the base route of the subapplication, which will be passed as a parameter to the subapplication's exported provider, which will use it as the basename so that the subapplication's base route is based on the current basename -- Return value - `appInstance` - the sub-application instance - - mount(): `promise` - - unmount(): `promise` - - show(): `null` - - hide(): `null` - -### Caution - -This is a specific usage note for `Garfish`'s manual loading scheme. `Garfish` manual loading is the core mechanism for rendering the entire sub-application. It is mainly implemented through the `Garfish.loadApp` api. -The following are the two loading cases. - -:::note Caution - -1. If you want to use manual load mode, you should turn off the `autoRefreshApp` mode of the route to avoid interference with the route driver. 2. -2. If you use manual loading, make sure you have `snapshot` set to `false` and `vm` sandbox turned on, otherwise the linear law based on snapshot sandbox will cause side effects to be cleared accidentally. -3. Manually loaded sub-applications need to be registered in advance using `Garfish.run`, along with the registered sub-application information, without providing `activeWhen` - -``js -Garfish.run({ -sandbox: { -open: true, -snapshot: false, -}, -apps: [ -{ -name: 'vueApp', -entry: 'xxx', -}, -], -autoRefreshApp: false, -}); - -````4. - -4. If the sub-application has a route, you need to pass ``basename`'' as the base route of the current page when ``load`'', for example, when manually loading sub-application b in the page of sub-application a, since the default ``basename`'' of b is ``/b/`'', you need to pass - -```js -Garfish.loadApp('vueApp', { basename: '/vueApp' }); -```` - -::: - -### Manual loading scheme without caching. - -```js -// options is optional, if not passed, a deep copy will be made from Garfish.options by default -const app = await Garfish.loadApp('appName', { - domGetter: () => document.getElementById('id'), -}); - -// rendering: compile the code for the sub-app -> create the app container -> call provider.render to render -const success = await app.mount(); -// unload: clear the side effects of the child application -> call provider.destroy -> destroy the application container -const success = await app.unmount(); -``` - -### Manual loading scheme that requires caching (caching is recommended) - -```js -const cache = true; -const app = await Garfish.loadApp('appName', { - domGetter: () => document.getElementById('id'), -}); - -// Render -if (cache && app.mounted) { - const success = app.show(); -} else { - const success = await app.count(); -} -// unload -const success = app.hide(); -``` - -### What does app.mount do - -1. create the `app` container and add it to the document stream -2. compile the code of the sub-app -3. get the `provider` of the child application -4. call the `app.options.beforeMount` hook -5. call `provider.render` 6. -6. set `app.display` and `app.counted` to `true` -7. set `app` to `Garfish.activeApps` -8. Call the `app.options.afterMount` hook - > If the rendering fails, `app.mount` will return `false`, otherwise it will return `true` if the rendering succeeds, you can do the corresponding processing according to the return value. - -### What events does app.unmount do - -1. call the `app.options.beforeUnmount` hook -2. call `provider.destroy` -3. clear the side effects of the compilation -4. remove the container for `app` from the document stream -5. set `app.display` and `app.counted` to `false` -6. remove the current `app` instance from `Garfish.activeApps` -7. Call the `app.options.afterUnmount` hook - > As above, you can determine if the uninstall was successful based on the return value. - -### What events does app.show do? - -1. add the container for `app` to the document stream -2. call `provider.render` 3. -3. set `app.display` to `true` - > As above, you can determine whether the rendering was successful based on the return value. - -### What events does app.hide do - -1. call `provider.destroy` 2. -2. remove the container of `app` from the document stream -3. set `app.display` to `false` - > As above, you can determine if hiding is successful based on the return value. - -### Caching - -Manual loading provides the `cache` function to reuse `app` and avoid wasted performance caused by duplicate compiled code, just pass in the `cache` parameter when `Garfish.loadApp`. - -For example, the following code. - -```js -const app1 = await Garfish.loadApp('appName', { - cache: true, -}); - -const app2 = await Garfish.loadApp('appName', { - cache: true, -}); - -console.log(app1 === app2); // true -``` - -In fact, it will be the same copy for the loaded `promise`, as in the following demo - -```js -const promise1 = Garfish.loadApp('appName', { - cache: true, -}); - -const promise2 = Garfish.loadApp('appName', { - cache: true, -}); - -console.log(promise1 === promise2); // true - -const app1 = await promise1; -const app2 = await promise2; -console.log(app1 === app2); // true -``` diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current/guide/develop/__meta__.md b/website/i18n/en/docusaurus-plugin-content-docs/current/guide/develop/__meta__.md deleted file mode 100644 index 2ef9f64c8..000000000 --- a/website/i18n/en/docusaurus-plugin-content-docs/current/guide/develop/__meta__.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Quick start -collapsed: true -order: 2 ---- diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current/guide/develop/fromZero.md b/website/i18n/en/docusaurus-plugin-content-docs/current/guide/develop/fromZero.md deleted file mode 100644 index 6011d189a..000000000 --- a/website/i18n/en/docusaurus-plugin-content-docs/current/guide/develop/fromZero.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: Build from scratch -slug: /guide/develop/from-zero -order: 1 ---- - -## Main application - -### 1. install Garfish - -```bash -$ yarn add garfish # or npm i garfish -S -``` - -### 2. Register the child application on the main application and start Garfish - -```js -import Garfish from 'garfish'; - -Garfish.run({ - // The base path of the main app, this value needs to be the same as the base path of the main app - basename: '/', - // Note that the #subApp node should be present in the page when running, and can be a function (if it is a function, it will be used as a mount point when the function returns) - domGetter: '#subApp', - apps: [ - { - // The name of each app needs to be unique - name: 'react', - // Can be a function, when the function returns true, the app will be automatically mounted to the page when the activation condition is met. - activeWhen: '/react', - // the entry address of the sub-application, can be HTML address and JS address (the rendering function is handled differently for different modes) - entry: 'http://localhost:3000', - }, - { - name: 'vue', - activeWhen: '/vue', - entry: 'http://localhost:8080', - }, - ], -}); -``` - -After the execution of registering the sub-application information and executing `Garfish.run`, the `Garfish` framework will start the route hijacking ability, when the browser address changes, the `Garfish` framework will immediately trigger the matching logic when the application meets the matching logic will automatically mount the application to the page. And in turn, it will trigger the life cycle of the child application during loading and rendering. - -For example, in the above example. - -- `basename: '/'` -- The React application is activated at `'/react'` -- then the browser jumps to `/react` and `'/react/xxx/xx'` routes will trigger the React app to be mounted in `domGetter` -- If `basename: '/demo'`, then the React app activation path will be `/demo/react` and `'/demo/react/xxx/xx'` - -> **Manual mounts** - -In practical business scenarios, the application mount does not necessarily follow the route change, but may be triggered by certain events to use the mount capability, details of which can be found in **[manual mount](... /advance/loadApp)** - -```javascript -import Garfish from 'garfish'; - -async function loadApp() { - const app = await Garfish.loadApp('vue', { - // loadApp's app will be provided from the information registered during Garfish.run, manually mounted apps appInfo should not provide activeWhen - basename: '/demo/vue', - domGetter: '#subModule', - }); - - await app.mount(); -} - -loadApp(); -``` - -## Sub-applications - -### 1. Provide key rendering and destruction hooks - -```js -import ReactDOM from 'react-dom'; -import App from '. /App'; - -const render = ({ dom, basename }) => { - ReactDOM.render( - // Use the basename provided by the Garfish framework, on which all subroutes of the child app are based, to reach the goal of route isolation and refreshing the route to load the child app components - , - // The document here is a Garfish-constructed subapp container where all the content is placed - // If it's a js entry render it directly in the dom (because there are no other nodes) - // If it's an html entry, it will be rendered in its own html dom node via a selector - dom.querySelector('#root'), - ); -}; - -// This function will be triggered on first load and execution -export const provider = () => { - return { - render, // The hook will be triggered when the application is rendered - destroy({ dom }) { - // The hook will be triggered when the application is destroyed - const root = (dom && dom.querySelector('#root')) || dom; // If it is a JS entry, the incoming node will be used directly as the mount point and destroyed node - if (root) { - // Do the corresponding destruction logic to ensure that the corresponding side effects are also removed when the child application is destroyed - ReactDOM.unmountComponentAtNode(root); - } - }, - }; -}; - -// This allows the sub-application to run independently of the main application to ensure that subsequent sub-applications can run independently of the main application for easy debugging and development -if (!window.__GARFISH__) { - render({ dom: document, basename: '/' }); -} -``` - -### 2. Tweak sub-application-related build configuration - -In addition to providing `provider` export content, the sub-application also needs to add certain `webpack` configurations, as follows, for the meaning of each webpack configuration refer to [webpack configuration documentation](https://webpack.js.org/configuration/ output/#outputlibrary) - -```js -module.exports = { - output: { - // needs to be configured for umd specification - libraryTarget: 'umd', - // Modify non-standard code format to avoid escaping the sandbox - globalObject: 'window', - // Request to ensure that the value is not the same for each child application, otherwise there may be webpack chunks that affect each other - jsonpFunction: 'vue-app-jsonpFunction', - // Ensure that the resource path of the child app becomes an absolute path, so that the relative resources of the child app do not become relative resources on the main app, because the child app and the main app are in the same document stream, and the relative path is relative to the main app - publicPath: 'http://localhost:8000', - }, - devServer: { - // ensure that the application port is not the same in development mode - port: '8000', - headers: { - // Ensure that the resources of the sub-application support cross-domain, after online you need to ensure that the resources of the sub-application will not have cross-domain problems when loaded in the environment of the main application (** also need to limit the scope of attention to security issues**) - 'Access-Control-Allow-Origin': '*', - }, - }, -}; -``` - -## Summary - -The main cost of building a set of micro front-end master and child applications with Garfish comes from two sources - -- Build of the main application - - Registering the basic information of the sub-application - - Scheduling and managing the sub-application on the main application using Garfish -- Transformation of the sub-application - - Provide rendering and destruction lifecycle of the application by exporting `provider`. - - Provide rendering nodes in the rendering lifecycle for different entry modes provided - - use `basename` provided by the framework as the base of the application in the rendering lifecycle `basename` has reached the goal of routing isolation, refreshing routes to load sub-application components - - add compatible rendering logic in non-micro front-end mode so that its sub-applications can run independently (in general it is recommended that users only use html entry) - - Add the corresponding build configuration diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current/guide/start/__meta__.md b/website/i18n/en/docusaurus-plugin-content-docs/current/guide/start/__meta__.md deleted file mode 100644 index 6e69a09a6..000000000 --- a/website/i18n/en/docusaurus-plugin-content-docs/current/guide/start/__meta__.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: guide -collapsed: false -order: 1 ---- diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current/guide/start/index.md b/website/i18n/en/docusaurus-plugin-content-docs/current/guide/start/index.md deleted file mode 100644 index 8789419b5..000000000 --- a/website/i18n/en/docusaurus-plugin-content-docs/current/guide/start/index.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Garfish Introduction -slug: /guide -order: 1 ---- - -# About Garfish - -## What is Garfish - -Garfish originated from the actual scenario of [headline](http://mp.toutiao.com), which turned into a Monolithic-Applications ([boulder-application](https://en.wikipedia.org/wiki/Monolithic \_application), while the team personnel maintaining them are scattered and the project is large, leading to low development and debugging efficiency and difficulties in going online (code merging interdependencies), which becomes an important factor blocking business development. - -So in 2018, Garfish, a micro front-end framework, was derived, and after a lot of validation and polishing of practical scenarios on the business side, Garfish gradually matured. With more business needs for micro front-end, Garfish is in the process of iteration and has accumulated rich experience in micro front-end problem solving. - -Garfish is a set of micro front-end solution, mainly used to solve the problems of cross-team collaboration, technology system diversification, and web application complexity brought by modern web applications in the context of front-end ecological boom and web application increasing complexity. Garfish is a micro front-end solution for solving the problems of cross-team collaboration, diverse technology systems, and increasingly complex web applications. - -## Framework Features - -- 🌈 **Rich and efficient product features** - - - Garfish micro front-end sub-application supports any kind of framework and technology system access - - Garfish micro front-end sub-application supports "independent development", "independent testing" and "independent deployment - - Powerful pre-loading capability, automatically record user application loading habits to increase the loading weight, and greatly reduce the application switching time - - Support dependency sharing, which greatly reduces the overall package size and the repeated loading of dependencies - - Built-in data collection to effectively sense the state of the application during operation - - Support for multiple instance capability, can run multiple sub-applications in the page at the same time to enhance the business splitting efforts - - Provides efficient and available debugging tools to assist users in the micro front-end mode brings different development experience problems from the traditional R&D model - -- 📦 **Highly scalable core module** - - - The Loader core module supports HTML entry and JS entry, making it easy to access micro front-end applications. - - Router module provides route-driven, master-child route isolation, users only need to configure the routing table application can complete the independent rendering and destruction, the user does not need to care about the internal logic - - Sandbox module provides runtime isolation for the application's Runtime, which can effectively isolate the side effects of JS and Style on the application - - Store provides a set of simple communication data exchange mechanism - -- 🎯 **Highly scalable plug-in mechanism** (coming soon...) - - - Provides business plugins to meet various customization needs of business parties - -## Architecture Design - -! [image.png](https://p-vcloud.byteimg.com/tos-cn-i-em5hxbkur4/d456c7d2235c41daa298aba69ade435f~tplv-em5hxbkur4-noop.image?width= 1126&height=454) - -## When to use - -If you have many team members, many types of projects, and want to make it a "cohesive single product: - -- The project has team members from multiple teams -- Requirements crowding occurs in multiple iterations within the project, affecting testing and release efficiency -- Cross-space and cross-time dimensions lead to the inability to unify the technical system within the team -- Multiple front-end applications need to achieve the "single product with cohesion" feature -- Some parts of the "cohesive single product" want to achieve independent development, independent release, independent testing, independent grayscale and other capabilities diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current/issues/childApp.md b/website/i18n/en/docusaurus-plugin-content-docs/current/issues/childApp.md deleted file mode 100644 index 8adad3615..000000000 --- a/website/i18n/en/docusaurus-plugin-content-docs/current/issues/childApp.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Sub-application error report -slug: /issues -order: 1 ---- - -## Recommended Configuration - -If you have a problem with accessing a sub-application and cannot get the sub-application export. You can first check yourself by following these steps. - -1. Check if the sub-application has `provider` correctly `exported`. -2. Check if the child application is configured with the `output` configuration of `webpack`. 3. -3. If it is a `js` entry, you need to make sure that the resources of the child application are packaged as a `bundle`, if some of the dependencies are not packaged as a `bundle`, it will not load properly - -```js -// webpack.config.js -{ - output: { - libraryTarget: 'umd', - }, -} -``` - -3. Since `webpackjsonp` may conflict, it is possible to configure different `webpackjsonp` functions for the child application and the main application. - :::note - [webpack5 doesn't need this configuration](https://webpack.js.org/blog/2020-10-10-webpack-5-release/#automatic-unique-naming) - ::: - -```js -// main application webpack.config.js -{ - output: { - jsonpFunction: 'masterWebpackJsonp', - }, -} -``` - -```js -// Sub-application A webpack.config.js -{ - output: { - globalObject: 'window', - jsonpFunction: 'appAWebpackJsonp', - }, -} - -``` - -```js -// Sub-application B webpack.config.js -{ - output: { - globalObject: 'window', - jsonpFunction: 'appBAWebpackJsonp', - }, -} -``` - -This is a problem that we will subsequently work to circumvent at the framework level to make it non-perceptible to the user. - -## webpack 5 - -- Configure `injectClient`, otherwise webpack 5 defaults to `exports` of this `client`. -- webpack-dev-server needs to be upgraded to `4.0.0-beta.1` or higher - -! [image.png](https://p-vcloud.byteimg.com/tos-cn-i-em5hxbkur4/170af76e7e7f41199b610d0ff252585a~tplv-em5hxbkur4-noop.image?width= 1316&height=574) - -! [image.png](https://p-vcloud.byteimg.com/tos-cn-i-em5hxbkur4/08ccaa4185114155bc423ac64795c3c7~tplv-em5hxbkur4-noop.image?width= 2186&height=882) diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current/issues/multipleApp.md b/website/i18n/en/docusaurus-plugin-content-docs/current/issues/multipleApp.md deleted file mode 100644 index c73496150..000000000 --- a/website/i18n/en/docusaurus-plugin-content-docs/current/issues/multipleApp.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Multiple Garfish Instances -slug: /issues/multipleApp -order: 2 ---- - -## Non-Nested Scenarios - -- In non-nested scenarios, sub-applications should not introduce Garfish packages in the installation and import them for use. -- If you want to use the Garfish package in a micro front-end scenario, you can use the interface via `window.Garfish` when you are in the micro front-end environment. - -```js -if (window.__GARFISH__) { - window.Garfish.xx; -} -``` - -## Nested scenarios - -- Garfish is currently designed internally to support nested scenarios, so if the business has a claim on this piece you can use it to help us advance our capabilities in nested scenarios together. diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current/issues/oldApp.md b/website/i18n/en/docusaurus-plugin-content-docs/current/issues/oldApp.md deleted file mode 100644 index 0ad9274ad..000000000 --- a/website/i18n/en/docusaurus-plugin-content-docs/current/issues/oldApp.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Old application transformation -slug: /issues/oldApp -order: 3 ---- - -## How to access sub-applications of an already existing `SPA` application - -### Scenario Description - -- Many `SPA` applications that need to be transformed into micro front ends are old applications that already exist. -- It may be necessary to gradually disassemble some of the routes within the application and turn them into sub-applications. -- How the existing routes of the main application coexist with the micro front-end route driver is commonly encountered during the migration process. - -### How to transform step by step (using `react` as an example) - -1. add `id` as a mount point for `micro-app`, set aside for subapplication mount, and the content of `Router` section is for other routes of the main application. -2. Add the `Router` content to be empty when the main application matches the subapplication route prefix. -3. When configuring the subapplication list, the prefix when the `Router` content is empty is used as the subapplication activation condition prefix. - -The root component of the main application. - -```jsx - - -
-
- -
-
- - -``` - -routes. - -```js -export default [ - { - path: '/platform/search', - component: Search, - }, - { - // Applications starting with /platform/micro-app are not displayed in Router - path: '/platform/micro-app', - component: function () { - return null; - }, - }, - { - component: Home, - }, -]; -``` - -Main entry point. - -```js -Garfish.run({ - domGetter: '#micro-app', - basename: '/platform/micro-app', - apps: [ - ... - ], -}); -``` diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current/issues/router.md b/website/i18n/en/docusaurus-plugin-content-docs/current/issues/router.md deleted file mode 100644 index 0697a6aba..000000000 --- a/website/i18n/en/docusaurus-plugin-content-docs/current/issues/router.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: routing problem -slug: /issues/router -order: 4 ---- - -The main application routing is currently only supported in `history` mode, the `basename` of the child application routing is based on the main application, please refer to [child application basename configuration](/api/#basename) for details. - -## Why does the main application only support history mode? - -- Garfish currently uses namespaces to avoid routing conflicts between applications. - -- The reason why the main application only supports `history` mode is that `hash` routes cannot be used as the base routes for child applications, which may lead to route conflicts between the main application and child applications. - -## Why can't the root route be used as an activation condition for a child application? - -- Some businesses want to use the root route as the activation condition of the sub-application, for example `garfish.bytedance.com` triggers the rendering of the sub-application. Since the activation condition of the current sub-application **string is the shortest match principle**, if the sub-application `activeWhen: '/'` indicates that `'/xxx'` will be activated. - -- The reason for the shortest match principle is that we need to determine if a child route of a child application is active, and if it is likely to be a child route of a child application, we may activate that application. - -- The reason for this restriction is that if the activation condition of a child application is `/`, then `/xx` of that application may be a child route of another child application, which may cause conflicts with other applications and cause confusion. - -## What is the basename that the child application render function gets and what does it do? - -Why is it recommended that the sub-application take the `basename` passed through the `provider` as the `basename` of the sub-application, some business parties directly add `basename` to the sub-application by agreement in the actual process to achieve the effect of isolation, but the use of this method may lead to the main application if the change `basename` may cause the sub-application can not be isolated. basename` may cause the child application can not be changed together to take effect. - -For example - -1. the main application currently visits `garfish.bytedance.com` to access the site's home page, the current `basename` is `/`, the sub-application vue, the access path is `garfish.bytedance.com/vue` - -2. if the main application wants to change `basename` to `/site`, the access path of the main application becomes `garfish.bytedance.com/site` and the access path of the child vue becomes `garfish.bytedance.com/site/vue`. 3. - -3. So it is recommended that the sub-application use the `basename` passed in the `provider` as the base route for its own application, to ensure that the relative path of the sub-application still matches the overall change after the main application changes its route - -:::note -In micro front-end scenario, each sub-application may have its own routing scenario. To ensure that the routes between sub-applications do not conflict, the Garfish framework uses the configured `basename` + `sub-application's activeWhen` matching path as the sub-application's base path. - -- If `basename: /demo` is configured on Garfish and the active path of the child application is: `/vue2`, then the child application gets the active path as: `/demo/vue2` - -- If the activation condition of the sub-application is a function, each time a route change occurs, the activation function of the sub-application will be verified by checking that the function returns `true`, which means that the current activation condition is met and will trigger the activation of the route. - -- Garfish will pass the current path into the activation function to get the longest activation path of the sub-application, and pass `basename` + `longest activation path of the sub-application` to the sub-application parameters - -- **Sub-applications that have their own routes must use basename as the base path for the sub-application in a micro front-end scenario, without which the sub-application's routes may conflict with the main application and other applications** - ::: diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current/issues/style.md b/website/i18n/en/docusaurus-plugin-content-docs/current/issues/style.md deleted file mode 100644 index 919cddb4e..000000000 --- a/website/i18n/en/docusaurus-plugin-content-docs/current/issues/style.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: style question -slug: /issues/style -order: 5 ---- - -## Missing styles - -Maybe the `render` function exported by the child application is wrong. - -- The `render` is rendered directly to the root of the child application, so the styles added are overwritten by the `render` and lost. -- It is very likely that the style is lost because the `dom` passed to the framework is not properly used as a mount node, since the Garfish micro front-end framework now has two entry methods: `html entry`, `js entry`. - -### When used as `html entry` - -As `html entry`, the child application mount point needs to be selected based on the incoming `dom` node. Because in `html entry`, it is actually similar to the `iframe` model, where all `dom` structures of the child application are mounted to the document stream of the main application when it runs independently. So the child app needs to find its mount point based on the child app's `dom` structure when rendering. - -
-

Errors

- -```js{6} -export const provider = () => { - return { - render({ dom }) { - ReactDOM.render(React.createElement(HotApp), dom); - }, - - destroy({ dom }) { - console.log(dom); - }, - }; -}; -``` - -
- -
-

correct

- -```js {6} -export const provider = () => { - return { - render({ dom }) { - ReactDOM.render(React.createElement(HotApp), dom.querySelector('#root')); - }, - - destroy({ dom }) { - // Also, destroy should be executed correctly - const root = dom && dom.querySelector('#root'); - if (root) { - ReactDOM.unmountComponentAtNode(root); - } - }, - }; -}; -``` - -
- -### When used as a `js entry` - -```js -export const provider = ({ dom , basename}) => ({ - render(){ - ReactDOM.render(, dom); - }, - - destroy({ dom }}) { - ReactDOM.unmountComponentAtNode(dom); - }, -}); -``` - -## Main child application style conflict - -### arco-design multi-version style conflicts - -1. [Arco-design Global Configuration ConfigProvider](https://arco.design/react/components/config-provider) -2. set different `prefixCls` prefixes for child applications - -### ant-design style conflicts - -1. Configure `webpack` configuration - -```js -module.exports = { - module: { - rules: [ - { - test: /\.less$/i, - use: [ - { loader: 'style-loader' }, - { loader: 'css-loader' }, - { - loader: 'less-loader', - options: { - modifyVars: { - '@ant-prefix': 'define-prefix', // customize your own prefix - }, - javascriptEnabled: true, - }, - }, - ], - }, - ], - }, -}; -``` - -2. Configure the public prefix: [antdesign-config](https://ant.design/components/config-provider/#API) - -```js -import { ConfigProvider } from 'antd'; - -export default () => ( - - - 0.5%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - } -} diff --git a/website/plugin/slardar/index.js b/website/plugin/slardar/index.js deleted file mode 100644 index 44fbf780f..000000000 --- a/website/plugin/slardar/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const path = require('path'); - -module.exports = function pluginSlardar(context, options) { - return { - name: 'plugin-slardar', - getClientModules() { - return [path.resolve(__dirname, 'initSlardar.js')]; - }, - }; -}; diff --git a/website/plugin/slardar/initSlardar.js b/website/plugin/slardar/initSlardar.js deleted file mode 100644 index 930aac277..000000000 --- a/website/plugin/slardar/initSlardar.js +++ /dev/null @@ -1,66 +0,0 @@ -async function initSlardar() { - if (typeof window !== 'undefined') { - (function (w, d, u, b, n, pc, ga, ae, po, s, p, e, t, pp) { - pc = 'precollect'; - ga = 'getAttribute'; - ae = 'addEventListener'; - po = 'PerformanceObserver'; - s = function (m) { - p = [].slice.call(arguments); - p.push(Date.now(), location.href); - (m == pc ? s.p.a : s.q).push(p); - }; - s.q = []; - s.p = { a: [] }; - w[n] = s; - e = document.createElement('script'); - e.src = u + '?bid=' + b + '&globalName=' + n; - e.crossOrigin = - u.indexOf('sdk-web') > 0 ? 'anonymous' : 'use-credentials'; - d.getElementsByTagName('head')[0].appendChild(e); - if (ae in w) { - s.pcErr = function (e) { - e = e || w.event; - t = e.target || e.srcElement; - if (t instanceof Element || t instanceof HTMLElement) { - if (t[ga]('integrity')) { - w[n](pc, 'sri', t[ga]('href') || t[ga]('src')); - } else { - w[n](pc, 'st', { - tagName: t.tagName, - url: t[ga]('href') || t[ga]('src'), - }); - } - } else { - w[n](pc, 'err', e.error || e.message); - } - }; - s.pcRej = function (e) { - e = e || w.event; - w[n](pc, 'err', e.reason || (e.detail && e.detail.reason)); - }; - w[ae]('error', s.pcErr, true); - w[ae]('unhandledrejection', s.pcRej, true); - } - if ('PerformanceLongTaskTiming' in w) { - pp = s.pp = { entries: [] }; - pp.observer = new PerformanceObserver(function (l) { - pp.entries = pp.entries.concat(l.getEntries()); - }); - pp.observer.observe({ - entryTypes: ['longtask', 'largest-contentful-paint', 'layout-shift'], - }); - } - })( - window, - document, - 'https://lf3-short.ibytedapm.com/slardar/fe/sdk-web/browser.cn.js', - 'garfish_website', - 'Slardar', - ); - window.Slardar('init', { bid: 'garfish_website' }); - window.Slardar('start'); - } -} - -initSlardar(); diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml deleted file mode 100644 index 3978bfd92..000000000 --- a/website/pnpm-lock.yaml +++ /dev/null @@ -1,12919 +0,0 @@ -lockfileVersion: 5.4 - -overrides: - '@docusaurus/theme-common': 2.1.0 - nodejieba: 3.4.3 - -importers: - - .: - specifiers: - '@docusaurus/core': 2.1.0 - '@docusaurus/plugin-ideal-image': 2.1.0 - '@docusaurus/preset-classic': 2.1.0 - '@docusaurus/remark-plugin-npm2yarn': 2.1.0 - '@easyops-cn/docusaurus-search-local': 0.45.0 - '@mdx-js/react': 1.6.22 - '@types/react': ^17.0.47 - '@types/react-dom': ^17.0.17 - cld: 2.7.1 - clsx: 1.1.1 - front-matter: 4.0.2 - nodejieba: 3.4.3 - react: ^17.0.2 - react-dom: ^17.0.2 - swiper: 8.1.6 - dependencies: - '@docusaurus/core': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/plugin-ideal-image': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/preset-classic': 2.1.0_q2ahqybkqvlpd3owch36jrs4tu - '@docusaurus/remark-plugin-npm2yarn': 2.1.0 - '@easyops-cn/docusaurus-search-local': 0.45.0_6xqwaqehq7edoa4cfowcauzbza - '@mdx-js/react': 1.6.22_react@17.0.2 - '@types/react': 17.0.83 - '@types/react-dom': 17.0.25 - cld: 2.7.1 - clsx: 1.1.1 - front-matter: 4.0.2 - nodejieba: 3.4.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - swiper: 8.1.6 - -packages: - - /@algolia/autocomplete-core/1.9.3_algoliasearch@5.12.0: - resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} - dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3_algoliasearch@5.12.0 - '@algolia/autocomplete-shared': 1.9.3_algoliasearch@5.12.0 - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - - search-insights - dev: false - - /@algolia/autocomplete-plugin-algolia-insights/1.9.3_algoliasearch@5.12.0: - resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} - peerDependencies: - search-insights: '>= 1 < 3' - dependencies: - '@algolia/autocomplete-shared': 1.9.3_algoliasearch@5.12.0 - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - dev: false - - /@algolia/autocomplete-preset-algolia/1.17.6_algoliasearch@5.12.0: - resolution: {integrity: sha512-Cvg5JENdSCMuClwhJ1ON1/jSuojaYMiUW2KePm18IkdCzPJj/NXojaOxw58RFtQFpJgfVW8h2E8mEoDtLlMdeA==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - dependencies: - '@algolia/autocomplete-shared': 1.17.6_algoliasearch@5.12.0 - algoliasearch: 5.12.0 - dev: false - - /@algolia/autocomplete-shared/1.17.6_algoliasearch@5.12.0: - resolution: {integrity: sha512-aq/3V9E00Tw2GC/PqgyPGXtqJUlVc17v4cn1EUhSc+O/4zd04Uwb3UmPm8KDaYQQOrkt1lwvCj2vG2wRE5IKhw==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - dependencies: - algoliasearch: 5.12.0 - dev: false - - /@algolia/autocomplete-shared/1.9.3_algoliasearch@5.12.0: - resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - dependencies: - algoliasearch: 5.12.0 - dev: false - - /@algolia/cache-browser-local-storage/4.24.0: - resolution: {integrity: sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==} - dependencies: - '@algolia/cache-common': 4.24.0 - dev: false - - /@algolia/cache-common/4.24.0: - resolution: {integrity: sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==} - dev: false - - /@algolia/cache-in-memory/4.24.0: - resolution: {integrity: sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==} - dependencies: - '@algolia/cache-common': 4.24.0 - dev: false - - /@algolia/client-abtesting/5.12.0: - resolution: {integrity: sha512-hx4eVydkm3yrFCFxmcBtSzI/ykt0cZ6sDWch+v3JTgKpD2WtosMJU3Upv1AjQ4B6COSHCOWEX3vfFxW6OoH6aA==} - engines: {node: '>= 14.0.0'} - dependencies: - '@algolia/client-common': 5.12.0 - '@algolia/requester-browser-xhr': 5.12.0 - '@algolia/requester-fetch': 5.12.0 - '@algolia/requester-node-http': 5.12.0 - dev: false - - /@algolia/client-account/4.24.0: - resolution: {integrity: sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==} - dependencies: - '@algolia/client-common': 4.24.0 - '@algolia/client-search': 4.24.0 - '@algolia/transporter': 4.24.0 - dev: false - - /@algolia/client-analytics/4.24.0: - resolution: {integrity: sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==} - dependencies: - '@algolia/client-common': 4.24.0 - '@algolia/client-search': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/transporter': 4.24.0 - dev: false - - /@algolia/client-analytics/5.12.0: - resolution: {integrity: sha512-EpTsSv6IW8maCfXCDIptgT7+mQJj7pImEkcNUnxR8yUKAHzTogTXv9yGm2WXOZFVuwstd2i0sImhQ1Vz8RH/hA==} - engines: {node: '>= 14.0.0'} - dependencies: - '@algolia/client-common': 5.12.0 - '@algolia/requester-browser-xhr': 5.12.0 - '@algolia/requester-fetch': 5.12.0 - '@algolia/requester-node-http': 5.12.0 - dev: false - - /@algolia/client-common/4.24.0: - resolution: {integrity: sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==} - dependencies: - '@algolia/requester-common': 4.24.0 - '@algolia/transporter': 4.24.0 - dev: false - - /@algolia/client-common/5.12.0: - resolution: {integrity: sha512-od3WmO8qxyfNhKc+K3D17tvun3IMs/xMNmxCG9MiElAkYVbPPTRUYMkRneCpmJyQI0hNx2/EA4kZgzVfQjO86Q==} - engines: {node: '>= 14.0.0'} - dev: false - - /@algolia/client-insights/5.12.0: - resolution: {integrity: sha512-8alajmsYUd+7vfX5lpRNdxqv3Xx9clIHLUItyQK0Z6gwGMbVEFe6YYhgDtwslMAP0y6b0WeJEIZJMLgT7VYpRw==} - engines: {node: '>= 14.0.0'} - dependencies: - '@algolia/client-common': 5.12.0 - '@algolia/requester-browser-xhr': 5.12.0 - '@algolia/requester-fetch': 5.12.0 - '@algolia/requester-node-http': 5.12.0 - dev: false - - /@algolia/client-personalization/4.24.0: - resolution: {integrity: sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==} - dependencies: - '@algolia/client-common': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/transporter': 4.24.0 - dev: false - - /@algolia/client-personalization/5.12.0: - resolution: {integrity: sha512-bUV9HtfkTBgpoVhxFrMkmVPG03ZN1Rtn51kiaEtukucdk3ggjR9Qu1YUfRSU2lFgxr9qJc8lTxwfvhjCeJRcqw==} - engines: {node: '>= 14.0.0'} - dependencies: - '@algolia/client-common': 5.12.0 - '@algolia/requester-browser-xhr': 5.12.0 - '@algolia/requester-fetch': 5.12.0 - '@algolia/requester-node-http': 5.12.0 - dev: false - - /@algolia/client-query-suggestions/5.12.0: - resolution: {integrity: sha512-Q5CszzGWfxbIDs9DJ/QJsL7bP6h+lJMg27KxieEnI9KGCu0Jt5iFA3GkREkgRZxRdzlHbZKkrIzhtHVbSHw/rg==} - engines: {node: '>= 14.0.0'} - dependencies: - '@algolia/client-common': 5.12.0 - '@algolia/requester-browser-xhr': 5.12.0 - '@algolia/requester-fetch': 5.12.0 - '@algolia/requester-node-http': 5.12.0 - dev: false - - /@algolia/client-search/4.24.0: - resolution: {integrity: sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==} - dependencies: - '@algolia/client-common': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/transporter': 4.24.0 - dev: false - - /@algolia/client-search/5.12.0: - resolution: {integrity: sha512-R3qzEytgVLHOGNri+bpta6NtTt7YtkvUe/QBcAmMDjW4Jk1P0eBYIPfvnzIPbINRsLxIq9fZs9uAYBgsrts4Zg==} - engines: {node: '>= 14.0.0'} - dependencies: - '@algolia/client-common': 5.12.0 - '@algolia/requester-browser-xhr': 5.12.0 - '@algolia/requester-fetch': 5.12.0 - '@algolia/requester-node-http': 5.12.0 - dev: false - - /@algolia/events/4.0.1: - resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} - dev: false - - /@algolia/ingestion/1.12.0: - resolution: {integrity: sha512-zpHo6qhR22tL8FsdSI4DvEraPDi/019HmMrCFB/TUX98yzh5ooAU7sNW0qPL1I7+S++VbBmNzJOEU9VI8tEC8A==} - engines: {node: '>= 14.0.0'} - dependencies: - '@algolia/client-common': 5.12.0 - '@algolia/requester-browser-xhr': 5.12.0 - '@algolia/requester-fetch': 5.12.0 - '@algolia/requester-node-http': 5.12.0 - dev: false - - /@algolia/logger-common/4.24.0: - resolution: {integrity: sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==} - dev: false - - /@algolia/logger-console/4.24.0: - resolution: {integrity: sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==} - dependencies: - '@algolia/logger-common': 4.24.0 - dev: false - - /@algolia/monitoring/1.12.0: - resolution: {integrity: sha512-i2AJZED/zf4uhxezAJUhMKoL5QoepCBp2ynOYol0N76+TSoohaMADdPnWCqOULF4RzOwrG8wWynAwBlXsAI1RQ==} - engines: {node: '>= 14.0.0'} - dependencies: - '@algolia/client-common': 5.12.0 - '@algolia/requester-browser-xhr': 5.12.0 - '@algolia/requester-fetch': 5.12.0 - '@algolia/requester-node-http': 5.12.0 - dev: false - - /@algolia/recommend/4.24.0: - resolution: {integrity: sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==} - dependencies: - '@algolia/cache-browser-local-storage': 4.24.0 - '@algolia/cache-common': 4.24.0 - '@algolia/cache-in-memory': 4.24.0 - '@algolia/client-common': 4.24.0 - '@algolia/client-search': 4.24.0 - '@algolia/logger-common': 4.24.0 - '@algolia/logger-console': 4.24.0 - '@algolia/requester-browser-xhr': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/requester-node-http': 4.24.0 - '@algolia/transporter': 4.24.0 - dev: false - - /@algolia/recommend/5.12.0: - resolution: {integrity: sha512-0jmZyKvYnB/Bj5c7WKsKedOUjnr0UtXm0LVFUdQrxXfqOqvWv9n6Vpr65UjdYG4Q49kRQxhlwtal9WJYrYymXg==} - engines: {node: '>= 14.0.0'} - dependencies: - '@algolia/client-common': 5.12.0 - '@algolia/requester-browser-xhr': 5.12.0 - '@algolia/requester-fetch': 5.12.0 - '@algolia/requester-node-http': 5.12.0 - dev: false - - /@algolia/requester-browser-xhr/4.24.0: - resolution: {integrity: sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==} - dependencies: - '@algolia/requester-common': 4.24.0 - dev: false - - /@algolia/requester-browser-xhr/5.12.0: - resolution: {integrity: sha512-KxwleraFuVoEGCoeW6Y1RAEbgBMS7SavqeyzWdtkJc6mXeCOJXn1iZitb8Tyn2FcpMNUKlSm0adrUTt7G47+Ow==} - engines: {node: '>= 14.0.0'} - dependencies: - '@algolia/client-common': 5.12.0 - dev: false - - /@algolia/requester-common/4.24.0: - resolution: {integrity: sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==} - dev: false - - /@algolia/requester-fetch/5.12.0: - resolution: {integrity: sha512-FuDZXUGU1pAg2HCnrt8+q1VGHKChV/LhvjvZlLOT7e56GJie6p+EuLu4/hMKPOVuQQ8XXtrTHKIU3Lw+7O5/bQ==} - engines: {node: '>= 14.0.0'} - dependencies: - '@algolia/client-common': 5.12.0 - dev: false - - /@algolia/requester-node-http/4.24.0: - resolution: {integrity: sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==} - dependencies: - '@algolia/requester-common': 4.24.0 - dev: false - - /@algolia/requester-node-http/5.12.0: - resolution: {integrity: sha512-ncDDY7CxZhMs6LIoPl+vHFQceIBhYPY5EfuGF1V7beO0U38xfsCYEyutEFB2kRzf4D9Gqppn3iWX71sNtrKcuw==} - engines: {node: '>= 14.0.0'} - dependencies: - '@algolia/client-common': 5.12.0 - dev: false - - /@algolia/transporter/4.24.0: - resolution: {integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==} - dependencies: - '@algolia/cache-common': 4.24.0 - '@algolia/logger-common': 4.24.0 - '@algolia/requester-common': 4.24.0 - dev: false - - /@ampproject/remapping/2.3.0: - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - dev: false - - /@babel/code-frame/7.26.2: - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - dev: false - - /@babel/compat-data/7.26.2: - resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/core/7.12.9: - resolution: {integrity: sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 - '@babel/helper-module-transforms': 7.26.0_@babel+core@7.12.9 - '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.2 - '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - convert-source-map: 1.9.0 - debug: 4.3.7 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - lodash: 4.17.21 - resolve: 1.22.8 - semver: 5.7.2 - source-map: 0.5.7 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/core/7.26.0: - resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-module-transforms': 7.26.0_@babel+core@7.26.0 - '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.2 - '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - convert-source-map: 2.0.0 - debug: 4.3.7 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/generator/7.26.2: - resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.0.2 - dev: false - - /@babel/helper-annotate-as-pure/7.25.9: - resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.26.0 - dev: false - - /@babel/helper-builder-binary-assignment-operator-visitor/7.25.9: - resolution: {integrity: sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-compilation-targets/7.25.9: - resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.26.2 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.2 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: false - - /@babel/helper-create-class-features-plugin/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/helper-replace-supers': 7.25.9_@babel+core@7.26.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.25.9 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-create-regexp-features-plugin/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - regexpu-core: 6.1.1 - semver: 6.3.1 - dev: false - - /@babel/helper-define-polyfill-provider/0.6.2_@babel+core@7.26.0: - resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - debug: 4.3.7 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-member-expression-to-functions/7.25.9: - resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-module-imports/7.25.9: - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-module-transforms/7.26.0_@babel+core@7.12.9: - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-module-transforms/7.26.0_@babel+core@7.26.0: - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-optimise-call-expression/7.25.9: - resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.26.0 - dev: false - - /@babel/helper-plugin-utils/7.10.4: - resolution: {integrity: sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==} - dev: false - - /@babel/helper-plugin-utils/7.25.9: - resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/helper-remap-async-to-generator/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-wrap-function': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-replace-supers/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-simple-access/7.25.9: - resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-skip-transparent-expression-wrappers/7.25.9: - resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-string-parser/7.25.9: - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/helper-validator-identifier/7.25.9: - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/helper-validator-option/7.25.9: - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/helper-wrap-function/7.25.9: - resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helpers/7.26.0: - resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.25.9 - '@babel/types': 7.26.0 - dev: false - - /@babel/parser/7.26.2: - resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.26.0 - dev: false - - /@babel/plugin-bugfix-firefox-class-in-computed-class-key/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-bugfix-safari-class-field-initializer-scope/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-transform-optional-chaining': 7.25.9_@babel+core@7.26.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-proposal-object-rest-spread/7.12.1_@babel+core@7.12.9: - resolution: {integrity: sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 - '@babel/plugin-transform-parameters': 7.25.9_@babel+core@7.12.9 - dev: false - - /@babel/plugin-proposal-private-property-in-object/7.21.0-placeholder-for-preset-env.2_@babel+core@7.26.0: - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - dev: false - - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.26.0: - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-syntax-import-assertions/7.26.0_@babel+core@7.26.0: - resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-syntax-import-attributes/7.26.0_@babel+core@7.26.0: - resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-syntax-jsx/7.12.1_@babel+core@7.12.9: - resolution: {integrity: sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-syntax-jsx/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.12.9: - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-syntax-typescript/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-syntax-unicode-sets-regex/7.18.6_@babel+core@7.26.0: - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9_@babel+core@7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-arrow-functions/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-async-generator-functions/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-remap-async-to-generator': 7.25.9_@babel+core@7.26.0 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-async-to-generator/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-remap-async-to-generator': 7.25.9_@babel+core@7.26.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-block-scoped-functions/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-block-scoping/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-class-properties/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.25.9_@babel+core@7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-class-static-block/7.26.0_@babel+core@7.26.0: - resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.25.9_@babel+core@7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-classes/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-replace-supers': 7.25.9_@babel+core@7.26.0 - '@babel/traverse': 7.25.9 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-computed-properties/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/template': 7.25.9 - dev: false - - /@babel/plugin-transform-destructuring/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-dotall-regex/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9_@babel+core@7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-duplicate-keys/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-duplicate-named-capturing-groups-regex/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9_@babel+core@7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-dynamic-import/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-exponentiation-operator/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-export-namespace-from/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-for-of/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-function-name/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-json-strings/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-literals/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-logical-assignment-operators/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-member-expression-literals/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-modules-amd/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-transforms': 7.26.0_@babel+core@7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-modules-commonjs/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-transforms': 7.26.0_@babel+core@7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-simple-access': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-modules-systemjs/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-transforms': 7.26.0_@babel+core@7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-modules-umd/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-transforms': 7.26.0_@babel+core@7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-named-capturing-groups-regex/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9_@babel+core@7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-new-target/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-nullish-coalescing-operator/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-numeric-separator/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-object-rest-spread/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-parameters': 7.25.9_@babel+core@7.26.0 - dev: false - - /@babel/plugin-transform-object-super/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-replace-supers': 7.25.9_@babel+core@7.26.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-optional-catch-binding/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-optional-chaining/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-parameters/7.25.9_@babel+core@7.12.9: - resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-parameters/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-private-methods/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.25.9_@babel+core@7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-private-property-in-object/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.25.9_@babel+core@7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-property-literals/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-react-constant-elements/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-react-display-name/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-react-jsx-development/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-transform-react-jsx': 7.25.9_@babel+core@7.26.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-react-jsx/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-jsx': 7.25.9_@babel+core@7.26.0 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-react-pure-annotations/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-regenerator/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - regenerator-transform: 0.15.2 - dev: false - - /@babel/plugin-transform-regexp-modifiers/7.26.0_@babel+core@7.26.0: - resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9_@babel+core@7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-reserved-words/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-runtime/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - babel-plugin-polyfill-corejs2: 0.4.11_@babel+core@7.26.0 - babel-plugin-polyfill-corejs3: 0.10.6_@babel+core@7.26.0 - babel-plugin-polyfill-regenerator: 0.6.2_@babel+core@7.26.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-shorthand-properties/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-spread/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-sticky-regex/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-template-literals/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-typeof-symbol/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-typescript/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.25.9_@babel+core@7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-syntax-typescript': 7.25.9_@babel+core@7.26.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-unicode-escapes/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-unicode-property-regex/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9_@babel+core@7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-unicode-regex/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9_@babel+core@7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/plugin-transform-unicode-sets-regex/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9_@babel+core@7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - dev: false - - /@babel/preset-env/7.26.0_@babel+core@7.26.0: - resolution: {integrity: sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.26.2 - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2_@babel+core@7.26.0 - '@babel/plugin-syntax-import-assertions': 7.26.0_@babel+core@7.26.0 - '@babel/plugin-syntax-import-attributes': 7.26.0_@babel+core@7.26.0 - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6_@babel+core@7.26.0 - '@babel/plugin-transform-arrow-functions': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-async-generator-functions': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-async-to-generator': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-block-scoped-functions': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-block-scoping': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-class-properties': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-class-static-block': 7.26.0_@babel+core@7.26.0 - '@babel/plugin-transform-classes': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-computed-properties': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-destructuring': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-dotall-regex': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-duplicate-keys': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-dynamic-import': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-exponentiation-operator': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-export-namespace-from': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-for-of': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-function-name': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-json-strings': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-literals': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-logical-assignment-operators': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-member-expression-literals': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-modules-amd': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-modules-commonjs': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-modules-systemjs': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-modules-umd': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-new-target': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-numeric-separator': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-object-rest-spread': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-object-super': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-optional-catch-binding': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-optional-chaining': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-parameters': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-private-methods': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-private-property-in-object': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-property-literals': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-regenerator': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-regexp-modifiers': 7.26.0_@babel+core@7.26.0 - '@babel/plugin-transform-reserved-words': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-shorthand-properties': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-spread': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-sticky-regex': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-template-literals': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-typeof-symbol': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-unicode-escapes': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-unicode-property-regex': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-unicode-regex': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-unicode-sets-regex': 7.25.9_@babel+core@7.26.0 - '@babel/preset-modules': 0.1.6-no-external-plugins_@babel+core@7.26.0 - babel-plugin-polyfill-corejs2: 0.4.11_@babel+core@7.26.0 - babel-plugin-polyfill-corejs3: 0.10.6_@babel+core@7.26.0 - babel-plugin-polyfill-regenerator: 0.6.2_@babel+core@7.26.0 - core-js-compat: 3.39.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/preset-modules/0.1.6-no-external-plugins_@babel+core@7.26.0: - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/types': 7.26.0 - esutils: 2.0.3 - dev: false - - /@babel/preset-react/7.25.9_@babel+core@7.26.0: - resolution: {integrity: sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-transform-react-display-name': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-react-jsx': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-react-jsx-development': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-react-pure-annotations': 7.25.9_@babel+core@7.26.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/preset-typescript/7.26.0_@babel+core@7.26.0: - resolution: {integrity: sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-syntax-jsx': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-modules-commonjs': 7.25.9_@babel+core@7.26.0 - '@babel/plugin-transform-typescript': 7.25.9_@babel+core@7.26.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/runtime-corejs3/7.26.0: - resolution: {integrity: sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w==} - engines: {node: '>=6.9.0'} - dependencies: - core-js-pure: 3.39.0 - regenerator-runtime: 0.14.1 - dev: false - - /@babel/runtime/7.26.0: - resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - dev: false - - /@babel/template/7.25.9: - resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 - dev: false - - /@babel/traverse/7.25.9: - resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 - '@babel/parser': 7.26.2 - '@babel/template': 7.25.9 - '@babel/types': 7.26.0 - debug: 4.3.7 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/types/7.26.0: - resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - dev: false - - /@colors/colors/1.5.0: - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} - requiresBuild: true - dev: false - optional: true - - /@discoveryjs/json-ext/0.5.7: - resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} - engines: {node: '>=10.0.0'} - dev: false - - /@docsearch/css/3.6.3: - resolution: {integrity: sha512-3uvbg8E7rhqE1C4oBAK3tGlS2qfhi9zpfZgH/yjDPF73vd9B41urVIKujF4rczcF4E3qs34SedhehiDJ4UdNBA==} - dev: false - - /@docsearch/react/3.6.3_q2ahqybkqvlpd3owch36jrs4tu: - resolution: {integrity: sha512-2munr4uBuZq1PG+Ge+F+ldIdxb3Wi8OmEIv2tQQb4RvEvvph+xtQkxwHzVIEnt5s+HecwucuXwB+3JhcZboFLg==} - peerDependencies: - '@types/react': '>= 16.8.0 < 19.0.0' - react: '>= 16.8.0 < 19.0.0' - react-dom: '>= 16.8.0 < 19.0.0' - search-insights: '>= 1 < 3' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - react-dom: - optional: true - search-insights: - optional: true - dependencies: - '@algolia/autocomplete-core': 1.9.3_algoliasearch@5.12.0 - '@algolia/autocomplete-preset-algolia': 1.17.6_algoliasearch@5.12.0 - '@docsearch/css': 3.6.3 - '@types/react': 17.0.83 - algoliasearch: 5.12.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - transitivePeerDependencies: - - '@algolia/client-search' - dev: false - - /@docusaurus/core/2.1.0_lq4mkokl2gfnsgybhafnsozcji: - resolution: {integrity: sha512-/ZJ6xmm+VB9Izbn0/s6h6289cbPy2k4iYFwWDhjiLsVqwa/Y0YBBcXvStfaHccudUC3OfP+26hMk7UCjc50J6Q==} - engines: {node: '>=16.14'} - hasBin: true - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/generator': 7.26.2 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.26.0 - '@babel/plugin-transform-runtime': 7.25.9_@babel+core@7.26.0 - '@babel/preset-env': 7.26.0_@babel+core@7.26.0 - '@babel/preset-react': 7.25.9_@babel+core@7.26.0 - '@babel/preset-typescript': 7.26.0_@babel+core@7.26.0 - '@babel/runtime': 7.26.0 - '@babel/runtime-corejs3': 7.26.0 - '@babel/traverse': 7.25.9 - '@docusaurus/cssnano-preset': 2.1.0 - '@docusaurus/logger': 2.1.0 - '@docusaurus/mdx-loader': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/react-loadable': 5.5.2_react@17.0.2 - '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 - '@docusaurus/utils-common': 2.1.0_@docusaurus+types@2.1.0 - '@docusaurus/utils-validation': 2.1.0_@docusaurus+types@2.1.0 - '@slorber/static-site-generator-webpack-plugin': 4.0.7 - '@svgr/webpack': 6.5.1 - autoprefixer: 10.4.20_postcss@8.4.47 - babel-loader: 8.4.1_q4i3duugge6kopoex4umpvkqdi - babel-plugin-dynamic-import-node: 2.3.3 - boxen: 6.2.1 - chalk: 4.1.2 - chokidar: 3.6.0 - clean-css: 5.3.3 - cli-table3: 0.6.5 - combine-promises: 1.2.0 - commander: 5.1.0 - copy-webpack-plugin: 11.0.0_webpack@5.96.0 - core-js: 3.39.0 - css-loader: 6.11.0_webpack@5.96.0 - css-minimizer-webpack-plugin: 4.2.2_gzdcycskzr6ydtw2bhclskhn64 - cssnano: 5.1.15_postcss@8.4.47 - del: 6.1.1 - detect-port: 1.6.1 - escape-html: 1.0.3 - eta: 1.14.2 - file-loader: 6.2.0_webpack@5.96.0 - fs-extra: 10.1.0 - html-minifier-terser: 6.1.0 - html-tags: 3.3.1 - html-webpack-plugin: 5.6.3_webpack@5.96.0 - import-fresh: 3.3.0 - leven: 3.1.0 - lodash: 4.17.21 - mini-css-extract-plugin: 2.9.2_webpack@5.96.0 - postcss: 8.4.47 - postcss-loader: 7.3.4_b4qnae3lkkone7oqijh5tzkste - prompts: 2.4.2 - react: 17.0.2 - react-dev-utils: 12.0.1_webpack@5.96.0 - react-dom: 17.0.2_react@17.0.2 - react-helmet-async: 1.3.0_sfoxds7t5ydpegc3knd667wn6m - react-loadable: /@docusaurus/react-loadable/5.5.2_react@17.0.2 - react-loadable-ssr-addon-v5-slorber: 1.0.1_2chpki6lqxahr7o7ttpca7wuai - react-router: 5.3.4_react@17.0.2 - react-router-config: 5.1.1_2dl5roaqnyqqppnjni7uetnb3a - react-router-dom: 5.3.4_react@17.0.2 - rtl-detect: 1.1.2 - semver: 7.6.3 - serve-handler: 6.1.6 - shelljs: 0.8.5 - terser-webpack-plugin: 5.3.10_webpack@5.96.0 - tslib: 2.8.1 - update-notifier: 5.1.0 - url-loader: 4.1.1_d2acwi3aond6w7v6aopzsoxtem - wait-on: 6.0.1_debug@4.3.7 - webpack: 5.96.0 - webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 4.15.2_debug@4.3.7+webpack@5.96.0 - webpack-merge: 5.10.0 - webpackbar: 5.0.2_webpack@5.96.0 - transitivePeerDependencies: - - '@docusaurus/types' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/core/2.1.0_ny44vnc5t4rlukh2kzmv2f2kze: - resolution: {integrity: sha512-/ZJ6xmm+VB9Izbn0/s6h6289cbPy2k4iYFwWDhjiLsVqwa/Y0YBBcXvStfaHccudUC3OfP+26hMk7UCjc50J6Q==} - engines: {node: '>=16.14'} - hasBin: true - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/generator': 7.26.2 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.26.0 - '@babel/plugin-transform-runtime': 7.25.9_@babel+core@7.26.0 - '@babel/preset-env': 7.26.0_@babel+core@7.26.0 - '@babel/preset-react': 7.25.9_@babel+core@7.26.0 - '@babel/preset-typescript': 7.26.0_@babel+core@7.26.0 - '@babel/runtime': 7.26.0 - '@babel/runtime-corejs3': 7.26.0 - '@babel/traverse': 7.25.9 - '@docusaurus/cssnano-preset': 2.1.0 - '@docusaurus/logger': 2.1.0 - '@docusaurus/mdx-loader': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/react-loadable': 5.5.2_react@17.0.2 - '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 - '@docusaurus/utils-common': 2.1.0_@docusaurus+types@2.1.0 - '@docusaurus/utils-validation': 2.1.0_@docusaurus+types@2.1.0 - '@slorber/static-site-generator-webpack-plugin': 4.0.7 - '@svgr/webpack': 6.5.1 - autoprefixer: 10.4.20_postcss@8.4.47 - babel-loader: 8.4.1_q4i3duugge6kopoex4umpvkqdi - babel-plugin-dynamic-import-node: 2.3.3 - boxen: 6.2.1 - chalk: 4.1.2 - chokidar: 3.6.0 - clean-css: 5.3.3 - cli-table3: 0.6.5 - combine-promises: 1.2.0 - commander: 5.1.0 - copy-webpack-plugin: 11.0.0_webpack@5.96.0 - core-js: 3.39.0 - css-loader: 6.11.0_webpack@5.96.0 - css-minimizer-webpack-plugin: 4.2.2_gzdcycskzr6ydtw2bhclskhn64 - cssnano: 5.1.15_postcss@8.4.47 - del: 6.1.1 - detect-port: 1.6.1 - escape-html: 1.0.3 - eta: 1.14.2 - file-loader: 6.2.0_webpack@5.96.0 - fs-extra: 10.1.0 - html-minifier-terser: 6.1.0 - html-tags: 3.3.1 - html-webpack-plugin: 5.6.3_webpack@5.96.0 - import-fresh: 3.3.0 - leven: 3.1.0 - lodash: 4.17.21 - mini-css-extract-plugin: 2.9.2_webpack@5.96.0 - postcss: 8.4.47 - postcss-loader: 7.3.4_b4qnae3lkkone7oqijh5tzkste - prompts: 2.4.2 - react: 17.0.2 - react-dev-utils: 12.0.1_webpack@5.96.0 - react-dom: 17.0.2_react@17.0.2 - react-helmet-async: 1.3.0_sfoxds7t5ydpegc3knd667wn6m - react-loadable: /@docusaurus/react-loadable/5.5.2_react@17.0.2 - react-loadable-ssr-addon-v5-slorber: 1.0.1_2chpki6lqxahr7o7ttpca7wuai - react-router: 5.3.4_react@17.0.2 - react-router-config: 5.1.1_2dl5roaqnyqqppnjni7uetnb3a - react-router-dom: 5.3.4_react@17.0.2 - rtl-detect: 1.1.2 - semver: 7.6.3 - serve-handler: 6.1.6 - shelljs: 0.8.5 - terser-webpack-plugin: 5.3.10_webpack@5.96.0 - tslib: 2.8.1 - update-notifier: 5.1.0 - url-loader: 4.1.1_d2acwi3aond6w7v6aopzsoxtem - wait-on: 6.0.1 - webpack: 5.96.0 - webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 4.15.2_webpack@5.96.0 - webpack-merge: 5.10.0 - webpackbar: 5.0.2_webpack@5.96.0 - transitivePeerDependencies: - - '@docusaurus/types' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/core/2.1.0_sfoxds7t5ydpegc3knd667wn6m: - resolution: {integrity: sha512-/ZJ6xmm+VB9Izbn0/s6h6289cbPy2k4iYFwWDhjiLsVqwa/Y0YBBcXvStfaHccudUC3OfP+26hMk7UCjc50J6Q==} - engines: {node: '>=16.14'} - hasBin: true - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/generator': 7.26.2 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.26.0 - '@babel/plugin-transform-runtime': 7.25.9_@babel+core@7.26.0 - '@babel/preset-env': 7.26.0_@babel+core@7.26.0 - '@babel/preset-react': 7.25.9_@babel+core@7.26.0 - '@babel/preset-typescript': 7.26.0_@babel+core@7.26.0 - '@babel/runtime': 7.26.0 - '@babel/runtime-corejs3': 7.26.0 - '@babel/traverse': 7.25.9 - '@docusaurus/cssnano-preset': 2.1.0 - '@docusaurus/logger': 2.1.0 - '@docusaurus/mdx-loader': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/react-loadable': 5.5.2_react@17.0.2 - '@docusaurus/utils': 2.1.0 - '@docusaurus/utils-common': 2.1.0 - '@docusaurus/utils-validation': 2.1.0 - '@slorber/static-site-generator-webpack-plugin': 4.0.7 - '@svgr/webpack': 6.5.1 - autoprefixer: 10.4.20_postcss@8.4.47 - babel-loader: 8.4.1_q4i3duugge6kopoex4umpvkqdi - babel-plugin-dynamic-import-node: 2.3.3 - boxen: 6.2.1 - chalk: 4.1.2 - chokidar: 3.6.0 - clean-css: 5.3.3 - cli-table3: 0.6.5 - combine-promises: 1.2.0 - commander: 5.1.0 - copy-webpack-plugin: 11.0.0_webpack@5.96.0 - core-js: 3.39.0 - css-loader: 6.11.0_webpack@5.96.0 - css-minimizer-webpack-plugin: 4.2.2_gzdcycskzr6ydtw2bhclskhn64 - cssnano: 5.1.15_postcss@8.4.47 - del: 6.1.1 - detect-port: 1.6.1 - escape-html: 1.0.3 - eta: 1.14.2 - file-loader: 6.2.0_webpack@5.96.0 - fs-extra: 10.1.0 - html-minifier-terser: 6.1.0 - html-tags: 3.3.1 - html-webpack-plugin: 5.6.3_webpack@5.96.0 - import-fresh: 3.3.0 - leven: 3.1.0 - lodash: 4.17.21 - mini-css-extract-plugin: 2.9.2_webpack@5.96.0 - postcss: 8.4.47 - postcss-loader: 7.3.4_b4qnae3lkkone7oqijh5tzkste - prompts: 2.4.2 - react: 17.0.2 - react-dev-utils: 12.0.1_webpack@5.96.0 - react-dom: 17.0.2_react@17.0.2 - react-helmet-async: 1.3.0_sfoxds7t5ydpegc3knd667wn6m - react-loadable: /@docusaurus/react-loadable/5.5.2_react@17.0.2 - react-loadable-ssr-addon-v5-slorber: 1.0.1_2chpki6lqxahr7o7ttpca7wuai - react-router: 5.3.4_react@17.0.2 - react-router-config: 5.1.1_2dl5roaqnyqqppnjni7uetnb3a - react-router-dom: 5.3.4_react@17.0.2 - rtl-detect: 1.1.2 - semver: 7.6.3 - serve-handler: 6.1.6 - shelljs: 0.8.5 - terser-webpack-plugin: 5.3.10_webpack@5.96.0 - tslib: 2.8.1 - update-notifier: 5.1.0 - url-loader: 4.1.1_d2acwi3aond6w7v6aopzsoxtem - wait-on: 6.0.1 - webpack: 5.96.0 - webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 4.15.2_webpack@5.96.0 - webpack-merge: 5.10.0 - webpackbar: 5.0.2_webpack@5.96.0 - transitivePeerDependencies: - - '@docusaurus/types' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/core/3.5.2_kczqqwrrksyccanxv2qvt4bsba: - resolution: {integrity: sha512-4Z1WkhCSkX4KO0Fw5m/Vuc7Q3NxBG53NE5u59Rs96fWkMPZVSrzEPP16/Nk6cWb/shK7xXPndTmalJtw7twL/w==} - engines: {node: '>=18.0'} - hasBin: true - peerDependencies: - '@mdx-js/react': ^3.0.0 - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/generator': 7.26.2 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.26.0 - '@babel/plugin-transform-runtime': 7.25.9_@babel+core@7.26.0 - '@babel/preset-env': 7.26.0_@babel+core@7.26.0 - '@babel/preset-react': 7.25.9_@babel+core@7.26.0 - '@babel/preset-typescript': 7.26.0_@babel+core@7.26.0 - '@babel/runtime': 7.26.0 - '@babel/runtime-corejs3': 7.26.0 - '@babel/traverse': 7.25.9 - '@docusaurus/cssnano-preset': 3.5.2 - '@docusaurus/logger': 3.5.2 - '@docusaurus/mdx-loader': 3.5.2_srobfwk2qyoopclikxzktgw6ou - '@docusaurus/utils': 3.5.2_@docusaurus+types@3.5.2 - '@docusaurus/utils-common': 3.5.2_@docusaurus+types@3.5.2 - '@docusaurus/utils-validation': 3.5.2_@docusaurus+types@3.5.2 - '@mdx-js/react': 1.6.22_react@17.0.2 - autoprefixer: 10.4.20_postcss@8.4.47 - babel-loader: 9.2.1_q4i3duugge6kopoex4umpvkqdi - babel-plugin-dynamic-import-node: 2.3.3 - boxen: 6.2.1 - chalk: 4.1.2 - chokidar: 3.6.0 - clean-css: 5.3.3 - cli-table3: 0.6.5 - combine-promises: 1.2.0 - commander: 5.1.0 - copy-webpack-plugin: 11.0.0_webpack@5.96.0 - core-js: 3.39.0 - css-loader: 6.11.0_webpack@5.96.0 - css-minimizer-webpack-plugin: 5.0.1_gzdcycskzr6ydtw2bhclskhn64 - cssnano: 6.1.2_postcss@8.4.47 - del: 6.1.1 - detect-port: 1.6.1 - escape-html: 1.0.3 - eta: 2.2.0 - eval: 0.1.8 - file-loader: 6.2.0_webpack@5.96.0 - fs-extra: 11.2.0 - html-minifier-terser: 7.2.0 - html-tags: 3.3.1 - html-webpack-plugin: 5.6.3_webpack@5.96.0 - leven: 3.1.0 - lodash: 4.17.21 - mini-css-extract-plugin: 2.9.2_webpack@5.96.0 - p-map: 4.0.0 - postcss: 8.4.47 - postcss-loader: 7.3.4_b4qnae3lkkone7oqijh5tzkste - prompts: 2.4.2 - react: 17.0.2 - react-dev-utils: 12.0.1_webpack@5.96.0 - react-dom: 17.0.2_react@17.0.2 - react-helmet-async: 1.3.0_sfoxds7t5ydpegc3knd667wn6m - react-loadable: /@docusaurus/react-loadable/6.0.0_react@17.0.2 - react-loadable-ssr-addon-v5-slorber: 1.0.1_2gpknyoragrlwsoamqcp4342sq - react-router: 5.3.4_react@17.0.2 - react-router-config: 5.1.1_2dl5roaqnyqqppnjni7uetnb3a - react-router-dom: 5.3.4_react@17.0.2 - rtl-detect: 1.1.2 - semver: 7.6.3 - serve-handler: 6.1.6 - shelljs: 0.8.5 - terser-webpack-plugin: 5.3.10_webpack@5.96.0 - tslib: 2.8.1 - update-notifier: 6.0.2 - url-loader: 4.1.1_d2acwi3aond6w7v6aopzsoxtem - webpack: 5.96.0 - webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 4.15.2_debug@4.3.7+webpack@5.96.0 - webpack-merge: 5.10.0 - webpackbar: 5.0.2_webpack@5.96.0 - transitivePeerDependencies: - - '@docusaurus/types' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - acorn - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/cssnano-preset/2.1.0: - resolution: {integrity: sha512-pRLewcgGhOies6pzsUROfmPStDRdFw+FgV5sMtLr5+4Luv2rty5+b/eSIMMetqUsmg3A9r9bcxHk9bKAKvx3zQ==} - engines: {node: '>=16.14'} - dependencies: - cssnano-preset-advanced: 5.3.10_postcss@8.4.47 - postcss: 8.4.47 - postcss-sort-media-queries: 4.4.1_postcss@8.4.47 - tslib: 2.8.1 - dev: false - - /@docusaurus/cssnano-preset/3.5.2: - resolution: {integrity: sha512-D3KiQXOMA8+O0tqORBrTOEQyQxNIfPm9jEaJoALjjSjc2M/ZAWcUfPQEnwr2JB2TadHw2gqWgpZckQmrVWkytA==} - engines: {node: '>=18.0'} - dependencies: - cssnano-preset-advanced: 6.1.2_postcss@8.4.47 - postcss: 8.4.47 - postcss-sort-media-queries: 5.2.0_postcss@8.4.47 - tslib: 2.8.1 - dev: false - - /@docusaurus/logger/2.1.0: - resolution: {integrity: sha512-uuJx2T6hDBg82joFeyobywPjSOIfeq05GfyKGHThVoXuXsu1KAzMDYcjoDxarb9CoHCI/Dor8R2MoL6zII8x1Q==} - engines: {node: '>=16.14'} - dependencies: - chalk: 4.1.2 - tslib: 2.8.1 - dev: false - - /@docusaurus/logger/3.5.2: - resolution: {integrity: sha512-LHC540SGkeLfyT3RHK3gAMK6aS5TRqOD4R72BEU/DE2M/TY8WwEUAMY576UUc/oNJXv8pGhBmQB6N9p3pt8LQw==} - engines: {node: '>=18.0'} - dependencies: - chalk: 4.1.2 - tslib: 2.8.1 - dev: false - - /@docusaurus/lqip-loader/2.1.0_webpack@5.96.0: - resolution: {integrity: sha512-4I8Lq+SjF+GvvPGpPh4o8hW66fIoIaY3qUmSRT9anyF9Fa1007JcMqU4LbbDN8/yC6ps3Mfvji46K5WLfQBGgg==} - engines: {node: '>=16.14'} - dependencies: - '@docusaurus/logger': 2.1.0 - file-loader: 6.2.0_webpack@5.96.0 - lodash: 4.17.21 - sharp: 0.30.7 - tslib: 2.8.1 - transitivePeerDependencies: - - webpack - dev: false - - /@docusaurus/mdx-loader/2.1.0_ny44vnc5t4rlukh2kzmv2f2kze: - resolution: {integrity: sha512-i97hi7hbQjsD3/8OSFhLy7dbKGH8ryjEzOfyhQIn2CFBYOY3ko0vMVEf3IY9nD3Ld7amYzsZ8153RPkcnXA+Lg==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@babel/parser': 7.26.2 - '@babel/traverse': 7.25.9 - '@docusaurus/logger': 2.1.0 - '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 - '@mdx-js/mdx': 1.6.22 - escape-html: 1.0.3 - file-loader: 6.2.0_webpack@5.96.0 - fs-extra: 10.1.0 - image-size: 1.1.1 - mdast-util-to-string: 2.0.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - remark-emoji: 2.2.0 - stringify-object: 3.3.0 - tslib: 2.8.1 - unified: 9.2.2 - unist-util-visit: 2.0.3 - url-loader: 4.1.1_d2acwi3aond6w7v6aopzsoxtem - webpack: 5.96.0 - transitivePeerDependencies: - - '@docusaurus/types' - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli - dev: false - - /@docusaurus/mdx-loader/2.1.0_sfoxds7t5ydpegc3knd667wn6m: - resolution: {integrity: sha512-i97hi7hbQjsD3/8OSFhLy7dbKGH8ryjEzOfyhQIn2CFBYOY3ko0vMVEf3IY9nD3Ld7amYzsZ8153RPkcnXA+Lg==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@babel/parser': 7.26.2 - '@babel/traverse': 7.25.9 - '@docusaurus/logger': 2.1.0 - '@docusaurus/utils': 2.1.0 - '@mdx-js/mdx': 1.6.22 - escape-html: 1.0.3 - file-loader: 6.2.0_webpack@5.96.0 - fs-extra: 10.1.0 - image-size: 1.1.1 - mdast-util-to-string: 2.0.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - remark-emoji: 2.2.0 - stringify-object: 3.3.0 - tslib: 2.8.1 - unified: 9.2.2 - unist-util-visit: 2.0.3 - url-loader: 4.1.1_d2acwi3aond6w7v6aopzsoxtem - webpack: 5.96.0 - transitivePeerDependencies: - - '@docusaurus/types' - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli - dev: false - - /@docusaurus/mdx-loader/2.1.0_srobfwk2qyoopclikxzktgw6ou: - resolution: {integrity: sha512-i97hi7hbQjsD3/8OSFhLy7dbKGH8ryjEzOfyhQIn2CFBYOY3ko0vMVEf3IY9nD3Ld7amYzsZ8153RPkcnXA+Lg==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@babel/parser': 7.26.2 - '@babel/traverse': 7.25.9 - '@docusaurus/logger': 2.1.0 - '@docusaurus/utils': 2.1.0_@docusaurus+types@3.5.2 - '@mdx-js/mdx': 1.6.22 - escape-html: 1.0.3 - file-loader: 6.2.0_webpack@5.96.0 - fs-extra: 10.1.0 - image-size: 1.1.1 - mdast-util-to-string: 2.0.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - remark-emoji: 2.2.0 - stringify-object: 3.3.0 - tslib: 2.8.1 - unified: 9.2.2 - unist-util-visit: 2.0.3 - url-loader: 4.1.1_d2acwi3aond6w7v6aopzsoxtem - webpack: 5.96.0 - transitivePeerDependencies: - - '@docusaurus/types' - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli - dev: false - - /@docusaurus/mdx-loader/3.5.2_srobfwk2qyoopclikxzktgw6ou: - resolution: {integrity: sha512-ku3xO9vZdwpiMIVd8BzWV0DCqGEbCP5zs1iHfKX50vw6jX8vQo0ylYo1YJMZyz6e+JFJ17HYHT5FzVidz2IflA==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@docusaurus/logger': 3.5.2 - '@docusaurus/utils': 3.5.2_@docusaurus+types@3.5.2 - '@docusaurus/utils-validation': 3.5.2_@docusaurus+types@3.5.2 - '@mdx-js/mdx': 3.1.0 - '@slorber/remark-comment': 1.0.0 - escape-html: 1.0.3 - estree-util-value-to-estree: 3.1.2 - file-loader: 6.2.0_webpack@5.96.0 - fs-extra: 11.2.0 - image-size: 1.1.1 - mdast-util-mdx: 3.0.0 - mdast-util-to-string: 4.0.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - rehype-raw: 7.0.0 - remark-directive: 3.0.0 - remark-emoji: 4.0.1 - remark-frontmatter: 5.0.0 - remark-gfm: 4.0.0 - stringify-object: 3.3.0 - tslib: 2.8.1 - unified: 11.0.5 - unist-util-visit: 5.0.0 - url-loader: 4.1.1_d2acwi3aond6w7v6aopzsoxtem - vfile: 6.0.3 - webpack: 5.96.0 - transitivePeerDependencies: - - '@docusaurus/types' - - '@swc/core' - - acorn - - esbuild - - supports-color - - typescript - - uglify-js - - webpack-cli - dev: false - - /@docusaurus/module-type-aliases/2.1.0_sfoxds7t5ydpegc3knd667wn6m: - resolution: {integrity: sha512-Z8WZaK5cis3xEtyfOT817u9xgGUauT0PuuVo85ysnFRX8n7qLN1lTPCkC+aCmFm/UcV8h/W5T4NtIsst94UntQ==} - peerDependencies: - react: '*' - react-dom: '*' - dependencies: - '@docusaurus/react-loadable': 5.5.2_react@17.0.2 - '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@types/history': 4.7.11 - '@types/react': 17.0.83 - '@types/react-router-config': 5.0.11 - '@types/react-router-dom': 5.3.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-helmet-async: 2.0.5_react@17.0.2 - react-loadable: /@docusaurus/react-loadable/5.5.2_react@17.0.2 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - dev: false - - /@docusaurus/module-type-aliases/3.5.2_sfoxds7t5ydpegc3knd667wn6m: - resolution: {integrity: sha512-Z+Xu3+2rvKef/YKTMxZHsEXp1y92ac0ngjDiExRdqGTmEKtCUpkbNYH8v5eXo5Ls+dnW88n6WTa+Q54kLOkwPg==} - peerDependencies: - react: '*' - react-dom: '*' - dependencies: - '@docusaurus/types': 3.5.2_sfoxds7t5ydpegc3knd667wn6m - '@types/history': 4.7.11 - '@types/react': 17.0.83 - '@types/react-router-config': 5.0.11 - '@types/react-router-dom': 5.3.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-helmet-async: 2.0.5_react@17.0.2 - react-loadable: /@docusaurus/react-loadable/6.0.0_react@17.0.2 - transitivePeerDependencies: - - '@swc/core' - - acorn - - esbuild - - supports-color - - uglify-js - - webpack-cli - dev: false - - /@docusaurus/plugin-content-blog/2.1.0_aqcfn32vp5sqy3sitrvg66s5ia: - resolution: {integrity: sha512-xEp6jlu92HMNUmyRBEeJ4mCW1s77aAEQO4Keez94cUY/Ap7G/r0Awa6xSLff7HL0Fjg8KK1bEbDy7q9voIavdg==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@docusaurus/core': 2.1.0_lq4mkokl2gfnsgybhafnsozcji - '@docusaurus/logger': 2.1.0 - '@docusaurus/mdx-loader': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 - '@docusaurus/utils-common': 2.1.0_@docusaurus+types@2.1.0 - '@docusaurus/utils-validation': 2.1.0_@docusaurus+types@2.1.0 - cheerio: 1.0.0 - feed: 4.2.2 - fs-extra: 10.1.0 - lodash: 4.17.21 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - reading-time: 1.5.0 - tslib: 2.8.1 - unist-util-visit: 2.0.3 - utility-types: 3.11.0 - webpack: 5.96.0 - transitivePeerDependencies: - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/plugin-content-blog/2.1.0_sfoxds7t5ydpegc3knd667wn6m: - resolution: {integrity: sha512-xEp6jlu92HMNUmyRBEeJ4mCW1s77aAEQO4Keez94cUY/Ap7G/r0Awa6xSLff7HL0Fjg8KK1bEbDy7q9voIavdg==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@docusaurus/core': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/logger': 2.1.0 - '@docusaurus/mdx-loader': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 - '@docusaurus/utils-common': 2.1.0_@docusaurus+types@2.1.0 - '@docusaurus/utils-validation': 2.1.0_@docusaurus+types@2.1.0 - cheerio: 1.0.0 - feed: 4.2.2 - fs-extra: 10.1.0 - lodash: 4.17.21 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - reading-time: 1.5.0 - tslib: 2.8.1 - unist-util-visit: 2.0.3 - utility-types: 3.11.0 - webpack: 5.96.0 - transitivePeerDependencies: - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/plugin-content-docs/2.1.0_aqcfn32vp5sqy3sitrvg66s5ia: - resolution: {integrity: sha512-Rup5pqXrXlKGIC4VgwvioIhGWF7E/NNSlxv+JAxRYpik8VKlWsk9ysrdHIlpX+KJUCO9irnY21kQh2814mlp/Q==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@docusaurus/core': 2.1.0_lq4mkokl2gfnsgybhafnsozcji - '@docusaurus/logger': 2.1.0 - '@docusaurus/mdx-loader': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/module-type-aliases': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 - '@docusaurus/utils-validation': 2.1.0_@docusaurus+types@2.1.0 - '@types/react-router-config': 5.0.11 - combine-promises: 1.2.0 - fs-extra: 10.1.0 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - lodash: 4.17.21 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - tslib: 2.8.1 - utility-types: 3.11.0 - webpack: 5.96.0 - transitivePeerDependencies: - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/plugin-content-docs/2.1.0_sfoxds7t5ydpegc3knd667wn6m: - resolution: {integrity: sha512-Rup5pqXrXlKGIC4VgwvioIhGWF7E/NNSlxv+JAxRYpik8VKlWsk9ysrdHIlpX+KJUCO9irnY21kQh2814mlp/Q==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@docusaurus/core': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/logger': 2.1.0 - '@docusaurus/mdx-loader': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/module-type-aliases': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 - '@docusaurus/utils-validation': 2.1.0_@docusaurus+types@2.1.0 - '@types/react-router-config': 5.0.11 - combine-promises: 1.2.0 - fs-extra: 10.1.0 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - lodash: 4.17.21 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - tslib: 2.8.1 - utility-types: 3.11.0 - webpack: 5.96.0 - transitivePeerDependencies: - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/plugin-content-docs/3.5.2_fmqis6232dntoy5sl77ulgp2ga: - resolution: {integrity: sha512-Bt+OXn/CPtVqM3Di44vHjE7rPCEsRCB/DMo2qoOuozB9f7+lsdrHvD0QCHdBs0uhz6deYJDppAr2VgqybKPlVQ==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@docusaurus/core': 3.5.2_kczqqwrrksyccanxv2qvt4bsba - '@docusaurus/logger': 3.5.2 - '@docusaurus/mdx-loader': 3.5.2_srobfwk2qyoopclikxzktgw6ou - '@docusaurus/module-type-aliases': 3.5.2_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/theme-common': 2.1.0_xkygkzaxcnrdw4pm4wre22mdga - '@docusaurus/types': 3.5.2_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/utils': 3.5.2_@docusaurus+types@3.5.2 - '@docusaurus/utils-common': 3.5.2_@docusaurus+types@3.5.2 - '@docusaurus/utils-validation': 3.5.2_@docusaurus+types@3.5.2 - '@types/react-router-config': 5.0.11 - combine-promises: 1.2.0 - fs-extra: 11.2.0 - js-yaml: 4.1.0 - lodash: 4.17.21 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - tslib: 2.8.1 - utility-types: 3.11.0 - webpack: 5.96.0 - transitivePeerDependencies: - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - acorn - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/plugin-content-pages/2.1.0_aqcfn32vp5sqy3sitrvg66s5ia: - resolution: {integrity: sha512-SwZdDZRlObHNKXTnFo7W2aF6U5ZqNVI55Nw2GCBryL7oKQSLeI0lsrMlMXdzn+fS7OuBTd3MJBO1T4Zpz0i/+g==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@docusaurus/core': 2.1.0_lq4mkokl2gfnsgybhafnsozcji - '@docusaurus/mdx-loader': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 - '@docusaurus/utils-validation': 2.1.0_@docusaurus+types@2.1.0 - fs-extra: 10.1.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - tslib: 2.8.1 - webpack: 5.96.0 - transitivePeerDependencies: - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/plugin-content-pages/2.1.0_sfoxds7t5ydpegc3knd667wn6m: - resolution: {integrity: sha512-SwZdDZRlObHNKXTnFo7W2aF6U5ZqNVI55Nw2GCBryL7oKQSLeI0lsrMlMXdzn+fS7OuBTd3MJBO1T4Zpz0i/+g==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@docusaurus/core': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/mdx-loader': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 - '@docusaurus/utils-validation': 2.1.0_@docusaurus+types@2.1.0 - fs-extra: 10.1.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - tslib: 2.8.1 - webpack: 5.96.0 - transitivePeerDependencies: - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/plugin-debug/2.1.0_q2ahqybkqvlpd3owch36jrs4tu: - resolution: {integrity: sha512-8wsDq3OIfiy6440KLlp/qT5uk+WRHQXIXklNHEeZcar+Of0TZxCNe2FBpv+bzb/0qcdP45ia5i5WmR5OjN6DPw==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@docusaurus/core': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 - fs-extra: 10.1.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-json-view: 1.21.3_q2ahqybkqvlpd3owch36jrs4tu - tslib: 2.8.1 - transitivePeerDependencies: - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - '@types/react' - - bufferutil - - csso - - debug - - encoding - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/plugin-google-analytics/2.1.0_sfoxds7t5ydpegc3knd667wn6m: - resolution: {integrity: sha512-4cgeqIly/wcFVbbWP03y1QJJBgH8W+Bv6AVbWnsXNOZa1yB3AO6hf3ZdeQH9x20v9T2pREogVgAH0rSoVnNsgg==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@docusaurus/core': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/utils-validation': 2.1.0_@docusaurus+types@2.1.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - tslib: 2.8.1 - transitivePeerDependencies: - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/plugin-google-gtag/2.1.0_sfoxds7t5ydpegc3knd667wn6m: - resolution: {integrity: sha512-/3aDlv2dMoCeiX2e+DTGvvrdTA+v3cKQV3DbmfsF4ENhvc5nKV23nth04Z3Vq0Ci1ui6Sn80TkhGk/tiCMW2AA==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@docusaurus/core': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/utils-validation': 2.1.0_@docusaurus+types@2.1.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - tslib: 2.8.1 - transitivePeerDependencies: - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/plugin-ideal-image/2.1.0_sfoxds7t5ydpegc3knd667wn6m: - resolution: {integrity: sha512-Yzi4Yg11U5M38FaKkvYsmYl/9ZkdDoI3f69K+CAWEH/S81DdZ3V/SVfjXHkVVlihRejlquuHYJ64P0Sc8GDtjA==} - engines: {node: '>=16.14'} - peerDependencies: - jimp: '*' - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - peerDependenciesMeta: - jimp: - optional: true - dependencies: - '@docusaurus/core': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/lqip-loader': 2.1.0_webpack@5.96.0 - '@docusaurus/responsive-loader': 1.7.0_sharp@0.30.7 - '@docusaurus/theme-translations': 2.1.0 - '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/utils-validation': 2.1.0_@docusaurus+types@2.1.0 - '@endiliey/react-ideal-image': 0.0.11_upu5otgfeontonxqxg6j7aqjz4 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-waypoint: 10.3.0_react@17.0.2 - sharp: 0.30.7 - tslib: 2.8.1 - webpack: 5.96.0 - transitivePeerDependencies: - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - prop-types - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/plugin-sitemap/2.1.0_sfoxds7t5ydpegc3knd667wn6m: - resolution: {integrity: sha512-2Y6Br8drlrZ/jN9MwMBl0aoi9GAjpfyfMBYpaQZXimbK+e9VjYnujXlvQ4SxtM60ASDgtHIAzfVFBkSR/MwRUw==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@docusaurus/core': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/logger': 2.1.0 - '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 - '@docusaurus/utils-common': 2.1.0_@docusaurus+types@2.1.0 - '@docusaurus/utils-validation': 2.1.0_@docusaurus+types@2.1.0 - fs-extra: 10.1.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - sitemap: 7.1.2 - tslib: 2.8.1 - transitivePeerDependencies: - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/preset-classic/2.1.0_q2ahqybkqvlpd3owch36jrs4tu: - resolution: {integrity: sha512-NQMnaq974K4BcSMXFSJBQ5itniw6RSyW+VT+6i90kGZzTwiuKZmsp0r9lC6BYAvvVMQUNJQwrETmlu7y2XKW7w==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@docusaurus/core': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/plugin-content-blog': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/plugin-content-docs': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/plugin-content-pages': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/plugin-debug': 2.1.0_q2ahqybkqvlpd3owch36jrs4tu - '@docusaurus/plugin-google-analytics': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/plugin-google-gtag': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/plugin-sitemap': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/theme-classic': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/theme-common': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/theme-search-algolia': 2.1.0_fxhxleu7imkdme6nyjsqz4id6i - '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - transitivePeerDependencies: - - '@algolia/client-search' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - '@types/react' - - bufferutil - - csso - - debug - - encoding - - esbuild - - eslint - - lightningcss - - search-insights - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/react-loadable/5.5.2_react@17.0.2: - resolution: {integrity: sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==} - peerDependencies: - react: '*' - dependencies: - '@types/react': 17.0.83 - prop-types: 15.8.1 - react: 17.0.2 - dev: false - - /@docusaurus/react-loadable/6.0.0_react@17.0.2: - resolution: {integrity: sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==} - peerDependencies: - react: '*' - dependencies: - '@types/react': 17.0.83 - react: 17.0.2 - dev: false - - /@docusaurus/remark-plugin-npm2yarn/2.1.0: - resolution: {integrity: sha512-crlbE7XN4m6f5PMW+1K0w1/r6YsJPBHPAnxBu+dwcObBYFKeNnmtci8mBOX/Ey1eeV9wO1yFwaSWKEn1EAbcbQ==} - engines: {node: '>=16.14'} - dependencies: - npm-to-yarn: 1.3.0 - tslib: 2.8.1 - unist-util-visit: 2.0.3 - dev: false - - /@docusaurus/responsive-loader/1.7.0_sharp@0.30.7: - resolution: {integrity: sha512-N0cWuVqTRXRvkBxeMQcy/OF2l7GN8rmni5EzR3HpwR+iU2ckYPnziceojcxvvxQ5NqZg1QfEW0tycQgHp+e+Nw==} - engines: {node: '>=12'} - peerDependencies: - jimp: '*' - sharp: '*' - peerDependenciesMeta: - jimp: - optional: true - sharp: - optional: true - dependencies: - loader-utils: 2.0.4 - sharp: 0.30.7 - dev: false - - /@docusaurus/theme-classic/2.1.0_sfoxds7t5ydpegc3knd667wn6m: - resolution: {integrity: sha512-xn8ZfNMsf7gaSy9+ClFnUu71o7oKgMo5noYSS1hy3svNifRTkrBp6+MReLDsmIaj3mLf2e7+JCBYKBFbaGzQng==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@docusaurus/core': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/mdx-loader': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/module-type-aliases': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/plugin-content-blog': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/plugin-content-docs': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/plugin-content-pages': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/theme-common': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/theme-translations': 2.1.0 - '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 - '@docusaurus/utils-common': 2.1.0_@docusaurus+types@2.1.0 - '@docusaurus/utils-validation': 2.1.0_@docusaurus+types@2.1.0 - '@mdx-js/react': 1.6.22_react@17.0.2 - clsx: 1.2.1 - copy-text-to-clipboard: 3.2.0 - infima: 0.2.0-alpha.42 - lodash: 4.17.21 - nprogress: 0.2.0 - postcss: 8.4.47 - prism-react-renderer: 1.3.5_react@17.0.2 - prismjs: 1.29.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-router-dom: 5.3.4_react@17.0.2 - rtlcss: 3.5.0 - tslib: 2.8.1 - utility-types: 3.11.0 - transitivePeerDependencies: - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/theme-common/2.1.0_ny44vnc5t4rlukh2kzmv2f2kze: - resolution: {integrity: sha512-vT1otpVPbKux90YpZUnvknsn5zvpLf+AW1W0EDcpE9up4cDrPqfsh0QoxGHFJnobE2/qftsBFC19BneN4BH8Ag==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@docusaurus/mdx-loader': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/module-type-aliases': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/plugin-content-blog': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/plugin-content-docs': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/plugin-content-pages': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 - '@types/history': 4.7.11 - '@types/react': 17.0.83 - '@types/react-router-config': 5.0.11 - clsx: 1.2.1 - parse-numeric-range: 1.3.0 - prism-react-renderer: 1.3.5_react@17.0.2 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - tslib: 2.8.1 - utility-types: 3.11.0 - transitivePeerDependencies: - - '@docusaurus/types' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/theme-common/2.1.0_xkygkzaxcnrdw4pm4wre22mdga: - resolution: {integrity: sha512-vT1otpVPbKux90YpZUnvknsn5zvpLf+AW1W0EDcpE9up4cDrPqfsh0QoxGHFJnobE2/qftsBFC19BneN4BH8Ag==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@docusaurus/mdx-loader': 2.1.0_srobfwk2qyoopclikxzktgw6ou - '@docusaurus/module-type-aliases': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/plugin-content-blog': 2.1.0_aqcfn32vp5sqy3sitrvg66s5ia - '@docusaurus/plugin-content-docs': 2.1.0_aqcfn32vp5sqy3sitrvg66s5ia - '@docusaurus/plugin-content-pages': 2.1.0_aqcfn32vp5sqy3sitrvg66s5ia - '@docusaurus/utils': 2.1.0_@docusaurus+types@3.5.2 - '@types/history': 4.7.11 - '@types/react': 17.0.83 - '@types/react-router-config': 5.0.11 - clsx: 1.2.1 - parse-numeric-range: 1.3.0 - prism-react-renderer: 1.3.5_react@17.0.2 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - tslib: 2.8.1 - utility-types: 3.11.0 - transitivePeerDependencies: - - '@docusaurus/types' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/theme-search-algolia/2.1.0_fxhxleu7imkdme6nyjsqz4id6i: - resolution: {integrity: sha512-rNBvi35VvENhucslEeVPOtbAzBdZY/9j55gdsweGV5bYoAXy4mHB6zTGjealcB4pJ6lJY4a5g75fXXMOlUqPfg==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@docsearch/react': 3.6.3_q2ahqybkqvlpd3owch36jrs4tu - '@docusaurus/core': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/logger': 2.1.0 - '@docusaurus/plugin-content-docs': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/theme-common': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze - '@docusaurus/theme-translations': 2.1.0 - '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 - '@docusaurus/utils-validation': 2.1.0_@docusaurus+types@2.1.0 - algoliasearch: 4.24.0 - algoliasearch-helper: 3.22.5_algoliasearch@4.24.0 - clsx: 1.2.1 - eta: 1.14.2 - fs-extra: 10.1.0 - lodash: 4.17.21 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - tslib: 2.8.1 - utility-types: 3.11.0 - transitivePeerDependencies: - - '@algolia/client-search' - - '@docusaurus/types' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - '@types/react' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - search-insights - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/theme-translations/2.1.0: - resolution: {integrity: sha512-07n2akf2nqWvtJeMy3A+7oSGMuu5F673AovXVwY0aGAux1afzGCiqIFlYW3EP0CujvDJAEFSQi/Tetfh+95JNg==} - engines: {node: '>=16.14'} - dependencies: - fs-extra: 10.1.0 - tslib: 2.8.1 - dev: false - - /@docusaurus/theme-translations/3.5.2: - resolution: {integrity: sha512-GPZLcu4aT1EmqSTmbdpVrDENGR2yObFEX8ssEFYTCiAIVc0EihNSdOIBTazUvgNqwvnoU1A8vIs1xyzc3LITTw==} - engines: {node: '>=18.0'} - dependencies: - fs-extra: 11.2.0 - tslib: 2.8.1 - dev: false - - /@docusaurus/types/2.1.0_sfoxds7t5ydpegc3knd667wn6m: - resolution: {integrity: sha512-BS1ebpJZnGG6esKqsjtEC9U9qSaPylPwlO7cQ1GaIE7J/kMZI3FITnNn0otXXu7c7ZTqhb6+8dOrG6fZn6fqzQ==} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@types/history': 4.7.11 - '@types/react': 17.0.83 - commander: 5.1.0 - joi: 17.13.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-helmet-async: 1.3.0_sfoxds7t5ydpegc3knd667wn6m - utility-types: 3.11.0 - webpack: 5.96.0 - webpack-merge: 5.10.0 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - dev: false - - /@docusaurus/types/3.5.2_sfoxds7t5ydpegc3knd667wn6m: - resolution: {integrity: sha512-N6GntLXoLVUwkZw7zCxwy9QiuEXIcTVzA9AkmNw16oc0AP3SXLrMmDMMBIfgqwuKWa6Ox6epHol9kMtJqekACw==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@mdx-js/mdx': 3.1.0 - '@types/history': 4.7.11 - '@types/react': 17.0.83 - commander: 5.1.0 - joi: 17.13.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-helmet-async: 1.3.0_sfoxds7t5ydpegc3knd667wn6m - utility-types: 3.11.0 - webpack: 5.96.0 - webpack-merge: 5.10.0 - transitivePeerDependencies: - - '@swc/core' - - acorn - - esbuild - - supports-color - - uglify-js - - webpack-cli - dev: false - - /@docusaurus/utils-common/2.1.0: - resolution: {integrity: sha512-F2vgmt4yRFgRQR2vyEFGTWeyAdmgKbtmu3sjHObF0tjjx/pN0Iw/c6eCopaH34E6tc9nO0nvp01pwW+/86d1fg==} - engines: {node: '>=16.14'} - peerDependencies: - '@docusaurus/types': '*' - peerDependenciesMeta: - '@docusaurus/types': - optional: true - dependencies: - tslib: 2.8.1 - dev: false - - /@docusaurus/utils-common/2.1.0_@docusaurus+types@2.1.0: - resolution: {integrity: sha512-F2vgmt4yRFgRQR2vyEFGTWeyAdmgKbtmu3sjHObF0tjjx/pN0Iw/c6eCopaH34E6tc9nO0nvp01pwW+/86d1fg==} - engines: {node: '>=16.14'} - peerDependencies: - '@docusaurus/types': '*' - peerDependenciesMeta: - '@docusaurus/types': - optional: true - dependencies: - '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - tslib: 2.8.1 - dev: false - - /@docusaurus/utils-common/3.5.2: - resolution: {integrity: sha512-i0AZjHiRgJU6d7faQngIhuHKNrszpL/SHQPgF1zH4H+Ij6E9NBYGy6pkcGWToIv7IVPbs+pQLh1P3whn0gWXVg==} - engines: {node: '>=18.0'} - peerDependencies: - '@docusaurus/types': '*' - peerDependenciesMeta: - '@docusaurus/types': - optional: true - dependencies: - tslib: 2.8.1 - dev: false - - /@docusaurus/utils-common/3.5.2_@docusaurus+types@3.5.2: - resolution: {integrity: sha512-i0AZjHiRgJU6d7faQngIhuHKNrszpL/SHQPgF1zH4H+Ij6E9NBYGy6pkcGWToIv7IVPbs+pQLh1P3whn0gWXVg==} - engines: {node: '>=18.0'} - peerDependencies: - '@docusaurus/types': '*' - peerDependenciesMeta: - '@docusaurus/types': - optional: true - dependencies: - '@docusaurus/types': 3.5.2_sfoxds7t5ydpegc3knd667wn6m - tslib: 2.8.1 - dev: false - - /@docusaurus/utils-validation/2.1.0: - resolution: {integrity: sha512-AMJzWYKL3b7FLltKtDXNLO9Y649V2BXvrnRdnW2AA+PpBnYV78zKLSCz135cuWwRj1ajNtP4onbXdlnyvCijGQ==} - engines: {node: '>=16.14'} - dependencies: - '@docusaurus/logger': 2.1.0 - '@docusaurus/utils': 2.1.0 - joi: 17.13.3 - js-yaml: 4.1.0 - tslib: 2.8.1 - transitivePeerDependencies: - - '@docusaurus/types' - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli - dev: false - - /@docusaurus/utils-validation/2.1.0_@docusaurus+types@2.1.0: - resolution: {integrity: sha512-AMJzWYKL3b7FLltKtDXNLO9Y649V2BXvrnRdnW2AA+PpBnYV78zKLSCz135cuWwRj1ajNtP4onbXdlnyvCijGQ==} - engines: {node: '>=16.14'} - dependencies: - '@docusaurus/logger': 2.1.0 - '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 - joi: 17.13.3 - js-yaml: 4.1.0 - tslib: 2.8.1 - transitivePeerDependencies: - - '@docusaurus/types' - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli - dev: false - - /@docusaurus/utils-validation/3.5.2: - resolution: {integrity: sha512-m+Foq7augzXqB6HufdS139PFxDC5d5q2QKZy8q0qYYvGdI6nnlNsGH4cIGsgBnV7smz+mopl3g4asbSDvMV0jA==} - engines: {node: '>=18.0'} - dependencies: - '@docusaurus/logger': 3.5.2 - '@docusaurus/utils': 3.5.2 - '@docusaurus/utils-common': 3.5.2 - fs-extra: 11.2.0 - joi: 17.13.3 - js-yaml: 4.1.0 - lodash: 4.17.21 - tslib: 2.8.1 - transitivePeerDependencies: - - '@docusaurus/types' - - '@swc/core' - - esbuild - - supports-color - - typescript - - uglify-js - - webpack-cli - dev: false - - /@docusaurus/utils-validation/3.5.2_@docusaurus+types@3.5.2: - resolution: {integrity: sha512-m+Foq7augzXqB6HufdS139PFxDC5d5q2QKZy8q0qYYvGdI6nnlNsGH4cIGsgBnV7smz+mopl3g4asbSDvMV0jA==} - engines: {node: '>=18.0'} - dependencies: - '@docusaurus/logger': 3.5.2 - '@docusaurus/utils': 3.5.2_@docusaurus+types@3.5.2 - '@docusaurus/utils-common': 3.5.2_@docusaurus+types@3.5.2 - fs-extra: 11.2.0 - joi: 17.13.3 - js-yaml: 4.1.0 - lodash: 4.17.21 - tslib: 2.8.1 - transitivePeerDependencies: - - '@docusaurus/types' - - '@swc/core' - - esbuild - - supports-color - - typescript - - uglify-js - - webpack-cli - dev: false - - /@docusaurus/utils/2.1.0: - resolution: {integrity: sha512-fPvrfmAuC54n8MjZuG4IysaMdmvN5A/qr7iFLbSGSyDrsbP4fnui6KdZZIa/YOLIPLec8vjZ8RIITJqF18mx4A==} - engines: {node: '>=16.14'} - peerDependencies: - '@docusaurus/types': '*' - peerDependenciesMeta: - '@docusaurus/types': - optional: true - dependencies: - '@docusaurus/logger': 2.1.0 - '@svgr/webpack': 6.5.1 - file-loader: 6.2.0_webpack@5.96.0 - fs-extra: 10.1.0 - github-slugger: 1.5.0 - globby: 11.1.0 - gray-matter: 4.0.3 - js-yaml: 4.1.0 - lodash: 4.17.21 - micromatch: 4.0.8 - resolve-pathname: 3.0.0 - shelljs: 0.8.5 - tslib: 2.8.1 - url-loader: 4.1.1_d2acwi3aond6w7v6aopzsoxtem - webpack: 5.96.0 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli - dev: false - - /@docusaurus/utils/2.1.0_@docusaurus+types@2.1.0: - resolution: {integrity: sha512-fPvrfmAuC54n8MjZuG4IysaMdmvN5A/qr7iFLbSGSyDrsbP4fnui6KdZZIa/YOLIPLec8vjZ8RIITJqF18mx4A==} - engines: {node: '>=16.14'} - peerDependencies: - '@docusaurus/types': '*' - peerDependenciesMeta: - '@docusaurus/types': - optional: true - dependencies: - '@docusaurus/logger': 2.1.0 - '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@svgr/webpack': 6.5.1 - file-loader: 6.2.0_webpack@5.96.0 - fs-extra: 10.1.0 - github-slugger: 1.5.0 - globby: 11.1.0 - gray-matter: 4.0.3 - js-yaml: 4.1.0 - lodash: 4.17.21 - micromatch: 4.0.8 - resolve-pathname: 3.0.0 - shelljs: 0.8.5 - tslib: 2.8.1 - url-loader: 4.1.1_d2acwi3aond6w7v6aopzsoxtem - webpack: 5.96.0 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli - dev: false - - /@docusaurus/utils/2.1.0_@docusaurus+types@3.5.2: - resolution: {integrity: sha512-fPvrfmAuC54n8MjZuG4IysaMdmvN5A/qr7iFLbSGSyDrsbP4fnui6KdZZIa/YOLIPLec8vjZ8RIITJqF18mx4A==} - engines: {node: '>=16.14'} - peerDependencies: - '@docusaurus/types': '*' - peerDependenciesMeta: - '@docusaurus/types': - optional: true - dependencies: - '@docusaurus/logger': 2.1.0 - '@docusaurus/types': 3.5.2_sfoxds7t5ydpegc3knd667wn6m - '@svgr/webpack': 6.5.1 - file-loader: 6.2.0_webpack@5.96.0 - fs-extra: 10.1.0 - github-slugger: 1.5.0 - globby: 11.1.0 - gray-matter: 4.0.3 - js-yaml: 4.1.0 - lodash: 4.17.21 - micromatch: 4.0.8 - resolve-pathname: 3.0.0 - shelljs: 0.8.5 - tslib: 2.8.1 - url-loader: 4.1.1_d2acwi3aond6w7v6aopzsoxtem - webpack: 5.96.0 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli - dev: false - - /@docusaurus/utils/3.5.2: - resolution: {integrity: sha512-33QvcNFh+Gv+C2dP9Y9xWEzMgf3JzrpL2nW9PopidiohS1nDcyknKRx2DWaFvyVTTYIkkABVSr073VTj/NITNA==} - engines: {node: '>=18.0'} - peerDependencies: - '@docusaurus/types': '*' - peerDependenciesMeta: - '@docusaurus/types': - optional: true - dependencies: - '@docusaurus/logger': 3.5.2 - '@docusaurus/utils-common': 3.5.2 - '@svgr/webpack': 8.1.0 - escape-string-regexp: 4.0.0 - file-loader: 6.2.0_webpack@5.96.0 - fs-extra: 11.2.0 - github-slugger: 1.5.0 - globby: 11.1.0 - gray-matter: 4.0.3 - jiti: 1.21.6 - js-yaml: 4.1.0 - lodash: 4.17.21 - micromatch: 4.0.8 - prompts: 2.4.2 - resolve-pathname: 3.0.0 - shelljs: 0.8.5 - tslib: 2.8.1 - url-loader: 4.1.1_d2acwi3aond6w7v6aopzsoxtem - utility-types: 3.11.0 - webpack: 5.96.0 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - supports-color - - typescript - - uglify-js - - webpack-cli - dev: false - - /@docusaurus/utils/3.5.2_@docusaurus+types@3.5.2: - resolution: {integrity: sha512-33QvcNFh+Gv+C2dP9Y9xWEzMgf3JzrpL2nW9PopidiohS1nDcyknKRx2DWaFvyVTTYIkkABVSr073VTj/NITNA==} - engines: {node: '>=18.0'} - peerDependencies: - '@docusaurus/types': '*' - peerDependenciesMeta: - '@docusaurus/types': - optional: true - dependencies: - '@docusaurus/logger': 3.5.2 - '@docusaurus/types': 3.5.2_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/utils-common': 3.5.2_@docusaurus+types@3.5.2 - '@svgr/webpack': 8.1.0 - escape-string-regexp: 4.0.0 - file-loader: 6.2.0_webpack@5.96.0 - fs-extra: 11.2.0 - github-slugger: 1.5.0 - globby: 11.1.0 - gray-matter: 4.0.3 - jiti: 1.21.6 - js-yaml: 4.1.0 - lodash: 4.17.21 - micromatch: 4.0.8 - prompts: 2.4.2 - resolve-pathname: 3.0.0 - shelljs: 0.8.5 - tslib: 2.8.1 - url-loader: 4.1.1_d2acwi3aond6w7v6aopzsoxtem - utility-types: 3.11.0 - webpack: 5.96.0 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - supports-color - - typescript - - uglify-js - - webpack-cli - dev: false - - /@easyops-cn/autocomplete.js/0.38.1: - resolution: {integrity: sha512-drg76jS6syilOUmVNkyo1c7ZEBPcPuK+aJA7AksM5ZIIbV57DMHCywiCr+uHyv8BE5jUTU98j/H7gVrkHrWW3Q==} - dependencies: - cssesc: 3.0.0 - immediate: 3.3.0 - dev: false - - /@easyops-cn/docusaurus-search-local/0.45.0_6xqwaqehq7edoa4cfowcauzbza: - resolution: {integrity: sha512-ccJjeYmBHrv2v8Y9eQnH79S0PEKcogACKkEatEKPcad7usQj/14jA9POUUUYW/yougLSXghwe+uIncbuUBuBFg==} - engines: {node: '>=12'} - peerDependencies: - '@docusaurus/theme-common': ^2 || ^3 - react: ^16.14.0 || ^17 || ^18 - react-dom: ^16.14.0 || 17 || ^18 - dependencies: - '@docusaurus/plugin-content-docs': 3.5.2_fmqis6232dntoy5sl77ulgp2ga - '@docusaurus/theme-translations': 3.5.2 - '@docusaurus/utils': 3.5.2 - '@docusaurus/utils-common': 3.5.2 - '@docusaurus/utils-validation': 3.5.2 - '@easyops-cn/autocomplete.js': 0.38.1 - '@node-rs/jieba': 1.10.4 - cheerio: 1.0.0 - clsx: 1.1.1 - debug: 4.3.7 - fs-extra: 10.1.0 - klaw-sync: 6.0.0 - lunr: 2.3.9 - lunr-languages: 1.14.0 - mark.js: 8.11.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - tslib: 2.8.1 - transitivePeerDependencies: - - '@docusaurus/types' - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - acorn - - bufferutil - - csso - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@emnapi/core/1.3.1: - resolution: {integrity: sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==} - requiresBuild: true - dependencies: - '@emnapi/wasi-threads': 1.0.1 - tslib: 2.8.1 - dev: false - optional: true - - /@emnapi/runtime/1.3.1: - resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} - requiresBuild: true - dependencies: - tslib: 2.8.1 - dev: false - optional: true - - /@emnapi/wasi-threads/1.0.1: - resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} - requiresBuild: true - dependencies: - tslib: 2.8.1 - dev: false - optional: true - - /@endiliey/react-ideal-image/0.0.11_upu5otgfeontonxqxg6j7aqjz4: - resolution: {integrity: sha512-QxMjt/Gvur/gLxSoCy7VIyGGGrGmDN+VHcXkN3R2ApoWX0EYUE+hMgPHSW/PV6VVebZ1Nd4t2UnGRBDihu16JQ==} - engines: {node: '>= 8.9.0', npm: '> 3'} - peerDependencies: - prop-types: '>=15' - react: '>=0.14.x' - react-waypoint: '>=9.0.2' - dependencies: - react: 17.0.2 - react-waypoint: 10.3.0_react@17.0.2 - dev: false - - /@hapi/hoek/9.3.0: - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - dev: false - - /@hapi/topo/5.1.0: - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - dependencies: - '@hapi/hoek': 9.3.0 - dev: false - - /@jest/schemas/29.6.3: - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.27.8 - dev: false - - /@jest/types/29.6.3: - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 22.8.6 - '@types/yargs': 17.0.33 - chalk: 4.1.2 - dev: false - - /@jridgewell/gen-mapping/0.3.5: - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - dev: false - - /@jridgewell/resolve-uri/3.1.2: - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - dev: false - - /@jridgewell/set-array/1.2.1: - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - dev: false - - /@jridgewell/source-map/0.3.6: - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - dev: false - - /@jridgewell/sourcemap-codec/1.5.0: - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - dev: false - - /@jridgewell/trace-mapping/0.3.25: - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - dev: false - - /@leichtgewicht/ip-codec/2.0.5: - resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - dev: false - - /@mapbox/node-pre-gyp/1.0.11: - resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} - hasBin: true - dependencies: - detect-libc: 2.0.3 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.7.0 - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.6.3 - tar: 6.2.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - - /@mdx-js/mdx/1.6.22: - resolution: {integrity: sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==} - dependencies: - '@babel/core': 7.12.9 - '@babel/plugin-syntax-jsx': 7.12.1_@babel+core@7.12.9 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 - '@mdx-js/util': 1.6.22 - babel-plugin-apply-mdx-type-prop: 1.6.22_@babel+core@7.12.9 - babel-plugin-extract-import-names: 1.6.22 - camelcase-css: 2.0.1 - detab: 2.0.4 - hast-util-raw: 6.0.1 - lodash.uniq: 4.5.0 - mdast-util-to-hast: 10.0.1 - remark-footnotes: 2.0.0 - remark-mdx: 1.6.22 - remark-parse: 8.0.3 - remark-squeeze-paragraphs: 4.0.0 - style-to-object: 0.3.0 - unified: 9.2.0 - unist-builder: 2.0.3 - unist-util-visit: 2.0.3 - transitivePeerDependencies: - - supports-color - dev: false - - /@mdx-js/mdx/3.1.0: - resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} - dependencies: - '@types/estree': 1.0.6 - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdx': 2.0.13 - collapse-white-space: 2.1.0 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - estree-util-scope: 1.0.0 - estree-walker: 3.0.3 - hast-util-to-jsx-runtime: 2.3.2 - markdown-extensions: 2.0.0 - recma-build-jsx: 1.0.0 - recma-jsx: 1.0.0 - recma-stringify: 1.0.0 - rehype-recma: 1.0.0 - remark-mdx: 3.1.0 - remark-parse: 11.0.0 - remark-rehype: 11.1.1 - source-map: 0.7.4 - unified: 11.0.5 - unist-util-position-from-estree: 2.0.0 - unist-util-stringify-position: 4.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - transitivePeerDependencies: - - acorn - - supports-color - dev: false - - /@mdx-js/react/1.6.22_react@17.0.2: - resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} - peerDependencies: - react: ^16.13.1 || ^17.0.0 - dependencies: - react: 17.0.2 - dev: false - - /@mdx-js/util/1.6.22: - resolution: {integrity: sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==} - dev: false - - /@napi-rs/wasm-runtime/0.2.5: - resolution: {integrity: sha512-kwUxR7J9WLutBbulqg1dfOrMTwhMdXLdcGUhcbCcGwnPLt3gz19uHVdwH1syKVDbE022ZS2vZxOWflFLS0YTjw==} - requiresBuild: true - dependencies: - '@emnapi/core': 1.3.1 - '@emnapi/runtime': 1.3.1 - '@tybys/wasm-util': 0.9.0 - dev: false - optional: true - - /@node-rs/jieba-android-arm-eabi/1.10.4: - resolution: {integrity: sha512-MhyvW5N3Fwcp385d0rxbCWH42kqDBatQTyP8XbnYbju2+0BO/eTeCCLYj7Agws4pwxn2LtdldXRSKavT7WdzNA==} - engines: {node: '>= 10'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@node-rs/jieba-android-arm64/1.10.4: - resolution: {integrity: sha512-XyDwq5+rQ+Tk55A+FGi6PtJbzf974oqnpyCcCPzwU3QVXJCa2Rr4Lci+fx8oOpU4plT3GuD+chXMYLsXipMgJA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@node-rs/jieba-darwin-arm64/1.10.4: - resolution: {integrity: sha512-G++RYEJ2jo0rxF9626KUy90wp06TRUjAsvY/BrIzEOX/ingQYV/HjwQzNPRR1P1o32a6/U8RGo7zEBhfdybL6w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@node-rs/jieba-darwin-x64/1.10.4: - resolution: {integrity: sha512-MmDNeOb2TXIZCPyWCi2upQnZpPjAxw5ZGEj6R8kNsPXVFALHIKMa6ZZ15LCOkSTsKXVC17j2t4h+hSuyYb6qfQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@node-rs/jieba-freebsd-x64/1.10.4: - resolution: {integrity: sha512-/x7aVQ8nqUWhpXU92RZqd333cq639i/olNpd9Z5hdlyyV5/B65LLy+Je2B2bfs62PVVm5QXRpeBcZqaHelp/bg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - - /@node-rs/jieba-linux-arm-gnueabihf/1.10.4: - resolution: {integrity: sha512-crd2M35oJBRLkoESs0O6QO3BBbhpv+tqXuKsqhIG94B1d02RVxtRIvSDwO33QurxqSdvN9IeSnVpHbDGkuXm3g==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@node-rs/jieba-linux-arm64-gnu/1.10.4: - resolution: {integrity: sha512-omIzNX1psUzPcsdnUhGU6oHeOaTCuCjUgOA/v/DGkvWC1jLcnfXe4vdYbtXMh4XOCuIgS1UCcvZEc8vQLXFbXQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@node-rs/jieba-linux-arm64-musl/1.10.4: - resolution: {integrity: sha512-Y/tiJ1+HeS5nnmLbZOE+66LbsPOHZ/PUckAYVeLlQfpygLEpLYdlh0aPpS5uiaWMjAXYZYdFkpZHhxDmSLpwpw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@node-rs/jieba-linux-x64-gnu/1.10.4: - resolution: {integrity: sha512-WZO8ykRJpWGE9MHuZpy1lu3nJluPoeB+fIJJn5CWZ9YTVhNDWoCF4i/7nxz1ntulINYGQ8VVuCU9LD86Mek97g==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@node-rs/jieba-linux-x64-musl/1.10.4: - resolution: {integrity: sha512-uBBD4S1rGKcgCyAk6VCKatEVQb6EDD5I40v/DxODi5CuZVCANi9m5oee/MQbAoaX7RydA2f0OSCE9/tcwXEwUg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@node-rs/jieba-wasm32-wasi/1.10.4: - resolution: {integrity: sha512-Y2umiKHjuIJy0uulNDz9SDYHdfq5Hmy7jY5nORO99B4pySKkcrMjpeVrmWXJLIsEKLJwcCXHxz8tjwU5/uhz0A==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - requiresBuild: true - dependencies: - '@napi-rs/wasm-runtime': 0.2.5 - dev: false - optional: true - - /@node-rs/jieba-win32-arm64-msvc/1.10.4: - resolution: {integrity: sha512-nwMtViFm4hjqhz1it/juQnxpXgqlGltCuWJ02bw70YUDMDlbyTy3grCJPpQQpueeETcALUnTxda8pZuVrLRcBA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@node-rs/jieba-win32-ia32-msvc/1.10.4: - resolution: {integrity: sha512-DCAvLx7Z+W4z5oKS+7vUowAJr0uw9JBw8x1Y23Xs/xMA4Em+OOSiaF5/tCJqZUCJ8uC4QeImmgDFiBqGNwxlyA==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@node-rs/jieba-win32-x64-msvc/1.10.4: - resolution: {integrity: sha512-+sqemSfS1jjb+Tt7InNbNzrRh1Ua3vProVvC4BZRPg010/leCbGFFiQHpzcPRfpxAXZrzG5Y0YBTsPzN/I4yHQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@node-rs/jieba/1.10.4: - resolution: {integrity: sha512-GvDgi8MnBiyWd6tksojej8anIx18244NmIOc1ovEw8WKNUejcccLfyu8vj66LWSuoZuKILVtNsOy4jvg3aoxIw==} - engines: {node: '>= 10'} - optionalDependencies: - '@node-rs/jieba-android-arm-eabi': 1.10.4 - '@node-rs/jieba-android-arm64': 1.10.4 - '@node-rs/jieba-darwin-arm64': 1.10.4 - '@node-rs/jieba-darwin-x64': 1.10.4 - '@node-rs/jieba-freebsd-x64': 1.10.4 - '@node-rs/jieba-linux-arm-gnueabihf': 1.10.4 - '@node-rs/jieba-linux-arm64-gnu': 1.10.4 - '@node-rs/jieba-linux-arm64-musl': 1.10.4 - '@node-rs/jieba-linux-x64-gnu': 1.10.4 - '@node-rs/jieba-linux-x64-musl': 1.10.4 - '@node-rs/jieba-wasm32-wasi': 1.10.4 - '@node-rs/jieba-win32-arm64-msvc': 1.10.4 - '@node-rs/jieba-win32-ia32-msvc': 1.10.4 - '@node-rs/jieba-win32-x64-msvc': 1.10.4 - dev: false - - /@nodelib/fs.scandir/2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: false - - /@nodelib/fs.stat/2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: false - - /@nodelib/fs.walk/1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - dev: false - - /@pnpm/config.env-replace/1.1.0: - resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} - engines: {node: '>=12.22.0'} - dev: false - - /@pnpm/network.ca-file/1.0.2: - resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} - engines: {node: '>=12.22.0'} - dependencies: - graceful-fs: 4.2.10 - dev: false - - /@pnpm/npm-conf/2.3.1: - resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} - engines: {node: '>=12'} - dependencies: - '@pnpm/config.env-replace': 1.1.0 - '@pnpm/network.ca-file': 1.0.2 - config-chain: 1.1.13 - dev: false - - /@polka/url/1.0.0-next.28: - resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} - dev: false - - /@sideway/address/4.1.5: - resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} - dependencies: - '@hapi/hoek': 9.3.0 - dev: false - - /@sideway/formula/3.0.1: - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - dev: false - - /@sideway/pinpoint/2.0.0: - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - dev: false - - /@sinclair/typebox/0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - dev: false - - /@sindresorhus/is/0.14.0: - resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} - engines: {node: '>=6'} - dev: false - - /@sindresorhus/is/4.6.0: - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} - dev: false - - /@sindresorhus/is/5.6.0: - resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} - engines: {node: '>=14.16'} - dev: false - - /@slorber/remark-comment/1.0.0: - resolution: {integrity: sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==} - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - dev: false - - /@slorber/static-site-generator-webpack-plugin/4.0.7: - resolution: {integrity: sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA==} - engines: {node: '>=14'} - dependencies: - eval: 0.1.8 - p-map: 4.0.0 - webpack-sources: 3.2.3 - dev: false - - /@svgr/babel-plugin-add-jsx-attribute/6.5.1_@babel+core@7.26.0: - resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - dev: false - - /@svgr/babel-plugin-add-jsx-attribute/8.0.0_@babel+core@7.26.0: - resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - dev: false - - /@svgr/babel-plugin-remove-jsx-attribute/8.0.0_@babel+core@7.26.0: - resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - dev: false - - /@svgr/babel-plugin-remove-jsx-empty-expression/8.0.0_@babel+core@7.26.0: - resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - dev: false - - /@svgr/babel-plugin-replace-jsx-attribute-value/6.5.1_@babel+core@7.26.0: - resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - dev: false - - /@svgr/babel-plugin-replace-jsx-attribute-value/8.0.0_@babel+core@7.26.0: - resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - dev: false - - /@svgr/babel-plugin-svg-dynamic-title/6.5.1_@babel+core@7.26.0: - resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - dev: false - - /@svgr/babel-plugin-svg-dynamic-title/8.0.0_@babel+core@7.26.0: - resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - dev: false - - /@svgr/babel-plugin-svg-em-dimensions/6.5.1_@babel+core@7.26.0: - resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - dev: false - - /@svgr/babel-plugin-svg-em-dimensions/8.0.0_@babel+core@7.26.0: - resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - dev: false - - /@svgr/babel-plugin-transform-react-native-svg/6.5.1_@babel+core@7.26.0: - resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - dev: false - - /@svgr/babel-plugin-transform-react-native-svg/8.1.0_@babel+core@7.26.0: - resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - dev: false - - /@svgr/babel-plugin-transform-svg-component/6.5.1_@babel+core@7.26.0: - resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} - engines: {node: '>=12'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - dev: false - - /@svgr/babel-plugin-transform-svg-component/8.0.0_@babel+core@7.26.0: - resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} - engines: {node: '>=12'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - dev: false - - /@svgr/babel-preset/6.5.1_@babel+core@7.26.0: - resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@svgr/babel-plugin-add-jsx-attribute': 6.5.1_@babel+core@7.26.0 - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0_@babel+core@7.26.0 - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0_@babel+core@7.26.0 - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1_@babel+core@7.26.0 - '@svgr/babel-plugin-svg-dynamic-title': 6.5.1_@babel+core@7.26.0 - '@svgr/babel-plugin-svg-em-dimensions': 6.5.1_@babel+core@7.26.0 - '@svgr/babel-plugin-transform-react-native-svg': 6.5.1_@babel+core@7.26.0 - '@svgr/babel-plugin-transform-svg-component': 6.5.1_@babel+core@7.26.0 - dev: false - - /@svgr/babel-preset/8.1.0_@babel+core@7.26.0: - resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@svgr/babel-plugin-add-jsx-attribute': 8.0.0_@babel+core@7.26.0 - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0_@babel+core@7.26.0 - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0_@babel+core@7.26.0 - '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0_@babel+core@7.26.0 - '@svgr/babel-plugin-svg-dynamic-title': 8.0.0_@babel+core@7.26.0 - '@svgr/babel-plugin-svg-em-dimensions': 8.0.0_@babel+core@7.26.0 - '@svgr/babel-plugin-transform-react-native-svg': 8.1.0_@babel+core@7.26.0 - '@svgr/babel-plugin-transform-svg-component': 8.0.0_@babel+core@7.26.0 - dev: false - - /@svgr/core/6.5.1: - resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} - engines: {node: '>=10'} - dependencies: - '@babel/core': 7.26.0 - '@svgr/babel-preset': 6.5.1_@babel+core@7.26.0 - '@svgr/plugin-jsx': 6.5.1_@svgr+core@6.5.1 - camelcase: 6.3.0 - cosmiconfig: 7.1.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@svgr/core/8.1.0: - resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} - engines: {node: '>=14'} - dependencies: - '@babel/core': 7.26.0 - '@svgr/babel-preset': 8.1.0_@babel+core@7.26.0 - camelcase: 6.3.0 - cosmiconfig: 8.3.6 - snake-case: 3.0.4 - transitivePeerDependencies: - - supports-color - - typescript - dev: false - - /@svgr/hast-util-to-babel-ast/6.5.1: - resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} - engines: {node: '>=10'} - dependencies: - '@babel/types': 7.26.0 - entities: 4.5.0 - dev: false - - /@svgr/hast-util-to-babel-ast/8.0.0: - resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} - engines: {node: '>=14'} - dependencies: - '@babel/types': 7.26.0 - entities: 4.5.0 - dev: false - - /@svgr/plugin-jsx/6.5.1_@svgr+core@6.5.1: - resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} - engines: {node: '>=10'} - peerDependencies: - '@svgr/core': ^6.0.0 - dependencies: - '@babel/core': 7.26.0 - '@svgr/babel-preset': 6.5.1_@babel+core@7.26.0 - '@svgr/core': 6.5.1 - '@svgr/hast-util-to-babel-ast': 6.5.1 - svg-parser: 2.0.4 - transitivePeerDependencies: - - supports-color - dev: false - - /@svgr/plugin-jsx/8.1.0_@svgr+core@8.1.0: - resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==} - engines: {node: '>=14'} - peerDependencies: - '@svgr/core': '*' - dependencies: - '@babel/core': 7.26.0 - '@svgr/babel-preset': 8.1.0_@babel+core@7.26.0 - '@svgr/core': 8.1.0 - '@svgr/hast-util-to-babel-ast': 8.0.0 - svg-parser: 2.0.4 - transitivePeerDependencies: - - supports-color - dev: false - - /@svgr/plugin-svgo/6.5.1_@svgr+core@6.5.1: - resolution: {integrity: sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==} - engines: {node: '>=10'} - peerDependencies: - '@svgr/core': '*' - dependencies: - '@svgr/core': 6.5.1 - cosmiconfig: 7.1.0 - deepmerge: 4.3.1 - svgo: 2.8.0 - dev: false - - /@svgr/plugin-svgo/8.1.0_@svgr+core@8.1.0: - resolution: {integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==} - engines: {node: '>=14'} - peerDependencies: - '@svgr/core': '*' - dependencies: - '@svgr/core': 8.1.0 - cosmiconfig: 8.3.6 - deepmerge: 4.3.1 - svgo: 3.3.2 - transitivePeerDependencies: - - typescript - dev: false - - /@svgr/webpack/6.5.1: - resolution: {integrity: sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==} - engines: {node: '>=10'} - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-transform-react-constant-elements': 7.25.9_@babel+core@7.26.0 - '@babel/preset-env': 7.26.0_@babel+core@7.26.0 - '@babel/preset-react': 7.25.9_@babel+core@7.26.0 - '@babel/preset-typescript': 7.26.0_@babel+core@7.26.0 - '@svgr/core': 6.5.1 - '@svgr/plugin-jsx': 6.5.1_@svgr+core@6.5.1 - '@svgr/plugin-svgo': 6.5.1_@svgr+core@6.5.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@svgr/webpack/8.1.0: - resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} - engines: {node: '>=14'} - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-transform-react-constant-elements': 7.25.9_@babel+core@7.26.0 - '@babel/preset-env': 7.26.0_@babel+core@7.26.0 - '@babel/preset-react': 7.25.9_@babel+core@7.26.0 - '@babel/preset-typescript': 7.26.0_@babel+core@7.26.0 - '@svgr/core': 8.1.0 - '@svgr/plugin-jsx': 8.1.0_@svgr+core@8.1.0 - '@svgr/plugin-svgo': 8.1.0_@svgr+core@8.1.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: false - - /@szmarczak/http-timer/1.1.2: - resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} - engines: {node: '>=6'} - dependencies: - defer-to-connect: 1.1.3 - dev: false - - /@szmarczak/http-timer/5.0.1: - resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} - engines: {node: '>=14.16'} - dependencies: - defer-to-connect: 2.0.1 - dev: false - - /@trysound/sax/0.2.0: - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - dev: false - - /@tybys/wasm-util/0.9.0: - resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} - requiresBuild: true - dependencies: - tslib: 2.8.1 - dev: false - optional: true - - /@types/acorn/4.0.6: - resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} - dependencies: - '@types/estree': 1.0.6 - dev: false - - /@types/body-parser/1.19.5: - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} - dependencies: - '@types/connect': 3.4.38 - '@types/node': 22.8.6 - dev: false - - /@types/bonjour/3.5.13: - resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} - dependencies: - '@types/node': 22.8.6 - dev: false - - /@types/connect-history-api-fallback/1.5.4: - resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} - dependencies: - '@types/express-serve-static-core': 5.0.1 - '@types/node': 22.8.6 - dev: false - - /@types/connect/3.4.38: - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - dependencies: - '@types/node': 22.8.6 - dev: false - - /@types/debug/4.1.12: - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - dependencies: - '@types/ms': 0.7.34 - dev: false - - /@types/estree-jsx/1.0.5: - resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - dependencies: - '@types/estree': 1.0.6 - dev: false - - /@types/estree/1.0.6: - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - dev: false - - /@types/express-serve-static-core/4.19.6: - resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} - dependencies: - '@types/node': 22.8.6 - '@types/qs': 6.9.16 - '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 - dev: false - - /@types/express-serve-static-core/5.0.1: - resolution: {integrity: sha512-CRICJIl0N5cXDONAdlTv5ShATZ4HEwk6kDDIW2/w9qOWKg+NU/5F8wYRWCrONad0/UKkloNSmmyN/wX4rtpbVA==} - dependencies: - '@types/node': 22.8.6 - '@types/qs': 6.9.16 - '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 - dev: false - - /@types/express/4.17.21: - resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} - dependencies: - '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.19.6 - '@types/qs': 6.9.16 - '@types/serve-static': 1.15.7 - dev: false - - /@types/hast/2.3.10: - resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} - dependencies: - '@types/unist': 2.0.11 - dev: false - - /@types/hast/3.0.4: - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - dependencies: - '@types/unist': 3.0.3 - dev: false - - /@types/history/4.7.11: - resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} - dev: false - - /@types/html-minifier-terser/6.1.0: - resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} - dev: false - - /@types/http-cache-semantics/4.0.4: - resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} - dev: false - - /@types/http-errors/2.0.4: - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - dev: false - - /@types/http-proxy/1.17.15: - resolution: {integrity: sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==} - dependencies: - '@types/node': 22.8.6 - dev: false - - /@types/istanbul-lib-coverage/2.0.6: - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - dev: false - - /@types/istanbul-lib-report/3.0.3: - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - dev: false - - /@types/istanbul-reports/3.0.4: - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - dependencies: - '@types/istanbul-lib-report': 3.0.3 - dev: false - - /@types/json-schema/7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - dev: false - - /@types/keyv/3.1.4: - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - dependencies: - '@types/node': 22.8.6 - dev: false - - /@types/mdast/3.0.15: - resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} - dependencies: - '@types/unist': 2.0.11 - dev: false - - /@types/mdast/4.0.4: - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - dependencies: - '@types/unist': 3.0.3 - dev: false - - /@types/mdx/2.0.13: - resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} - dev: false - - /@types/mime/1.3.5: - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - dev: false - - /@types/ms/0.7.34: - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - dev: false - - /@types/node-forge/1.3.11: - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - dependencies: - '@types/node': 22.8.6 - dev: false - - /@types/node/17.0.45: - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - dev: false - - /@types/node/22.8.6: - resolution: {integrity: sha512-tosuJYKrIqjQIlVCM4PEGxOmyg3FCPa/fViuJChnGeEIhjA46oy8FMVoF9su1/v8PNs2a8Q0iFNyOx0uOF91nw==} - dependencies: - undici-types: 6.19.8 - dev: false - - /@types/parse-json/4.0.2: - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - dev: false - - /@types/parse5/5.0.3: - resolution: {integrity: sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==} - dev: false - - /@types/prop-types/15.7.13: - resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} - dev: false - - /@types/qs/6.9.16: - resolution: {integrity: sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==} - dev: false - - /@types/range-parser/1.2.7: - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - dev: false - - /@types/react-dom/17.0.25: - resolution: {integrity: sha512-urx7A7UxkZQmThYA4So0NelOVjx3V4rNFVJwp0WZlbIK5eM4rNJDiN3R/E9ix0MBh6kAEojk/9YL+Te6D9zHNA==} - dependencies: - '@types/react': 17.0.83 - dev: false - - /@types/react-router-config/5.0.11: - resolution: {integrity: sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==} - dependencies: - '@types/history': 4.7.11 - '@types/react': 17.0.83 - '@types/react-router': 5.1.20 - dev: false - - /@types/react-router-dom/5.3.3: - resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} - dependencies: - '@types/history': 4.7.11 - '@types/react': 17.0.83 - '@types/react-router': 5.1.20 - dev: false - - /@types/react-router/5.1.20: - resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} - dependencies: - '@types/history': 4.7.11 - '@types/react': 17.0.83 - dev: false - - /@types/react/17.0.83: - resolution: {integrity: sha512-l0m4ArKJvmFtR4e8UmKrj1pB4tUgOhJITf+mADyF/p69Ts1YAR/E+G9XEM0mHXKVRa1dQNHseyyDNzeuAXfXQw==} - dependencies: - '@types/prop-types': 15.7.13 - '@types/scheduler': 0.16.8 - csstype: 3.1.3 - dev: false - - /@types/responselike/1.0.3: - resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - dependencies: - '@types/node': 22.8.6 - dev: false - - /@types/retry/0.12.0: - resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} - dev: false - - /@types/sax/1.2.7: - resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} - dependencies: - '@types/node': 17.0.45 - dev: false - - /@types/scheduler/0.16.8: - resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} - dev: false - - /@types/send/0.17.4: - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} - dependencies: - '@types/mime': 1.3.5 - '@types/node': 22.8.6 - dev: false - - /@types/serve-index/1.9.4: - resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - dependencies: - '@types/express': 4.17.21 - dev: false - - /@types/serve-static/1.15.7: - resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} - dependencies: - '@types/http-errors': 2.0.4 - '@types/node': 22.8.6 - '@types/send': 0.17.4 - dev: false - - /@types/sockjs/0.3.36: - resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - dependencies: - '@types/node': 22.8.6 - dev: false - - /@types/unist/2.0.11: - resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - dev: false - - /@types/unist/3.0.3: - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - dev: false - - /@types/ws/8.5.12: - resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} - dependencies: - '@types/node': 22.8.6 - dev: false - - /@types/yargs-parser/21.0.3: - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - dev: false - - /@types/yargs/17.0.33: - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - dependencies: - '@types/yargs-parser': 21.0.3 - dev: false - - /@ungap/structured-clone/1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: false - - /@webassemblyjs/ast/1.12.1: - resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} - dependencies: - '@webassemblyjs/helper-numbers': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - dev: false - - /@webassemblyjs/floating-point-hex-parser/1.11.6: - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - dev: false - - /@webassemblyjs/helper-api-error/1.11.6: - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - dev: false - - /@webassemblyjs/helper-buffer/1.12.1: - resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} - dev: false - - /@webassemblyjs/helper-numbers/1.11.6: - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 - '@xtuc/long': 4.2.2 - dev: false - - /@webassemblyjs/helper-wasm-bytecode/1.11.6: - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - dev: false - - /@webassemblyjs/helper-wasm-section/1.12.1: - resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.12.1 - dev: false - - /@webassemblyjs/ieee754/1.11.6: - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - dependencies: - '@xtuc/ieee754': 1.2.0 - dev: false - - /@webassemblyjs/leb128/1.11.6: - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} - dependencies: - '@xtuc/long': 4.2.2 - dev: false - - /@webassemblyjs/utf8/1.11.6: - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - dev: false - - /@webassemblyjs/wasm-edit/1.12.1: - resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-opt': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - '@webassemblyjs/wast-printer': 1.12.1 - dev: false - - /@webassemblyjs/wasm-gen/1.12.1: - resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - dev: false - - /@webassemblyjs/wasm-opt/1.12.1: - resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - dev: false - - /@webassemblyjs/wasm-parser/1.12.1: - resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-api-error': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - dev: false - - /@webassemblyjs/wast-printer/1.12.1: - resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@xtuc/long': 4.2.2 - dev: false - - /@xtuc/ieee754/1.2.0: - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - dev: false - - /@xtuc/long/4.2.2: - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - dev: false - - /abbrev/1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - dev: false - - /accepts/1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - dev: false - - /acorn-jsx/5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dev: false - - /acorn-jsx/5.3.2_acorn@8.14.0: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.14.0 - dev: false - - /acorn-walk/8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - dependencies: - acorn: 8.14.0 - dev: false - - /acorn/8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: false - - /address/1.2.2: - resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} - engines: {node: '>= 10.0.0'} - dev: false - - /agent-base/6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - dev: false - - /aggregate-error/3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - dev: false - - /ajv-formats/2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependenciesMeta: - ajv: - optional: true - dependencies: - ajv: 8.17.1 - dev: false - - /ajv-keywords/3.5.2_ajv@6.12.6: - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - dependencies: - ajv: 6.12.6 - dev: false - - /ajv-keywords/5.1.0_ajv@8.17.1: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 - dependencies: - ajv: 8.17.1 - fast-deep-equal: 3.1.3 - dev: false - - /ajv/6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: false - - /ajv/8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.0.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - dev: false - - /algoliasearch-helper/3.22.5_algoliasearch@4.24.0: - resolution: {integrity: sha512-lWvhdnc+aKOKx8jyA3bsdEgHzm/sglC4cYdMG4xSQyRiPLJVJtH/IVYZG3Hp6PkTEhQqhyVYkeP9z2IlcHJsWw==} - peerDependencies: - algoliasearch: '>= 3.1 < 6' - dependencies: - '@algolia/events': 4.0.1 - algoliasearch: 4.24.0 - dev: false - - /algoliasearch/4.24.0: - resolution: {integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==} - dependencies: - '@algolia/cache-browser-local-storage': 4.24.0 - '@algolia/cache-common': 4.24.0 - '@algolia/cache-in-memory': 4.24.0 - '@algolia/client-account': 4.24.0 - '@algolia/client-analytics': 4.24.0 - '@algolia/client-common': 4.24.0 - '@algolia/client-personalization': 4.24.0 - '@algolia/client-search': 4.24.0 - '@algolia/logger-common': 4.24.0 - '@algolia/logger-console': 4.24.0 - '@algolia/recommend': 4.24.0 - '@algolia/requester-browser-xhr': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/requester-node-http': 4.24.0 - '@algolia/transporter': 4.24.0 - dev: false - - /algoliasearch/5.12.0: - resolution: {integrity: sha512-psGBRYdGgik8I6m28iAB8xpubvjEt7UQU+w5MAJUA2324WHiGoHap5BPkkjB14rMaXeRts6pmOsrVIglGyOVwg==} - engines: {node: '>= 14.0.0'} - dependencies: - '@algolia/client-abtesting': 5.12.0 - '@algolia/client-analytics': 5.12.0 - '@algolia/client-common': 5.12.0 - '@algolia/client-insights': 5.12.0 - '@algolia/client-personalization': 5.12.0 - '@algolia/client-query-suggestions': 5.12.0 - '@algolia/client-search': 5.12.0 - '@algolia/ingestion': 1.12.0 - '@algolia/monitoring': 1.12.0 - '@algolia/recommend': 5.12.0 - '@algolia/requester-browser-xhr': 5.12.0 - '@algolia/requester-fetch': 5.12.0 - '@algolia/requester-node-http': 5.12.0 - dev: false - - /ansi-align/3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - dependencies: - string-width: 4.2.3 - dev: false - - /ansi-html-community/0.0.8: - resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} - engines: {'0': node >= 0.8.0} - hasBin: true - dev: false - - /ansi-regex/5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: false - - /ansi-regex/6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - dev: false - - /ansi-styles/4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: false - - /ansi-styles/6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - dev: false - - /anymatch/3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: false - - /aproba/2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - dev: false - - /are-we-there-yet/2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - dev: false - - /arg/5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - dev: false - - /argparse/1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: false - - /argparse/2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: false - - /array-flatten/1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - dev: false - - /array-union/2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: false - - /asap/2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: false - - /astring/1.9.0: - resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} - hasBin: true - dev: false - - /at-least-node/1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - dev: false - - /autoprefixer/10.4.20_postcss@8.4.47: - resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - dependencies: - browserslist: 4.24.2 - caniuse-lite: 1.0.30001676 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.1.1 - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /axios/0.25.0: - resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} - dependencies: - follow-redirects: 1.15.9 - transitivePeerDependencies: - - debug - dev: false - - /axios/0.25.0_debug@4.3.7: - resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} - dependencies: - follow-redirects: 1.15.9_debug@4.3.7 - transitivePeerDependencies: - - debug - dev: false - - /babel-loader/8.4.1_q4i3duugge6kopoex4umpvkqdi: - resolution: {integrity: sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==} - engines: {node: '>= 8.9'} - peerDependencies: - '@babel/core': ^7.0.0 - webpack: '>=2' - dependencies: - '@babel/core': 7.26.0 - find-cache-dir: 3.3.2 - loader-utils: 2.0.4 - make-dir: 3.1.0 - schema-utils: 2.7.1 - webpack: 5.96.0 - dev: false - - /babel-loader/9.2.1_q4i3duugge6kopoex4umpvkqdi: - resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@babel/core': ^7.12.0 - webpack: '>=5' - dependencies: - '@babel/core': 7.26.0 - find-cache-dir: 4.0.0 - schema-utils: 4.2.0 - webpack: 5.96.0 - dev: false - - /babel-plugin-apply-mdx-type-prop/1.6.22_@babel+core@7.12.9: - resolution: {integrity: sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==} - peerDependencies: - '@babel/core': ^7.11.6 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.10.4 - '@mdx-js/util': 1.6.22 - dev: false - - /babel-plugin-dynamic-import-node/2.3.3: - resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} - dependencies: - object.assign: 4.1.5 - dev: false - - /babel-plugin-extract-import-names/1.6.22: - resolution: {integrity: sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==} - dependencies: - '@babel/helper-plugin-utils': 7.10.4 - dev: false - - /babel-plugin-polyfill-corejs2/0.4.11_@babel+core@7.26.0: - resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/compat-data': 7.26.2 - '@babel/core': 7.26.0 - '@babel/helper-define-polyfill-provider': 0.6.2_@babel+core@7.26.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - - /babel-plugin-polyfill-corejs3/0.10.6_@babel+core@7.26.0: - resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-define-polyfill-provider': 0.6.2_@babel+core@7.26.0 - core-js-compat: 3.39.0 - transitivePeerDependencies: - - supports-color - dev: false - - /babel-plugin-polyfill-regenerator/0.6.2_@babel+core@7.26.0: - resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-define-polyfill-provider': 0.6.2_@babel+core@7.26.0 - transitivePeerDependencies: - - supports-color - dev: false - - /bail/1.0.5: - resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} - dev: false - - /bail/2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - dev: false - - /balanced-match/1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: false - - /base16/1.0.0: - resolution: {integrity: sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==} - dev: false - - /base64-js/1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: false - - /batch/0.6.1: - resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} - dev: false - - /big.js/5.2.2: - resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - dev: false - - /binary-extensions/2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - dev: false - - /bl/4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: false - - /body-parser/1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /bonjour-service/1.2.1: - resolution: {integrity: sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==} - dependencies: - fast-deep-equal: 3.1.3 - multicast-dns: 7.2.5 - dev: false - - /boolbase/1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - dev: false - - /boxen/5.1.2: - resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} - engines: {node: '>=10'} - dependencies: - ansi-align: 3.0.1 - camelcase: 6.3.0 - chalk: 4.1.2 - cli-boxes: 2.2.1 - string-width: 4.2.3 - type-fest: 0.20.2 - widest-line: 3.1.0 - wrap-ansi: 7.0.0 - dev: false - - /boxen/6.2.1: - resolution: {integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - ansi-align: 3.0.1 - camelcase: 6.3.0 - chalk: 4.1.2 - cli-boxes: 3.0.0 - string-width: 5.1.2 - type-fest: 2.19.0 - widest-line: 4.0.1 - wrap-ansi: 8.1.0 - dev: false - - /boxen/7.1.1: - resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} - engines: {node: '>=14.16'} - dependencies: - ansi-align: 3.0.1 - camelcase: 7.0.1 - chalk: 5.3.0 - cli-boxes: 3.0.0 - string-width: 5.1.2 - type-fest: 2.19.0 - widest-line: 4.0.1 - wrap-ansi: 8.1.0 - dev: false - - /brace-expansion/1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: false - - /braces/3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.1.1 - dev: false - - /browserslist/4.24.2: - resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001676 - electron-to-chromium: 1.5.50 - node-releases: 2.0.18 - update-browserslist-db: 1.1.1_browserslist@4.24.2 - dev: false - - /buffer-from/1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: false - - /buffer/5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: false - - /bytes/3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} - dev: false - - /bytes/3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - dev: false - - /cacheable-lookup/7.0.0: - resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} - engines: {node: '>=14.16'} - dev: false - - /cacheable-request/10.2.14: - resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} - engines: {node: '>=14.16'} - dependencies: - '@types/http-cache-semantics': 4.0.4 - get-stream: 6.0.1 - http-cache-semantics: 4.1.1 - keyv: 4.5.4 - mimic-response: 4.0.0 - normalize-url: 8.0.1 - responselike: 3.0.0 - dev: false - - /cacheable-request/6.1.0: - resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} - engines: {node: '>=8'} - dependencies: - clone-response: 1.0.3 - get-stream: 5.2.0 - http-cache-semantics: 4.1.1 - keyv: 3.1.0 - lowercase-keys: 2.0.0 - normalize-url: 4.5.1 - responselike: 1.0.2 - dev: false - - /call-bind/1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - dev: false - - /callsites/3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: false - - /camel-case/4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - dependencies: - pascal-case: 3.1.2 - tslib: 2.8.1 - dev: false - - /camelcase-css/2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - dev: false - - /camelcase/6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: false - - /camelcase/7.0.1: - resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} - engines: {node: '>=14.16'} - dev: false - - /caniuse-api/3.0.0: - resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - dependencies: - browserslist: 4.24.2 - caniuse-lite: 1.0.30001676 - lodash.memoize: 4.1.2 - lodash.uniq: 4.5.0 - dev: false - - /caniuse-lite/1.0.30001676: - resolution: {integrity: sha512-Qz6zwGCiPghQXGJvgQAem79esjitvJ+CxSbSQkW9H/UX5hg8XM88d4lp2W+MEQ81j+Hip58Il+jGVdazk1z9cw==} - dev: false - - /ccount/1.1.0: - resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} - dev: false - - /ccount/2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - dev: false - - /chalk/4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: false - - /chalk/5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: false - - /char-regex/1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - dev: false - - /character-entities-html4/2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - dev: false - - /character-entities-legacy/1.1.4: - resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} - dev: false - - /character-entities-legacy/3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - dev: false - - /character-entities/1.2.4: - resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} - dev: false - - /character-entities/2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - dev: false - - /character-reference-invalid/1.1.4: - resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} - dev: false - - /character-reference-invalid/2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - dev: false - - /cheerio-select/2.1.0: - resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - dependencies: - boolbase: 1.0.0 - css-select: 5.1.0 - css-what: 6.1.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - dev: false - - /cheerio/1.0.0: - resolution: {integrity: sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==} - engines: {node: '>=18.17'} - dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.1.0 - encoding-sniffer: 0.2.0 - htmlparser2: 9.1.0 - parse5: 7.2.1 - parse5-htmlparser2-tree-adapter: 7.1.0 - parse5-parser-stream: 7.1.2 - undici: 6.20.1 - whatwg-mimetype: 4.0.0 - dev: false - - /chokidar/3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - dev: false - - /chownr/1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - dev: false - - /chownr/2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: false - - /chrome-trace-event/1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} - dev: false - - /ci-info/2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - dev: false - - /ci-info/3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - dev: false - - /cld/2.7.1: - resolution: {integrity: sha512-4RusGBKlhW/f7hrv4wFf19n461aO1XCCC4/pCawTJNGaNT+i4OIeAwREY9oeqT0vJyBmtY2dM9IG4cQyu5Pcng==} - engines: {node: '>=12.0.0'} - requiresBuild: true - dependencies: - glob: 7.2.3 - node-addon-api: 8.2.1 - underscore: 1.13.7 - dev: false - - /clean-css/5.3.3: - resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} - engines: {node: '>= 10.0'} - dependencies: - source-map: 0.6.1 - dev: false - - /clean-stack/2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - dev: false - - /cli-boxes/2.2.1: - resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} - engines: {node: '>=6'} - dev: false - - /cli-boxes/3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} - engines: {node: '>=10'} - dev: false - - /cli-table3/0.6.5: - resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} - engines: {node: 10.* || >= 12.*} - dependencies: - string-width: 4.2.3 - optionalDependencies: - '@colors/colors': 1.5.0 - dev: false - - /clone-deep/4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 - dev: false - - /clone-response/1.0.3: - resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - dependencies: - mimic-response: 1.0.1 - dev: false - - /clsx/1.1.1: - resolution: {integrity: sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==} - engines: {node: '>=6'} - dev: false - - /clsx/1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} - engines: {node: '>=6'} - dev: false - - /collapse-white-space/1.0.6: - resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} - dev: false - - /collapse-white-space/2.1.0: - resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} - dev: false - - /color-convert/2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: false - - /color-name/1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: false - - /color-string/1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - dev: false - - /color-support/1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - dev: false - - /color/4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - dev: false - - /colord/2.9.3: - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - dev: false - - /colorette/2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - dev: false - - /combine-promises/1.2.0: - resolution: {integrity: sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==} - engines: {node: '>=10'} - dev: false - - /comma-separated-tokens/1.0.8: - resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} - dev: false - - /comma-separated-tokens/2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - dev: false - - /commander/10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - dev: false - - /commander/2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: false - - /commander/5.1.0: - resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} - engines: {node: '>= 6'} - dev: false - - /commander/7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - dev: false - - /commander/8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - dev: false - - /common-path-prefix/3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - dev: false - - /commondir/1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: false - - /compressible/2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.53.0 - dev: false - - /compression/1.7.5: - resolution: {integrity: sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==} - engines: {node: '>= 0.8.0'} - dependencies: - bytes: 3.1.2 - compressible: 2.0.18 - debug: 2.6.9 - negotiator: 0.6.4 - on-headers: 1.0.2 - safe-buffer: 5.2.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - dev: false - - /concat-map/0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: false - - /config-chain/1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} - dependencies: - ini: 1.3.8 - proto-list: 1.2.4 - dev: false - - /configstore/5.0.1: - resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} - engines: {node: '>=8'} - dependencies: - dot-prop: 5.3.0 - graceful-fs: 4.2.11 - make-dir: 3.1.0 - unique-string: 2.0.0 - write-file-atomic: 3.0.3 - xdg-basedir: 4.0.0 - dev: false - - /configstore/6.0.0: - resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} - engines: {node: '>=12'} - dependencies: - dot-prop: 6.0.1 - graceful-fs: 4.2.11 - unique-string: 3.0.0 - write-file-atomic: 3.0.3 - xdg-basedir: 5.1.0 - dev: false - - /connect-history-api-fallback/2.0.0: - resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} - engines: {node: '>=0.8'} - dev: false - - /consola/2.15.3: - resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} - dev: false - - /console-control-strings/1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - dev: false - - /consolidated-events/2.0.2: - resolution: {integrity: sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==} - dev: false - - /content-disposition/0.5.2: - resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} - engines: {node: '>= 0.6'} - dev: false - - /content-disposition/0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - dependencies: - safe-buffer: 5.2.1 - dev: false - - /content-type/1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - dev: false - - /convert-source-map/1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: false - - /convert-source-map/2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: false - - /cookie-signature/1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - dev: false - - /cookie/0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} - engines: {node: '>= 0.6'} - dev: false - - /copy-text-to-clipboard/3.2.0: - resolution: {integrity: sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==} - engines: {node: '>=12'} - dev: false - - /copy-webpack-plugin/11.0.0_webpack@5.96.0: - resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} - engines: {node: '>= 14.15.0'} - peerDependencies: - webpack: ^5.1.0 - dependencies: - fast-glob: 3.3.2 - glob-parent: 6.0.2 - globby: 13.2.2 - normalize-path: 3.0.0 - schema-utils: 4.2.0 - serialize-javascript: 6.0.2 - webpack: 5.96.0 - dev: false - - /core-js-compat/3.39.0: - resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} - dependencies: - browserslist: 4.24.2 - dev: false - - /core-js-pure/3.39.0: - resolution: {integrity: sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg==} - requiresBuild: true - dev: false - - /core-js/3.39.0: - resolution: {integrity: sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==} - requiresBuild: true - dev: false - - /core-util-is/1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: false - - /cosmiconfig/6.0.0: - resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} - engines: {node: '>=8'} - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - dev: false - - /cosmiconfig/7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - dev: false - - /cosmiconfig/8.3.6: - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - dev: false - - /cross-fetch/3.1.8: - resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} - dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - dev: false - - /cross-spawn/7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: false - - /crypto-random-string/2.0.0: - resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} - engines: {node: '>=8'} - dev: false - - /crypto-random-string/4.0.0: - resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} - engines: {node: '>=12'} - dependencies: - type-fest: 1.4.0 - dev: false - - /css-declaration-sorter/6.4.1_postcss@8.4.47: - resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} - engines: {node: ^10 || ^12 || >=14} - peerDependencies: - postcss: ^8.0.9 - dependencies: - postcss: 8.4.47 - dev: false - - /css-declaration-sorter/7.2.0_postcss@8.4.47: - resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - postcss: ^8.0.9 - dependencies: - postcss: 8.4.47 - dev: false - - /css-loader/6.11.0_webpack@5.96.0: - resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} - engines: {node: '>= 12.13.0'} - peerDependencies: - '@rspack/core': 0.x || 1.x - webpack: ^5.0.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true - dependencies: - icss-utils: 5.1.0_postcss@8.4.47 - postcss: 8.4.47 - postcss-modules-extract-imports: 3.1.0_postcss@8.4.47 - postcss-modules-local-by-default: 4.0.5_postcss@8.4.47 - postcss-modules-scope: 3.2.0_postcss@8.4.47 - postcss-modules-values: 4.0.0_postcss@8.4.47 - postcss-value-parser: 4.2.0 - semver: 7.6.3 - webpack: 5.96.0 - dev: false - - /css-minimizer-webpack-plugin/4.2.2_gzdcycskzr6ydtw2bhclskhn64: - resolution: {integrity: sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@parcel/css': '*' - '@swc/css': '*' - clean-css: '*' - csso: '*' - esbuild: '*' - lightningcss: '*' - webpack: ^5.0.0 - peerDependenciesMeta: - '@parcel/css': - optional: true - '@swc/css': - optional: true - clean-css: - optional: true - csso: - optional: true - esbuild: - optional: true - lightningcss: - optional: true - dependencies: - clean-css: 5.3.3 - cssnano: 5.1.15_postcss@8.4.47 - jest-worker: 29.7.0 - postcss: 8.4.47 - schema-utils: 4.2.0 - serialize-javascript: 6.0.2 - source-map: 0.6.1 - webpack: 5.96.0 - dev: false - - /css-minimizer-webpack-plugin/5.0.1_gzdcycskzr6ydtw2bhclskhn64: - resolution: {integrity: sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@parcel/css': '*' - '@swc/css': '*' - clean-css: '*' - csso: '*' - esbuild: '*' - lightningcss: '*' - webpack: ^5.0.0 - peerDependenciesMeta: - '@parcel/css': - optional: true - '@swc/css': - optional: true - clean-css: - optional: true - csso: - optional: true - esbuild: - optional: true - lightningcss: - optional: true - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - clean-css: 5.3.3 - cssnano: 6.1.2_postcss@8.4.47 - jest-worker: 29.7.0 - postcss: 8.4.47 - schema-utils: 4.2.0 - serialize-javascript: 6.0.2 - webpack: 5.96.0 - dev: false - - /css-select/4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 4.3.1 - domutils: 2.8.0 - nth-check: 2.1.1 - dev: false - - /css-select/5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 5.0.3 - domutils: 3.1.0 - nth-check: 2.1.1 - dev: false - - /css-tree/1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - dev: false - - /css-tree/2.2.1: - resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - dependencies: - mdn-data: 2.0.28 - source-map-js: 1.2.1 - dev: false - - /css-tree/2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - dependencies: - mdn-data: 2.0.30 - source-map-js: 1.2.1 - dev: false - - /css-what/6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - dev: false - - /cssesc/3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - dev: false - - /cssnano-preset-advanced/5.3.10_postcss@8.4.47: - resolution: {integrity: sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - autoprefixer: 10.4.20_postcss@8.4.47 - cssnano-preset-default: 5.2.14_postcss@8.4.47 - postcss: 8.4.47 - postcss-discard-unused: 5.1.0_postcss@8.4.47 - postcss-merge-idents: 5.1.1_postcss@8.4.47 - postcss-reduce-idents: 5.2.0_postcss@8.4.47 - postcss-zindex: 5.1.0_postcss@8.4.47 - dev: false - - /cssnano-preset-advanced/6.1.2_postcss@8.4.47: - resolution: {integrity: sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - autoprefixer: 10.4.20_postcss@8.4.47 - browserslist: 4.24.2 - cssnano-preset-default: 6.1.2_postcss@8.4.47 - postcss: 8.4.47 - postcss-discard-unused: 6.0.5_postcss@8.4.47 - postcss-merge-idents: 6.0.3_postcss@8.4.47 - postcss-reduce-idents: 6.0.3_postcss@8.4.47 - postcss-zindex: 6.0.2_postcss@8.4.47 - dev: false - - /cssnano-preset-default/5.2.14_postcss@8.4.47: - resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - css-declaration-sorter: 6.4.1_postcss@8.4.47 - cssnano-utils: 3.1.0_postcss@8.4.47 - postcss: 8.4.47 - postcss-calc: 8.2.4_postcss@8.4.47 - postcss-colormin: 5.3.1_postcss@8.4.47 - postcss-convert-values: 5.1.3_postcss@8.4.47 - postcss-discard-comments: 5.1.2_postcss@8.4.47 - postcss-discard-duplicates: 5.1.0_postcss@8.4.47 - postcss-discard-empty: 5.1.1_postcss@8.4.47 - postcss-discard-overridden: 5.1.0_postcss@8.4.47 - postcss-merge-longhand: 5.1.7_postcss@8.4.47 - postcss-merge-rules: 5.1.4_postcss@8.4.47 - postcss-minify-font-values: 5.1.0_postcss@8.4.47 - postcss-minify-gradients: 5.1.1_postcss@8.4.47 - postcss-minify-params: 5.1.4_postcss@8.4.47 - postcss-minify-selectors: 5.2.1_postcss@8.4.47 - postcss-normalize-charset: 5.1.0_postcss@8.4.47 - postcss-normalize-display-values: 5.1.0_postcss@8.4.47 - postcss-normalize-positions: 5.1.1_postcss@8.4.47 - postcss-normalize-repeat-style: 5.1.1_postcss@8.4.47 - postcss-normalize-string: 5.1.0_postcss@8.4.47 - postcss-normalize-timing-functions: 5.1.0_postcss@8.4.47 - postcss-normalize-unicode: 5.1.1_postcss@8.4.47 - postcss-normalize-url: 5.1.0_postcss@8.4.47 - postcss-normalize-whitespace: 5.1.1_postcss@8.4.47 - postcss-ordered-values: 5.1.3_postcss@8.4.47 - postcss-reduce-initial: 5.1.2_postcss@8.4.47 - postcss-reduce-transforms: 5.1.0_postcss@8.4.47 - postcss-svgo: 5.1.0_postcss@8.4.47 - postcss-unique-selectors: 5.1.1_postcss@8.4.47 - dev: false - - /cssnano-preset-default/6.1.2_postcss@8.4.47: - resolution: {integrity: sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - browserslist: 4.24.2 - css-declaration-sorter: 7.2.0_postcss@8.4.47 - cssnano-utils: 4.0.2_postcss@8.4.47 - postcss: 8.4.47 - postcss-calc: 9.0.1_postcss@8.4.47 - postcss-colormin: 6.1.0_postcss@8.4.47 - postcss-convert-values: 6.1.0_postcss@8.4.47 - postcss-discard-comments: 6.0.2_postcss@8.4.47 - postcss-discard-duplicates: 6.0.3_postcss@8.4.47 - postcss-discard-empty: 6.0.3_postcss@8.4.47 - postcss-discard-overridden: 6.0.2_postcss@8.4.47 - postcss-merge-longhand: 6.0.5_postcss@8.4.47 - postcss-merge-rules: 6.1.1_postcss@8.4.47 - postcss-minify-font-values: 6.1.0_postcss@8.4.47 - postcss-minify-gradients: 6.0.3_postcss@8.4.47 - postcss-minify-params: 6.1.0_postcss@8.4.47 - postcss-minify-selectors: 6.0.4_postcss@8.4.47 - postcss-normalize-charset: 6.0.2_postcss@8.4.47 - postcss-normalize-display-values: 6.0.2_postcss@8.4.47 - postcss-normalize-positions: 6.0.2_postcss@8.4.47 - postcss-normalize-repeat-style: 6.0.2_postcss@8.4.47 - postcss-normalize-string: 6.0.2_postcss@8.4.47 - postcss-normalize-timing-functions: 6.0.2_postcss@8.4.47 - postcss-normalize-unicode: 6.1.0_postcss@8.4.47 - postcss-normalize-url: 6.0.2_postcss@8.4.47 - postcss-normalize-whitespace: 6.0.2_postcss@8.4.47 - postcss-ordered-values: 6.0.2_postcss@8.4.47 - postcss-reduce-initial: 6.1.0_postcss@8.4.47 - postcss-reduce-transforms: 6.0.2_postcss@8.4.47 - postcss-svgo: 6.0.3_postcss@8.4.47 - postcss-unique-selectors: 6.0.4_postcss@8.4.47 - dev: false - - /cssnano-utils/3.1.0_postcss@8.4.47: - resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - dev: false - - /cssnano-utils/4.0.2_postcss@8.4.47: - resolution: {integrity: sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - dev: false - - /cssnano/5.1.15_postcss@8.4.47: - resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - cssnano-preset-default: 5.2.14_postcss@8.4.47 - lilconfig: 2.1.0 - postcss: 8.4.47 - yaml: 1.10.2 - dev: false - - /cssnano/6.1.2_postcss@8.4.47: - resolution: {integrity: sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - cssnano-preset-default: 6.1.2_postcss@8.4.47 - lilconfig: 3.1.2 - postcss: 8.4.47 - dev: false - - /csso/4.2.0: - resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} - engines: {node: '>=8.0.0'} - dependencies: - css-tree: 1.1.3 - dev: false - - /csso/5.0.5: - resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - dependencies: - css-tree: 2.2.1 - dev: false - - /csstype/3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - dev: false - - /debounce/1.2.1: - resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} - dev: false - - /debug/2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - dev: false - - /debug/4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: false - - /decode-named-character-reference/1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - dependencies: - character-entities: 2.0.2 - dev: false - - /decompress-response/3.3.0: - resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} - engines: {node: '>=4'} - dependencies: - mimic-response: 1.0.1 - dev: false - - /decompress-response/6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - dependencies: - mimic-response: 3.1.0 - dev: false - - /deep-extend/0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - dev: false - - /deepmerge/4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - dev: false - - /default-gateway/6.0.3: - resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} - engines: {node: '>= 10'} - dependencies: - execa: 5.1.1 - dev: false - - /defer-to-connect/1.1.3: - resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} - dev: false - - /defer-to-connect/2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} - engines: {node: '>=10'} - dev: false - - /define-data-property/1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - dev: false - - /define-lazy-prop/2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - dev: false - - /define-properties/1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - dev: false - - /del/6.1.1: - resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} - engines: {node: '>=10'} - dependencies: - globby: 11.1.0 - graceful-fs: 4.2.11 - is-glob: 4.0.3 - is-path-cwd: 2.2.0 - is-path-inside: 3.0.3 - p-map: 4.0.0 - rimraf: 3.0.2 - slash: 3.0.0 - dev: false - - /delegates/1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dev: false - - /depd/1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - dev: false - - /depd/2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - dev: false - - /dequal/2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - dev: false - - /destroy/1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dev: false - - /detab/2.0.4: - resolution: {integrity: sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==} - dependencies: - repeat-string: 1.6.1 - dev: false - - /detect-libc/2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} - engines: {node: '>=8'} - dev: false - - /detect-node/2.1.0: - resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - dev: false - - /detect-port-alt/1.1.6: - resolution: {integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==} - engines: {node: '>= 4.2.1'} - hasBin: true - dependencies: - address: 1.2.2 - debug: 2.6.9 - transitivePeerDependencies: - - supports-color - dev: false - - /detect-port/1.6.1: - resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} - engines: {node: '>= 4.0.0'} - hasBin: true - dependencies: - address: 1.2.2 - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - dev: false - - /devlop/1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - dependencies: - dequal: 2.0.3 - dev: false - - /dir-glob/3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: false - - /dns-packet/5.6.1: - resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} - engines: {node: '>=6'} - dependencies: - '@leichtgewicht/ip-codec': 2.0.5 - dev: false - - /dom-converter/0.2.0: - resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} - dependencies: - utila: 0.4.0 - dev: false - - /dom-serializer/1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - entities: 2.2.0 - dev: false - - /dom-serializer/2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - dev: false - - /dom7/4.0.6: - resolution: {integrity: sha512-emjdpPLhpNubapLFdjNL9tP06Sr+GZkrIHEXLWvOGsytACUrkbeIdjO5g77m00BrHTznnlcNqgmn7pCN192TBA==} - dependencies: - ssr-window: 4.0.2 - dev: false - - /domelementtype/2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: false - - /domhandler/4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.3.0 - dev: false - - /domhandler/5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.3.0 - dev: false - - /domutils/2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - dependencies: - dom-serializer: 1.4.1 - domelementtype: 2.3.0 - domhandler: 4.3.1 - dev: false - - /domutils/3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - dev: false - - /dot-case/3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - dev: false - - /dot-prop/5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} - dependencies: - is-obj: 2.0.0 - dev: false - - /dot-prop/6.0.1: - resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} - engines: {node: '>=10'} - dependencies: - is-obj: 2.0.0 - dev: false - - /duplexer/0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - dev: false - - /duplexer3/0.1.5: - resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - dev: false - - /eastasianwidth/0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: false - - /ee-first/1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - dev: false - - /electron-to-chromium/1.5.50: - resolution: {integrity: sha512-eMVObiUQ2LdgeO1F/ySTXsvqvxb6ZH2zPGaMYsWzRDdOddUa77tdmI0ltg+L16UpbWdhPmuF3wIQYyQq65WfZw==} - dev: false - - /emoji-regex/8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: false - - /emoji-regex/9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: false - - /emojilib/2.4.0: - resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} - dev: false - - /emojis-list/3.0.0: - resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} - engines: {node: '>= 4'} - dev: false - - /emoticon/3.2.0: - resolution: {integrity: sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==} - dev: false - - /emoticon/4.1.0: - resolution: {integrity: sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==} - dev: false - - /encodeurl/1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - dev: false - - /encodeurl/2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - dev: false - - /encoding-sniffer/0.2.0: - resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==} - dependencies: - iconv-lite: 0.6.3 - whatwg-encoding: 3.1.1 - dev: false - - /end-of-stream/1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: false - - /enhanced-resolve/5.17.1: - resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} - engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - dev: false - - /entities/2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - dev: false - - /entities/4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - dev: false - - /error-ex/1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - dev: false - - /es-define-property/1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.4 - dev: false - - /es-errors/1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - dev: false - - /es-module-lexer/1.5.4: - resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} - dev: false - - /esast-util-from-estree/2.0.0: - resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} - dependencies: - '@types/estree-jsx': 1.0.5 - devlop: 1.1.0 - estree-util-visit: 2.0.0 - unist-util-position-from-estree: 2.0.0 - dev: false - - /esast-util-from-js/2.0.1: - resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - dependencies: - '@types/estree-jsx': 1.0.5 - acorn: 8.14.0 - esast-util-from-estree: 2.0.0 - vfile-message: 4.0.2 - dev: false - - /escalade/3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - dev: false - - /escape-goat/2.1.1: - resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} - engines: {node: '>=8'} - dev: false - - /escape-goat/4.0.0: - resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} - engines: {node: '>=12'} - dev: false - - /escape-html/1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: false - - /escape-string-regexp/4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - dev: false - - /escape-string-regexp/5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - dev: false - - /eslint-scope/5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - dev: false - - /esprima/4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: false - - /esrecurse/4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 - dev: false - - /estraverse/4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: false - - /estraverse/5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: false - - /estree-util-attach-comments/3.0.0: - resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} - dependencies: - '@types/estree': 1.0.6 - dev: false - - /estree-util-build-jsx/3.0.1: - resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} - dependencies: - '@types/estree-jsx': 1.0.5 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - estree-walker: 3.0.3 - dev: false - - /estree-util-is-identifier-name/3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - dev: false - - /estree-util-scope/1.0.0: - resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} - dependencies: - '@types/estree': 1.0.6 - devlop: 1.1.0 - dev: false - - /estree-util-to-js/2.0.0: - resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} - dependencies: - '@types/estree-jsx': 1.0.5 - astring: 1.9.0 - source-map: 0.7.4 - dev: false - - /estree-util-value-to-estree/3.1.2: - resolution: {integrity: sha512-S0gW2+XZkmsx00tU2uJ4L9hUT7IFabbml9pHh2WQqFmAbxit++YGZne0sKJbNwkj9Wvg9E4uqWl4nCIFQMmfag==} - dependencies: - '@types/estree': 1.0.6 - dev: false - - /estree-util-visit/2.0.0: - resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/unist': 3.0.3 - dev: false - - /estree-walker/3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - dependencies: - '@types/estree': 1.0.6 - dev: false - - /esutils/2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: false - - /eta/1.14.2: - resolution: {integrity: sha512-wZmJAV7EFUG5W8XNXSazIdichnWEhGB1OWg4tnXWPj0CPNUcFdgorGNO6N9p6WBUgoUe4P0OziJYn1+6zxP2aQ==} - engines: {node: '>=6.0.0'} - dev: false - - /eta/2.2.0: - resolution: {integrity: sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==} - engines: {node: '>=6.0.0'} - dev: false - - /etag/1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - dev: false - - /eval/0.1.8: - resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} - engines: {node: '>= 0.8'} - dependencies: - '@types/node': 22.8.6 - require-like: 0.1.2 - dev: false - - /eventemitter3/4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - dev: false - - /events/3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: false - - /execa/5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: false - - /expand-template/2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - dev: false - - /express/4.21.1: - resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} - engines: {node: '>= 0.10.0'} - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.10 - proxy-addr: 2.0.7 - qs: 6.13.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - dev: false - - /extend-shallow/2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - dependencies: - is-extendable: 0.1.1 - dev: false - - /extend/3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: false - - /fast-deep-equal/3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: false - - /fast-glob/3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - dev: false - - /fast-json-stable-stringify/2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: false - - /fast-uri/3.0.3: - resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} - dev: false - - /fastq/1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - dependencies: - reusify: 1.0.4 - dev: false - - /fault/2.0.1: - resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} - dependencies: - format: 0.2.2 - dev: false - - /faye-websocket/0.11.4: - resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} - engines: {node: '>=0.8.0'} - dependencies: - websocket-driver: 0.7.4 - dev: false - - /fbemitter/3.0.0: - resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} - dependencies: - fbjs: 3.0.5 - transitivePeerDependencies: - - encoding - dev: false - - /fbjs-css-vars/1.0.2: - resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} - dev: false - - /fbjs/3.0.5: - resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} - dependencies: - cross-fetch: 3.1.8 - fbjs-css-vars: 1.0.2 - loose-envify: 1.4.0 - object-assign: 4.1.1 - promise: 7.3.1 - setimmediate: 1.0.5 - ua-parser-js: 1.0.39 - transitivePeerDependencies: - - encoding - dev: false - - /feed/4.2.2: - resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} - engines: {node: '>=0.4.0'} - dependencies: - xml-js: 1.6.11 - dev: false - - /file-loader/6.2.0_webpack@5.96.0: - resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - dependencies: - loader-utils: 2.0.4 - schema-utils: 3.3.0 - webpack: 5.96.0 - dev: false - - /filesize/8.0.7: - resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} - engines: {node: '>= 0.4.0'} - dev: false - - /fill-range/7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: false - - /finalhandler/1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} - engines: {node: '>= 0.8'} - dependencies: - debug: 2.6.9 - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /find-cache-dir/3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} - dependencies: - commondir: 1.0.1 - make-dir: 3.1.0 - pkg-dir: 4.2.0 - dev: false - - /find-cache-dir/4.0.0: - resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} - engines: {node: '>=14.16'} - dependencies: - common-path-prefix: 3.0.0 - pkg-dir: 7.0.0 - dev: false - - /find-up/3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - dependencies: - locate-path: 3.0.0 - dev: false - - /find-up/4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: false - - /find-up/5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: false - - /find-up/6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - dev: false - - /flat/5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - dev: false - - /flux/4.0.4_react@17.0.2: - resolution: {integrity: sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==} - peerDependencies: - react: ^15.0.2 || ^16.0.0 || ^17.0.0 - dependencies: - fbemitter: 3.0.0 - fbjs: 3.0.5 - react: 17.0.2 - transitivePeerDependencies: - - encoding - dev: false - - /follow-redirects/1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: false - - /follow-redirects/1.15.9_debug@4.3.7: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dependencies: - debug: 4.3.7 - dev: false - - /fork-ts-checker-webpack-plugin/6.5.3_webpack@5.96.0: - resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} - engines: {node: '>=10', yarn: '>=1.0.0'} - peerDependencies: - eslint: '>= 6' - typescript: '>= 2.7' - vue-template-compiler: '*' - webpack: '>= 4' - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - dependencies: - '@babel/code-frame': 7.26.2 - '@types/json-schema': 7.0.15 - chalk: 4.1.2 - chokidar: 3.6.0 - cosmiconfig: 6.0.0 - deepmerge: 4.3.1 - fs-extra: 9.1.0 - glob: 7.2.3 - memfs: 3.5.3 - minimatch: 3.1.2 - schema-utils: 2.7.0 - semver: 7.6.3 - tapable: 1.1.3 - webpack: 5.96.0 - dev: false - - /form-data-encoder/2.1.4: - resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} - engines: {node: '>= 14.17'} - dev: false - - /format/0.2.2: - resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} - engines: {node: '>=0.4.x'} - dev: false - - /forwarded/0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - dev: false - - /fraction.js/4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - dev: false - - /fresh/0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - dev: false - - /front-matter/4.0.2: - resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} - dependencies: - js-yaml: 3.14.1 - dev: false - - /fs-constants/1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - dev: false - - /fs-extra/10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - dev: false - - /fs-extra/11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - dev: false - - /fs-extra/9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - dev: false - - /fs-minipass/2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: false - - /fs-monkey/1.0.6: - resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} - dev: false - - /fs.realpath/1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: false - - /fsevents/2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /function-bind/1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - dev: false - - /gauge/3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - dev: false - - /gensync/1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: false - - /get-intrinsic/1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - dev: false - - /get-own-enumerable-property-symbols/3.0.2: - resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} - dev: false - - /get-stream/4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - dependencies: - pump: 3.0.2 - dev: false - - /get-stream/5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - dependencies: - pump: 3.0.2 - dev: false - - /get-stream/6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: false - - /github-from-package/0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - dev: false - - /github-slugger/1.5.0: - resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} - dev: false - - /glob-parent/5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: false - - /glob-parent/6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - dependencies: - is-glob: 4.0.3 - dev: false - - /glob-to-regexp/0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: false - - /glob/7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: false - - /global-dirs/3.0.1: - resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} - engines: {node: '>=10'} - dependencies: - ini: 2.0.0 - dev: false - - /global-modules/2.0.0: - resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} - engines: {node: '>=6'} - dependencies: - global-prefix: 3.0.0 - dev: false - - /global-prefix/3.0.0: - resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} - engines: {node: '>=6'} - dependencies: - ini: 1.3.8 - kind-of: 6.0.3 - which: 1.3.1 - dev: false - - /globals/11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: false - - /globby/11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - dev: false - - /globby/13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 4.0.0 - dev: false - - /gopd/1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - dependencies: - get-intrinsic: 1.2.4 - dev: false - - /got/12.6.1: - resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} - engines: {node: '>=14.16'} - dependencies: - '@sindresorhus/is': 5.6.0 - '@szmarczak/http-timer': 5.0.1 - cacheable-lookup: 7.0.0 - cacheable-request: 10.2.14 - decompress-response: 6.0.0 - form-data-encoder: 2.1.4 - get-stream: 6.0.1 - http2-wrapper: 2.2.1 - lowercase-keys: 3.0.0 - p-cancelable: 3.0.0 - responselike: 3.0.0 - dev: false - - /got/9.6.0: - resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} - engines: {node: '>=8.6'} - dependencies: - '@sindresorhus/is': 0.14.0 - '@szmarczak/http-timer': 1.1.2 - '@types/keyv': 3.1.4 - '@types/responselike': 1.0.3 - cacheable-request: 6.1.0 - decompress-response: 3.3.0 - duplexer3: 0.1.5 - get-stream: 4.1.0 - lowercase-keys: 1.0.1 - mimic-response: 1.0.1 - p-cancelable: 1.1.0 - to-readable-stream: 1.0.0 - url-parse-lax: 3.0.0 - dev: false - - /graceful-fs/4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - dev: false - - /graceful-fs/4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: false - - /gray-matter/4.0.3: - resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} - engines: {node: '>=6.0'} - dependencies: - js-yaml: 3.14.1 - kind-of: 6.0.3 - section-matter: 1.0.0 - strip-bom-string: 1.0.0 - dev: false - - /gzip-size/6.0.0: - resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} - engines: {node: '>=10'} - dependencies: - duplexer: 0.1.2 - dev: false - - /handle-thing/2.0.1: - resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - dev: false - - /has-flag/4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: false - - /has-property-descriptors/1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - dependencies: - es-define-property: 1.0.0 - dev: false - - /has-proto/1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - dev: false - - /has-symbols/1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - dev: false - - /has-unicode/2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - dev: false - - /has-yarn/2.1.0: - resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} - engines: {node: '>=8'} - dev: false - - /has-yarn/3.0.0: - resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false - - /hasown/2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - dependencies: - function-bind: 1.1.2 - dev: false - - /hast-to-hyperscript/9.0.1: - resolution: {integrity: sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==} - dependencies: - '@types/unist': 2.0.11 - comma-separated-tokens: 1.0.8 - property-information: 5.6.0 - space-separated-tokens: 1.1.5 - style-to-object: 0.3.0 - unist-util-is: 4.1.0 - web-namespaces: 1.1.4 - dev: false - - /hast-util-from-parse5/6.0.1: - resolution: {integrity: sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==} - dependencies: - '@types/parse5': 5.0.3 - hastscript: 6.0.0 - property-information: 5.6.0 - vfile: 4.2.1 - vfile-location: 3.2.0 - web-namespaces: 1.1.4 - dev: false - - /hast-util-from-parse5/8.0.1: - resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - devlop: 1.1.0 - hastscript: 8.0.0 - property-information: 6.5.0 - vfile: 6.0.3 - vfile-location: 5.0.3 - web-namespaces: 2.0.1 - dev: false - - /hast-util-parse-selector/2.2.5: - resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} - dev: false - - /hast-util-parse-selector/4.0.0: - resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - dependencies: - '@types/hast': 3.0.4 - dev: false - - /hast-util-raw/6.0.1: - resolution: {integrity: sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==} - dependencies: - '@types/hast': 2.3.10 - hast-util-from-parse5: 6.0.1 - hast-util-to-parse5: 6.0.0 - html-void-elements: 1.0.5 - parse5: 6.0.1 - unist-util-position: 3.1.0 - vfile: 4.2.1 - web-namespaces: 1.1.4 - xtend: 4.0.2 - zwitch: 1.0.5 - dev: false - - /hast-util-raw/9.0.4: - resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==} - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - '@ungap/structured-clone': 1.2.0 - hast-util-from-parse5: 8.0.1 - hast-util-to-parse5: 8.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 - parse5: 7.2.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - dev: false - - /hast-util-to-estree/3.1.0: - resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} - dependencies: - '@types/estree': 1.0.6 - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-attach-comments: 3.0.0 - estree-util-is-identifier-name: 3.0.0 - hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.1.3 - mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - style-to-object: 0.4.4 - unist-util-position: 5.0.0 - zwitch: 2.0.4 - transitivePeerDependencies: - - supports-color - dev: false - - /hast-util-to-jsx-runtime/2.3.2: - resolution: {integrity: sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==} - dependencies: - '@types/estree': 1.0.6 - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.1.3 - mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - style-to-object: 1.0.8 - unist-util-position: 5.0.0 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color - dev: false - - /hast-util-to-parse5/6.0.0: - resolution: {integrity: sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==} - dependencies: - hast-to-hyperscript: 9.0.1 - property-information: 5.6.0 - web-namespaces: 1.1.4 - xtend: 4.0.2 - zwitch: 1.0.5 - dev: false - - /hast-util-to-parse5/8.0.0: - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} - dependencies: - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - dev: false - - /hast-util-whitespace/3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - dependencies: - '@types/hast': 3.0.4 - dev: false - - /hastscript/6.0.0: - resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} - dependencies: - '@types/hast': 2.3.10 - comma-separated-tokens: 1.0.8 - hast-util-parse-selector: 2.2.5 - property-information: 5.6.0 - space-separated-tokens: 1.1.5 - dev: false - - /hastscript/8.0.0: - resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} - dependencies: - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 4.0.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - dev: false - - /he/1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - dev: false - - /history/4.10.1: - resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} - dependencies: - '@babel/runtime': 7.26.0 - loose-envify: 1.4.0 - resolve-pathname: 3.0.0 - tiny-invariant: 1.3.3 - tiny-warning: 1.0.3 - value-equal: 1.0.1 - dev: false - - /hoist-non-react-statics/3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - dependencies: - react-is: 16.13.1 - dev: false - - /hpack.js/2.1.6: - resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} - dependencies: - inherits: 2.0.4 - obuf: 1.1.2 - readable-stream: 2.3.8 - wbuf: 1.7.3 - dev: false - - /html-entities/2.5.2: - resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} - dev: false - - /html-escaper/2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: false - - /html-minifier-terser/6.1.0: - resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} - engines: {node: '>=12'} - hasBin: true - dependencies: - camel-case: 4.1.2 - clean-css: 5.3.3 - commander: 8.3.0 - he: 1.2.0 - param-case: 3.0.4 - relateurl: 0.2.7 - terser: 5.36.0 - dev: false - - /html-minifier-terser/7.2.0: - resolution: {integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==} - engines: {node: ^14.13.1 || >=16.0.0} - hasBin: true - dependencies: - camel-case: 4.1.2 - clean-css: 5.3.3 - commander: 10.0.1 - entities: 4.5.0 - param-case: 3.0.4 - relateurl: 0.2.7 - terser: 5.36.0 - dev: false - - /html-tags/3.3.1: - resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} - engines: {node: '>=8'} - dev: false - - /html-void-elements/1.0.5: - resolution: {integrity: sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==} - dev: false - - /html-void-elements/3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - dev: false - - /html-webpack-plugin/5.6.3_webpack@5.96.0: - resolution: {integrity: sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==} - engines: {node: '>=10.13.0'} - peerDependencies: - '@rspack/core': 0.x || 1.x - webpack: ^5.20.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true - dependencies: - '@types/html-minifier-terser': 6.1.0 - html-minifier-terser: 6.1.0 - lodash: 4.17.21 - pretty-error: 4.0.0 - tapable: 2.2.1 - webpack: 5.96.0 - dev: false - - /htmlparser2/6.1.0: - resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - domutils: 2.8.0 - entities: 2.2.0 - dev: false - - /htmlparser2/9.1.0: - resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - entities: 4.5.0 - dev: false - - /http-cache-semantics/4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - dev: false - - /http-deceiver/1.2.7: - resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} - dev: false - - /http-errors/1.6.3: - resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} - engines: {node: '>= 0.6'} - dependencies: - depd: 1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.0 - statuses: 1.5.0 - dev: false - - /http-errors/2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - dev: false - - /http-parser-js/0.5.8: - resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} - dev: false - - /http-proxy-middleware/2.0.7_@types+express@4.17.21: - resolution: {integrity: sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/express': ^4.17.13 - peerDependenciesMeta: - '@types/express': - optional: true - dependencies: - '@types/express': 4.17.21 - '@types/http-proxy': 1.17.15 - http-proxy: 1.18.1 - is-glob: 4.0.3 - is-plain-obj: 3.0.0 - micromatch: 4.0.8 - transitivePeerDependencies: - - debug - dev: false - - /http-proxy-middleware/2.0.7_utguotmo3jjpm2bhksntt72gcu: - resolution: {integrity: sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/express': ^4.17.13 - peerDependenciesMeta: - '@types/express': - optional: true - dependencies: - '@types/express': 4.17.21 - '@types/http-proxy': 1.17.15 - http-proxy: 1.18.1_debug@4.3.7 - is-glob: 4.0.3 - is-plain-obj: 3.0.0 - micromatch: 4.0.8 - transitivePeerDependencies: - - debug - dev: false - - /http-proxy/1.18.1: - resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} - engines: {node: '>=8.0.0'} - dependencies: - eventemitter3: 4.0.7 - follow-redirects: 1.15.9 - requires-port: 1.0.0 - transitivePeerDependencies: - - debug - dev: false - - /http-proxy/1.18.1_debug@4.3.7: - resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} - engines: {node: '>=8.0.0'} - dependencies: - eventemitter3: 4.0.7 - follow-redirects: 1.15.9_debug@4.3.7 - requires-port: 1.0.0 - transitivePeerDependencies: - - debug - dev: false - - /http2-wrapper/2.2.1: - resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} - engines: {node: '>=10.19.0'} - dependencies: - quick-lru: 5.1.1 - resolve-alpn: 1.2.1 - dev: false - - /https-proxy-agent/5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - dev: false - - /human-signals/2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: false - - /iconv-lite/0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: false - - /iconv-lite/0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: false - - /icss-utils/5.1.0_postcss@8.4.47: - resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - postcss: 8.4.47 - dev: false - - /ieee754/1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: false - - /ignore/5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - dev: false - - /image-size/1.1.1: - resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} - engines: {node: '>=16.x'} - hasBin: true - dependencies: - queue: 6.0.2 - dev: false - - /immediate/3.3.0: - resolution: {integrity: sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==} - dev: false - - /immer/9.0.21: - resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} - dev: false - - /import-fresh/3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: false - - /import-lazy/2.1.0: - resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} - engines: {node: '>=4'} - dev: false - - /import-lazy/4.0.0: - resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} - engines: {node: '>=8'} - dev: false - - /imurmurhash/0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: false - - /indent-string/4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: false - - /infima/0.2.0-alpha.42: - resolution: {integrity: sha512-ift8OXNbQQwtbIt6z16KnSWP7uJ/SysSMFI4F87MNRTicypfl4Pv3E2OGVv6N3nSZFJvA8imYulCBS64iyHYww==} - engines: {node: '>=12'} - dev: false - - /inflight/1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: false - - /inherits/2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - dev: false - - /inherits/2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: false - - /ini/1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: false - - /ini/2.0.0: - resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} - engines: {node: '>=10'} - dev: false - - /inline-style-parser/0.1.1: - resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - dev: false - - /inline-style-parser/0.2.4: - resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} - dev: false - - /interpret/1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} - engines: {node: '>= 0.10'} - dev: false - - /invariant/2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - dependencies: - loose-envify: 1.4.0 - dev: false - - /ipaddr.js/1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - dev: false - - /ipaddr.js/2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} - engines: {node: '>= 10'} - dev: false - - /is-alphabetical/1.0.4: - resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} - dev: false - - /is-alphabetical/2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - dev: false - - /is-alphanumerical/1.0.4: - resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} - dependencies: - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - dev: false - - /is-alphanumerical/2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - dependencies: - is-alphabetical: 2.0.1 - is-decimal: 2.0.1 - dev: false - - /is-arrayish/0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: false - - /is-arrayish/0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - dev: false - - /is-binary-path/2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.3.0 - dev: false - - /is-buffer/2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - dev: false - - /is-ci/2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} - hasBin: true - dependencies: - ci-info: 2.0.0 - dev: false - - /is-ci/3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true - dependencies: - ci-info: 3.9.0 - dev: false - - /is-core-module/2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} - engines: {node: '>= 0.4'} - dependencies: - hasown: 2.0.2 - dev: false - - /is-decimal/1.0.4: - resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} - dev: false - - /is-decimal/2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - dev: false - - /is-docker/2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: false - - /is-extendable/0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - dev: false - - /is-extglob/2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: false - - /is-fullwidth-code-point/3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: false - - /is-glob/4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: false - - /is-hexadecimal/1.0.4: - resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} - dev: false - - /is-hexadecimal/2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - dev: false - - /is-installed-globally/0.4.0: - resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} - engines: {node: '>=10'} - dependencies: - global-dirs: 3.0.1 - is-path-inside: 3.0.3 - dev: false - - /is-npm/5.0.0: - resolution: {integrity: sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==} - engines: {node: '>=10'} - dev: false - - /is-npm/6.0.0: - resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false - - /is-number/7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: false - - /is-obj/1.0.1: - resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} - engines: {node: '>=0.10.0'} - dev: false - - /is-obj/2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} - dev: false - - /is-path-cwd/2.2.0: - resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} - engines: {node: '>=6'} - dev: false - - /is-path-inside/3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: false - - /is-plain-obj/2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: false - - /is-plain-obj/3.0.0: - resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} - engines: {node: '>=10'} - dev: false - - /is-plain-obj/4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - dev: false - - /is-plain-object/2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: false - - /is-regexp/1.0.0: - resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} - engines: {node: '>=0.10.0'} - dev: false - - /is-root/2.1.0: - resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} - engines: {node: '>=6'} - dev: false - - /is-stream/2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: false - - /is-typedarray/1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: false - - /is-whitespace-character/1.0.4: - resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} - dev: false - - /is-word-character/1.0.4: - resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} - dev: false - - /is-wsl/2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - dev: false - - /is-yarn-global/0.3.0: - resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} - dev: false - - /is-yarn-global/0.4.1: - resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} - engines: {node: '>=12'} - dev: false - - /isarray/0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - dev: false - - /isarray/1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: false - - /isexe/2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: false - - /isobject/3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - dev: false - - /jest-util/29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - '@types/node': 22.8.6 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - dev: false - - /jest-worker/27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/node': 22.8.6 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: false - - /jest-worker/29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@types/node': 22.8.6 - jest-util: 29.7.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: false - - /jiti/1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} - hasBin: true - dev: false - - /joi/17.13.3: - resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} - dependencies: - '@hapi/hoek': 9.3.0 - '@hapi/topo': 5.1.0 - '@sideway/address': 4.1.5 - '@sideway/formula': 3.0.1 - '@sideway/pinpoint': 2.0.0 - dev: false - - /js-tokens/4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: false - - /js-yaml/3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: false - - /js-yaml/4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - dependencies: - argparse: 2.0.1 - dev: false - - /jsesc/3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} - hasBin: true - dev: false - - /json-buffer/3.0.0: - resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} - dev: false - - /json-buffer/3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: false - - /json-parse-even-better-errors/2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: false - - /json-schema-traverse/0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: false - - /json-schema-traverse/1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: false - - /json5/2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: false - - /jsonfile/6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - dev: false - - /keyv/3.1.0: - resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} - dependencies: - json-buffer: 3.0.0 - dev: false - - /keyv/4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - dependencies: - json-buffer: 3.0.1 - dev: false - - /kind-of/6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: false - - /klaw-sync/6.0.0: - resolution: {integrity: sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==} - dependencies: - graceful-fs: 4.2.11 - dev: false - - /kleur/3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: false - - /latest-version/5.1.0: - resolution: {integrity: sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==} - engines: {node: '>=8'} - dependencies: - package-json: 6.5.0 - dev: false - - /latest-version/7.0.0: - resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} - engines: {node: '>=14.16'} - dependencies: - package-json: 8.1.1 - dev: false - - /launch-editor/2.9.1: - resolution: {integrity: sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==} - dependencies: - picocolors: 1.1.1 - shell-quote: 1.8.1 - dev: false - - /leven/3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - dev: false - - /lilconfig/2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - dev: false - - /lilconfig/3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} - engines: {node: '>=14'} - dev: false - - /lines-and-columns/1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: false - - /loader-runner/4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - dev: false - - /loader-utils/2.0.4: - resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} - engines: {node: '>=8.9.0'} - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 2.2.3 - dev: false - - /loader-utils/3.3.1: - resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} - engines: {node: '>= 12.13.0'} - dev: false - - /locate-path/3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - dev: false - - /locate-path/5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - dev: false - - /locate-path/6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: false - - /locate-path/7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-locate: 6.0.0 - dev: false - - /lodash.curry/4.1.1: - resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} - dev: false - - /lodash.debounce/4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - dev: false - - /lodash.flow/3.5.0: - resolution: {integrity: sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==} - dev: false - - /lodash.memoize/4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - dev: false - - /lodash.uniq/4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - dev: false - - /lodash/4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: false - - /longest-streak/3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - dev: false - - /loose-envify/1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - dependencies: - js-tokens: 4.0.0 - dev: false - - /lower-case/2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - dependencies: - tslib: 2.8.1 - dev: false - - /lowercase-keys/1.0.1: - resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} - engines: {node: '>=0.10.0'} - dev: false - - /lowercase-keys/2.0.0: - resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} - engines: {node: '>=8'} - dev: false - - /lowercase-keys/3.0.0: - resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false - - /lru-cache/5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 - dev: false - - /lunr-languages/1.14.0: - resolution: {integrity: sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA==} - dev: false - - /lunr/2.3.9: - resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} - dev: false - - /make-dir/3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.1 - dev: false - - /mark.js/8.11.1: - resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} - dev: false - - /markdown-escapes/1.0.4: - resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} - dev: false - - /markdown-extensions/2.0.0: - resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} - engines: {node: '>=16'} - dev: false - - /markdown-table/3.0.4: - resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} - dev: false - - /mdast-squeeze-paragraphs/4.0.0: - resolution: {integrity: sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==} - dependencies: - unist-util-remove: 2.1.0 - dev: false - - /mdast-util-definitions/4.0.0: - resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==} - dependencies: - unist-util-visit: 2.0.3 - dev: false - - /mdast-util-directive/3.0.0: - resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.1 - parse-entities: 4.0.1 - stringify-entities: 4.0.4 - unist-util-visit-parents: 6.0.1 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-find-and-replace/3.0.1: - resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} - dependencies: - '@types/mdast': 4.0.4 - escape-string-regexp: 5.0.0 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - dev: false - - /mdast-util-from-markdown/2.0.2: - resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - mdast-util-to-string: 4.0.0 - micromark: 4.0.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-decode-string: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - unist-util-stringify-position: 4.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-frontmatter/2.0.1: - resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - escape-string-regexp: 5.0.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.1 - micromark-extension-frontmatter: 2.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-gfm-autolink-literal/2.0.1: - resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} - dependencies: - '@types/mdast': 4.0.4 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-find-and-replace: 3.0.1 - micromark-util-character: 2.1.0 - dev: false - - /mdast-util-gfm-footnote/2.0.0: - resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.1 - micromark-util-normalize-identifier: 2.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-gfm-strikethrough/2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-gfm-table/2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - markdown-table: 3.0.4 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-gfm-task-list-item/2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-gfm/3.0.0: - resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} - dependencies: - mdast-util-from-markdown: 2.0.2 - mdast-util-gfm-autolink-literal: 2.0.1 - mdast-util-gfm-footnote: 2.0.0 - mdast-util-gfm-strikethrough: 2.0.0 - mdast-util-gfm-table: 2.0.0 - mdast-util-gfm-task-list-item: 2.0.0 - mdast-util-to-markdown: 2.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-mdx-expression/2.0.1: - resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-mdx-jsx/3.1.3: - resolution: {integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==} - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.1 - parse-entities: 4.0.1 - stringify-entities: 4.0.4 - unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-mdx/3.0.0: - resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} - dependencies: - mdast-util-from-markdown: 2.0.2 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.1.3 - mdast-util-mdxjs-esm: 2.0.1 - mdast-util-to-markdown: 2.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-mdxjs-esm/2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-phrasing/4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - dependencies: - '@types/mdast': 4.0.4 - unist-util-is: 6.0.0 - dev: false - - /mdast-util-to-hast/10.0.1: - resolution: {integrity: sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==} - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.11 - mdast-util-definitions: 4.0.0 - mdurl: 1.0.1 - unist-builder: 2.0.3 - unist-util-generated: 1.1.6 - unist-util-position: 3.1.0 - unist-util-visit: 2.0.3 - dev: false - - /mdast-util-to-hast/13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.2.0 - devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.0 - trim-lines: 3.0.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - dev: false - - /mdast-util-to-markdown/2.1.1: - resolution: {integrity: sha512-OrkcCoqAkEg9b1ykXBrA0ehRc8H4fGU/03cACmW2xXzau1+dIdS+qJugh1Cqex3hMumSBgSE/5pc7uqP12nLAw==} - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - longest-streak: 3.1.0 - mdast-util-phrasing: 4.1.0 - mdast-util-to-string: 4.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-decode-string: 2.0.0 - unist-util-visit: 5.0.0 - zwitch: 2.0.4 - dev: false - - /mdast-util-to-string/2.0.0: - resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} - dev: false - - /mdast-util-to-string/4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - dependencies: - '@types/mdast': 4.0.4 - dev: false - - /mdn-data/2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - dev: false - - /mdn-data/2.0.28: - resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - dev: false - - /mdn-data/2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - dev: false - - /mdurl/1.0.1: - resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} - dev: false - - /media-typer/0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - dev: false - - /memfs/3.5.3: - resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} - engines: {node: '>= 4.0.0'} - dependencies: - fs-monkey: 1.0.6 - dev: false - - /merge-descriptors/1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - dev: false - - /merge-stream/2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: false - - /merge2/1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: false - - /methods/1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - dev: false - - /micromark-core-commonmark/2.0.1: - resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} - dependencies: - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - micromark-factory-destination: 2.0.0 - micromark-factory-label: 2.0.0 - micromark-factory-space: 2.0.0 - micromark-factory-title: 2.0.0 - micromark-factory-whitespace: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-html-tag-name: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-subtokenize: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - dev: false - - /micromark-extension-directive/3.0.2: - resolution: {integrity: sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==} - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-factory-whitespace: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - parse-entities: 4.0.1 - dev: false - - /micromark-extension-frontmatter/2.0.0: - resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} - dependencies: - fault: 2.0.1 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - dev: false - - /micromark-extension-gfm-autolink-literal/2.1.0: - resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} - dependencies: - micromark-util-character: 2.1.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - dev: false - - /micromark-extension-gfm-footnote/2.1.0: - resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} - dependencies: - devlop: 1.1.0 - micromark-core-commonmark: 2.0.1 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - dev: false - - /micromark-extension-gfm-strikethrough/2.1.0: - resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - dev: false - - /micromark-extension-gfm-table/2.1.0: - resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - dev: false - - /micromark-extension-gfm-tagfilter/2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - dependencies: - micromark-util-types: 2.0.0 - dev: false - - /micromark-extension-gfm-task-list-item/2.1.0: - resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - dev: false - - /micromark-extension-gfm/3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - dependencies: - micromark-extension-gfm-autolink-literal: 2.1.0 - micromark-extension-gfm-footnote: 2.1.0 - micromark-extension-gfm-strikethrough: 2.1.0 - micromark-extension-gfm-table: 2.1.0 - micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.1.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-types: 2.0.0 - dev: false - - /micromark-extension-mdx-expression/3.0.0: - resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} - dependencies: - '@types/estree': 1.0.6 - devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.2 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - dev: false - - /micromark-extension-mdx-jsx/3.0.1: - resolution: {integrity: sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==} - dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.6 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.2 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - vfile-message: 4.0.2 - dev: false - - /micromark-extension-mdx-md/2.0.0: - resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} - dependencies: - micromark-util-types: 2.0.0 - dev: false - - /micromark-extension-mdxjs-esm/3.0.0: - resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} - dependencies: - '@types/estree': 1.0.6 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.1 - micromark-util-character: 2.1.0 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 - dev: false - - /micromark-extension-mdxjs/3.0.0: - resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} - dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2_acorn@8.14.0 - micromark-extension-mdx-expression: 3.0.0 - micromark-extension-mdx-jsx: 3.0.1 - micromark-extension-mdx-md: 2.0.0 - micromark-extension-mdxjs-esm: 3.0.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-types: 2.0.0 - dev: false - - /micromark-factory-destination/2.0.0: - resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} - dependencies: - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - dev: false - - /micromark-factory-label/2.0.0: - resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} - dependencies: - devlop: 1.1.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - dev: false - - /micromark-factory-mdx-expression/2.0.2: - resolution: {integrity: sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==} - dependencies: - '@types/estree': 1.0.6 - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 - dev: false - - /micromark-factory-space/1.1.0: - resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} - dependencies: - micromark-util-character: 1.2.0 - micromark-util-types: 1.1.0 - dev: false - - /micromark-factory-space/2.0.0: - resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} - dependencies: - micromark-util-character: 2.1.0 - micromark-util-types: 2.0.0 - dev: false - - /micromark-factory-title/2.0.0: - resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} - dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - dev: false - - /micromark-factory-whitespace/2.0.0: - resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} - dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - dev: false - - /micromark-util-character/1.2.0: - resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} - dependencies: - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - dev: false - - /micromark-util-character/2.1.0: - resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} - dependencies: - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - dev: false - - /micromark-util-chunked/2.0.0: - resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} - dependencies: - micromark-util-symbol: 2.0.0 - dev: false - - /micromark-util-classify-character/2.0.0: - resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} - dependencies: - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - dev: false - - /micromark-util-combine-extensions/2.0.0: - resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} - dependencies: - micromark-util-chunked: 2.0.0 - micromark-util-types: 2.0.0 - dev: false - - /micromark-util-decode-numeric-character-reference/2.0.1: - resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} - dependencies: - micromark-util-symbol: 2.0.0 - dev: false - - /micromark-util-decode-string/2.0.0: - resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} - dependencies: - decode-named-character-reference: 1.0.2 - micromark-util-character: 2.1.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-symbol: 2.0.0 - dev: false - - /micromark-util-encode/2.0.0: - resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - dev: false - - /micromark-util-events-to-acorn/2.0.2: - resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} - dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.6 - '@types/unist': 3.0.3 - devlop: 1.1.0 - estree-util-visit: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - vfile-message: 4.0.2 - dev: false - - /micromark-util-html-tag-name/2.0.0: - resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} - dev: false - - /micromark-util-normalize-identifier/2.0.0: - resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} - dependencies: - micromark-util-symbol: 2.0.0 - dev: false - - /micromark-util-resolve-all/2.0.0: - resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} - dependencies: - micromark-util-types: 2.0.0 - dev: false - - /micromark-util-sanitize-uri/2.0.0: - resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} - dependencies: - micromark-util-character: 2.1.0 - micromark-util-encode: 2.0.0 - micromark-util-symbol: 2.0.0 - dev: false - - /micromark-util-subtokenize/2.0.1: - resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - dev: false - - /micromark-util-symbol/1.1.0: - resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} - dev: false - - /micromark-util-symbol/2.0.0: - resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - dev: false - - /micromark-util-types/1.1.0: - resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} - dev: false - - /micromark-util-types/2.0.0: - resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - dev: false - - /micromark/4.0.0: - resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} - dependencies: - '@types/debug': 4.1.12 - debug: 4.3.7 - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.1 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-encode: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-subtokenize: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /micromatch/4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - dev: false - - /mime-db/1.33.0: - resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} - engines: {node: '>= 0.6'} - dev: false - - /mime-db/1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: false - - /mime-db/1.53.0: - resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} - engines: {node: '>= 0.6'} - dev: false - - /mime-types/2.1.18: - resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.33.0 - dev: false - - /mime-types/2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: false - - /mime/1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - dev: false - - /mimic-fn/2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: false - - /mimic-response/1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} - dev: false - - /mimic-response/3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - dev: false - - /mimic-response/4.0.0: - resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false - - /mini-css-extract-plugin/2.9.2_webpack@5.96.0: - resolution: {integrity: sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^5.0.0 - dependencies: - schema-utils: 4.2.0 - tapable: 2.2.1 - webpack: 5.96.0 - dev: false - - /minimalistic-assert/1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - dev: false - - /minimatch/3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: false - - /minimist/1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: false - - /minipass/3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - dependencies: - yallist: 4.0.0 - dev: false - - /minipass/5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - dev: false - - /minizlib/2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - dev: false - - /mkdirp-classic/0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - dev: false - - /mkdirp/1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: false - - /mrmime/2.0.0: - resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} - engines: {node: '>=10'} - dev: false - - /ms/2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: false - - /ms/2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: false - - /multicast-dns/7.2.5: - resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} - hasBin: true - dependencies: - dns-packet: 5.6.1 - thunky: 1.1.0 - dev: false - - /nanoid/3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: false - - /napi-build-utils/1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - dev: false - - /negotiator/0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: false - - /negotiator/0.6.4: - resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} - engines: {node: '>= 0.6'} - dev: false - - /neo-async/2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: false - - /no-case/3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - dependencies: - lower-case: 2.0.2 - tslib: 2.8.1 - dev: false - - /node-abi/3.71.0: - resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==} - engines: {node: '>=10'} - dependencies: - semver: 7.6.3 - dev: false - - /node-addon-api/3.2.1: - resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} - dev: false - - /node-addon-api/5.1.0: - resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} - dev: false - - /node-addon-api/8.2.1: - resolution: {integrity: sha512-vmEOvxwiH8tlOcv4SyE8RH34rI5/nWVaigUeAUPawC6f0+HoDthwI0vkMu4tbtsZrXq6QXFfrkhjofzKEs5tpA==} - engines: {node: ^18 || ^20 || >= 21} - dev: false - - /node-emoji/1.11.0: - resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} - dependencies: - lodash: 4.17.21 - dev: false - - /node-emoji/2.1.3: - resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} - engines: {node: '>=18'} - dependencies: - '@sindresorhus/is': 4.6.0 - char-regex: 1.0.2 - emojilib: 2.4.0 - skin-tone: 2.0.0 - dev: false - - /node-fetch/2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: false - - /node-forge/1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - dev: false - - /node-releases/2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - dev: false - - /nodejieba/3.4.3: - resolution: {integrity: sha512-OZnhxsy25k5XRBqI2UUjSu6k3a1+5U9PGm/JMWs949D2HCLfwdt9XIJ0B4YF2ZVQakNKqBUR37Vn5L/9lf4gYg==} - engines: {node: '>= 10.20.0'} - requiresBuild: true - dependencies: - '@mapbox/node-pre-gyp': 1.0.11 - node-addon-api: 3.2.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - - /nopt/5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true - dependencies: - abbrev: 1.1.1 - dev: false - - /normalize-path/3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: false - - /normalize-range/0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - dev: false - - /normalize-url/4.5.1: - resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} - engines: {node: '>=8'} - dev: false - - /normalize-url/6.1.0: - resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} - engines: {node: '>=10'} - dev: false - - /normalize-url/8.0.1: - resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} - engines: {node: '>=14.16'} - dev: false - - /npm-run-path/4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: false - - /npm-to-yarn/1.3.0: - resolution: {integrity: sha512-07nTERZViiQvQJpVxhUyJgV5zLaMrAxW+nfSv/ELHe3Fv9bSSxRS1lTw9MplkuLtynQru3fvEm9r4a5+IE7j2A==} - engines: {node: '>=6.0.0'} - dev: false - - /npmlog/5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - deprecated: This package is no longer supported. - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - dev: false - - /nprogress/0.2.0: - resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} - dev: false - - /nth-check/2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - dependencies: - boolbase: 1.0.0 - dev: false - - /object-assign/4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - dev: false - - /object-inspect/1.13.2: - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} - engines: {node: '>= 0.4'} - dev: false - - /object-keys/1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: false - - /object.assign/4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: false - - /obuf/1.1.2: - resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - dev: false - - /on-finished/2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - dependencies: - ee-first: 1.1.1 - dev: false - - /on-headers/1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} - dev: false - - /once/1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: false - - /onetime/5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: false - - /open/8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - dev: false - - /opener/1.5.2: - resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} - hasBin: true - dev: false - - /p-cancelable/1.1.0: - resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} - engines: {node: '>=6'} - dev: false - - /p-cancelable/3.0.0: - resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} - engines: {node: '>=12.20'} - dev: false - - /p-limit/2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: false - - /p-limit/3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: false - - /p-limit/4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - yocto-queue: 1.1.1 - dev: false - - /p-locate/3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - dependencies: - p-limit: 2.3.0 - dev: false - - /p-locate/4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - dev: false - - /p-locate/5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: false - - /p-locate/6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-limit: 4.0.0 - dev: false - - /p-map/4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - dependencies: - aggregate-error: 3.1.0 - dev: false - - /p-retry/4.6.2: - resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} - engines: {node: '>=8'} - dependencies: - '@types/retry': 0.12.0 - retry: 0.13.1 - dev: false - - /p-try/2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: false - - /package-json/6.5.0: - resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==} - engines: {node: '>=8'} - dependencies: - got: 9.6.0 - registry-auth-token: 4.2.2 - registry-url: 5.1.0 - semver: 6.3.1 - dev: false - - /package-json/8.1.1: - resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} - engines: {node: '>=14.16'} - dependencies: - got: 12.6.1 - registry-auth-token: 5.0.2 - registry-url: 6.0.1 - semver: 7.6.3 - dev: false - - /param-case/3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - dependencies: - dot-case: 3.0.4 - tslib: 2.8.1 - dev: false - - /parent-module/1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - dev: false - - /parse-entities/2.0.0: - resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} - dependencies: - character-entities: 1.2.4 - character-entities-legacy: 1.1.4 - character-reference-invalid: 1.1.4 - is-alphanumerical: 1.0.4 - is-decimal: 1.0.4 - is-hexadecimal: 1.0.4 - dev: false - - /parse-entities/4.0.1: - resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} - dependencies: - '@types/unist': 2.0.11 - character-entities: 2.0.2 - character-entities-legacy: 3.0.0 - character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.0.2 - is-alphanumerical: 2.0.1 - is-decimal: 2.0.1 - is-hexadecimal: 2.0.1 - dev: false - - /parse-json/5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - dependencies: - '@babel/code-frame': 7.26.2 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - dev: false - - /parse-numeric-range/1.3.0: - resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} - dev: false - - /parse5-htmlparser2-tree-adapter/7.1.0: - resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} - dependencies: - domhandler: 5.0.3 - parse5: 7.2.1 - dev: false - - /parse5-parser-stream/7.1.2: - resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} - dependencies: - parse5: 7.2.1 - dev: false - - /parse5/6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - dev: false - - /parse5/7.2.1: - resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} - dependencies: - entities: 4.5.0 - dev: false - - /parseurl/1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - dev: false - - /pascal-case/3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - dev: false - - /path-exists/3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - dev: false - - /path-exists/4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: false - - /path-exists/5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false - - /path-is-absolute/1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: false - - /path-is-inside/1.0.2: - resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} - dev: false - - /path-key/3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: false - - /path-parse/1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: false - - /path-to-regexp/0.1.10: - resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} - dev: false - - /path-to-regexp/1.9.0: - resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==} - dependencies: - isarray: 0.0.1 - dev: false - - /path-to-regexp/3.3.0: - resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} - dev: false - - /path-type/4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: false - - /picocolors/1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - dev: false - - /picomatch/2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: false - - /pkg-dir/4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - dev: false - - /pkg-dir/7.0.0: - resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} - engines: {node: '>=14.16'} - dependencies: - find-up: 6.3.0 - dev: false - - /pkg-up/3.1.0: - resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} - engines: {node: '>=8'} - dependencies: - find-up: 3.0.0 - dev: false - - /postcss-calc/8.2.4_postcss@8.4.47: - resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} - peerDependencies: - postcss: ^8.2.2 - dependencies: - postcss: 8.4.47 - postcss-selector-parser: 6.1.2 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-calc/9.0.1_postcss@8.4.47: - resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.2.2 - dependencies: - postcss: 8.4.47 - postcss-selector-parser: 6.1.2 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-colormin/5.3.1_postcss@8.4.47: - resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - browserslist: 4.24.2 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-colormin/6.1.0_postcss@8.4.47: - resolution: {integrity: sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - browserslist: 4.24.2 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-convert-values/5.1.3_postcss@8.4.47: - resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - browserslist: 4.24.2 - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-convert-values/6.1.0_postcss@8.4.47: - resolution: {integrity: sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - browserslist: 4.24.2 - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-discard-comments/5.1.2_postcss@8.4.47: - resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - dev: false - - /postcss-discard-comments/6.0.2_postcss@8.4.47: - resolution: {integrity: sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - dev: false - - /postcss-discard-duplicates/5.1.0_postcss@8.4.47: - resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - dev: false - - /postcss-discard-duplicates/6.0.3_postcss@8.4.47: - resolution: {integrity: sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - dev: false - - /postcss-discard-empty/5.1.1_postcss@8.4.47: - resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - dev: false - - /postcss-discard-empty/6.0.3_postcss@8.4.47: - resolution: {integrity: sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - dev: false - - /postcss-discard-overridden/5.1.0_postcss@8.4.47: - resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - dev: false - - /postcss-discard-overridden/6.0.2_postcss@8.4.47: - resolution: {integrity: sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - dev: false - - /postcss-discard-unused/5.1.0_postcss@8.4.47: - resolution: {integrity: sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - postcss-selector-parser: 6.1.2 - dev: false - - /postcss-discard-unused/6.0.5_postcss@8.4.47: - resolution: {integrity: sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - postcss-selector-parser: 6.1.2 - dev: false - - /postcss-loader/7.3.4_b4qnae3lkkone7oqijh5tzkste: - resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} - engines: {node: '>= 14.15.0'} - peerDependencies: - postcss: ^7.0.0 || ^8.0.1 - webpack: ^5.0.0 - dependencies: - cosmiconfig: 8.3.6 - jiti: 1.21.6 - postcss: 8.4.47 - semver: 7.6.3 - webpack: 5.96.0 - transitivePeerDependencies: - - typescript - dev: false - - /postcss-merge-idents/5.1.1_postcss@8.4.47: - resolution: {integrity: sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - cssnano-utils: 3.1.0_postcss@8.4.47 - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-merge-idents/6.0.3_postcss@8.4.47: - resolution: {integrity: sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - cssnano-utils: 4.0.2_postcss@8.4.47 - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-merge-longhand/5.1.7_postcss@8.4.47: - resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - stylehacks: 5.1.1_postcss@8.4.47 - dev: false - - /postcss-merge-longhand/6.0.5_postcss@8.4.47: - resolution: {integrity: sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - stylehacks: 6.1.1_postcss@8.4.47 - dev: false - - /postcss-merge-rules/5.1.4_postcss@8.4.47: - resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - browserslist: 4.24.2 - caniuse-api: 3.0.0 - cssnano-utils: 3.1.0_postcss@8.4.47 - postcss: 8.4.47 - postcss-selector-parser: 6.1.2 - dev: false - - /postcss-merge-rules/6.1.1_postcss@8.4.47: - resolution: {integrity: sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - browserslist: 4.24.2 - caniuse-api: 3.0.0 - cssnano-utils: 4.0.2_postcss@8.4.47 - postcss: 8.4.47 - postcss-selector-parser: 6.1.2 - dev: false - - /postcss-minify-font-values/5.1.0_postcss@8.4.47: - resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-minify-font-values/6.1.0_postcss@8.4.47: - resolution: {integrity: sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-minify-gradients/5.1.1_postcss@8.4.47: - resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - colord: 2.9.3 - cssnano-utils: 3.1.0_postcss@8.4.47 - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-minify-gradients/6.0.3_postcss@8.4.47: - resolution: {integrity: sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - colord: 2.9.3 - cssnano-utils: 4.0.2_postcss@8.4.47 - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-minify-params/5.1.4_postcss@8.4.47: - resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - browserslist: 4.24.2 - cssnano-utils: 3.1.0_postcss@8.4.47 - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-minify-params/6.1.0_postcss@8.4.47: - resolution: {integrity: sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - browserslist: 4.24.2 - cssnano-utils: 4.0.2_postcss@8.4.47 - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-minify-selectors/5.2.1_postcss@8.4.47: - resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - postcss-selector-parser: 6.1.2 - dev: false - - /postcss-minify-selectors/6.0.4_postcss@8.4.47: - resolution: {integrity: sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - postcss-selector-parser: 6.1.2 - dev: false - - /postcss-modules-extract-imports/3.1.0_postcss@8.4.47: - resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - postcss: 8.4.47 - dev: false - - /postcss-modules-local-by-default/4.0.5_postcss@8.4.47: - resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - icss-utils: 5.1.0_postcss@8.4.47 - postcss: 8.4.47 - postcss-selector-parser: 6.1.2 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-modules-scope/3.2.0_postcss@8.4.47: - resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - postcss: 8.4.47 - postcss-selector-parser: 6.1.2 - dev: false - - /postcss-modules-values/4.0.0_postcss@8.4.47: - resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - icss-utils: 5.1.0_postcss@8.4.47 - postcss: 8.4.47 - dev: false - - /postcss-normalize-charset/5.1.0_postcss@8.4.47: - resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - dev: false - - /postcss-normalize-charset/6.0.2_postcss@8.4.47: - resolution: {integrity: sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - dev: false - - /postcss-normalize-display-values/5.1.0_postcss@8.4.47: - resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-normalize-display-values/6.0.2_postcss@8.4.47: - resolution: {integrity: sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-normalize-positions/5.1.1_postcss@8.4.47: - resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-normalize-positions/6.0.2_postcss@8.4.47: - resolution: {integrity: sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-normalize-repeat-style/5.1.1_postcss@8.4.47: - resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-normalize-repeat-style/6.0.2_postcss@8.4.47: - resolution: {integrity: sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-normalize-string/5.1.0_postcss@8.4.47: - resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-normalize-string/6.0.2_postcss@8.4.47: - resolution: {integrity: sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-normalize-timing-functions/5.1.0_postcss@8.4.47: - resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-normalize-timing-functions/6.0.2_postcss@8.4.47: - resolution: {integrity: sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-normalize-unicode/5.1.1_postcss@8.4.47: - resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - browserslist: 4.24.2 - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-normalize-unicode/6.1.0_postcss@8.4.47: - resolution: {integrity: sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - browserslist: 4.24.2 - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-normalize-url/5.1.0_postcss@8.4.47: - resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - normalize-url: 6.1.0 - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-normalize-url/6.0.2_postcss@8.4.47: - resolution: {integrity: sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-normalize-whitespace/5.1.1_postcss@8.4.47: - resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-normalize-whitespace/6.0.2_postcss@8.4.47: - resolution: {integrity: sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-ordered-values/5.1.3_postcss@8.4.47: - resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - cssnano-utils: 3.1.0_postcss@8.4.47 - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-ordered-values/6.0.2_postcss@8.4.47: - resolution: {integrity: sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - cssnano-utils: 4.0.2_postcss@8.4.47 - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-reduce-idents/5.2.0_postcss@8.4.47: - resolution: {integrity: sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-reduce-idents/6.0.3_postcss@8.4.47: - resolution: {integrity: sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-reduce-initial/5.1.2_postcss@8.4.47: - resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - browserslist: 4.24.2 - caniuse-api: 3.0.0 - postcss: 8.4.47 - dev: false - - /postcss-reduce-initial/6.1.0_postcss@8.4.47: - resolution: {integrity: sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - browserslist: 4.24.2 - caniuse-api: 3.0.0 - postcss: 8.4.47 - dev: false - - /postcss-reduce-transforms/5.1.0_postcss@8.4.47: - resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-reduce-transforms/6.0.2_postcss@8.4.47: - resolution: {integrity: sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-selector-parser/6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - dev: false - - /postcss-sort-media-queries/4.4.1_postcss@8.4.47: - resolution: {integrity: sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==} - engines: {node: '>=10.0.0'} - peerDependencies: - postcss: ^8.4.16 - dependencies: - postcss: 8.4.47 - sort-css-media-queries: 2.1.0 - dev: false - - /postcss-sort-media-queries/5.2.0_postcss@8.4.47: - resolution: {integrity: sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.4.23 - dependencies: - postcss: 8.4.47 - sort-css-media-queries: 2.2.0 - dev: false - - /postcss-svgo/5.1.0_postcss@8.4.47: - resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - svgo: 2.8.0 - dev: false - - /postcss-svgo/6.0.3_postcss@8.4.47: - resolution: {integrity: sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==} - engines: {node: ^14 || ^16 || >= 18} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - svgo: 3.3.2 - dev: false - - /postcss-unique-selectors/5.1.1_postcss@8.4.47: - resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - postcss-selector-parser: 6.1.2 - dev: false - - /postcss-unique-selectors/6.0.4_postcss@8.4.47: - resolution: {integrity: sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - postcss-selector-parser: 6.1.2 - dev: false - - /postcss-value-parser/4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - dev: false - - /postcss-zindex/5.1.0_postcss@8.4.47: - resolution: {integrity: sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.47 - dev: false - - /postcss-zindex/6.0.2_postcss@8.4.47: - resolution: {integrity: sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - postcss: 8.4.47 - dev: false - - /postcss/8.4.47: - resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.7 - picocolors: 1.1.1 - source-map-js: 1.2.1 - dev: false - - /prebuild-install/7.1.2: - resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} - engines: {node: '>=10'} - hasBin: true - dependencies: - detect-libc: 2.0.3 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.8 - mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 - node-abi: 3.71.0 - pump: 3.0.2 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.1 - tunnel-agent: 0.6.0 - dev: false - - /prepend-http/2.0.0: - resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} - engines: {node: '>=4'} - dev: false - - /pretty-error/4.0.0: - resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} - dependencies: - lodash: 4.17.21 - renderkid: 3.0.0 - dev: false - - /pretty-time/1.1.0: - resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} - engines: {node: '>=4'} - dev: false - - /prism-react-renderer/1.3.5_react@17.0.2: - resolution: {integrity: sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==} - peerDependencies: - react: '>=0.14.9' - dependencies: - react: 17.0.2 - dev: false - - /prismjs/1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} - engines: {node: '>=6'} - dev: false - - /process-nextick-args/2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: false - - /promise/7.3.1: - resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} - dependencies: - asap: 2.0.6 - dev: false - - /prompts/2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - dev: false - - /prop-types/15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - dev: false - - /property-information/5.6.0: - resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} - dependencies: - xtend: 4.0.2 - dev: false - - /property-information/6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - dev: false - - /proto-list/1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - dev: false - - /proxy-addr/2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - dev: false - - /pump/3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: false - - /punycode/2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - dev: false - - /pupa/2.1.1: - resolution: {integrity: sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==} - engines: {node: '>=8'} - dependencies: - escape-goat: 2.1.1 - dev: false - - /pupa/3.1.0: - resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} - engines: {node: '>=12.20'} - dependencies: - escape-goat: 4.0.0 - dev: false - - /pure-color/1.3.0: - resolution: {integrity: sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==} - dev: false - - /qs/6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - dependencies: - side-channel: 1.0.6 - dev: false - - /queue-microtask/1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: false - - /queue/6.0.2: - resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} - dependencies: - inherits: 2.0.4 - dev: false - - /quick-lru/5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - dev: false - - /randombytes/2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - dependencies: - safe-buffer: 5.2.1 - dev: false - - /range-parser/1.2.0: - resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} - engines: {node: '>= 0.6'} - dev: false - - /range-parser/1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - dev: false - - /raw-body/2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - dev: false - - /rc/1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - dev: false - - /react-base16-styling/0.6.0: - resolution: {integrity: sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==} - dependencies: - base16: 1.0.0 - lodash.curry: 4.1.1 - lodash.flow: 3.5.0 - pure-color: 1.3.0 - dev: false - - /react-dev-utils/12.0.1_webpack@5.96.0: - resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} - engines: {node: '>=14'} - dependencies: - '@babel/code-frame': 7.26.2 - address: 1.2.2 - browserslist: 4.24.2 - chalk: 4.1.2 - cross-spawn: 7.0.3 - detect-port-alt: 1.1.6 - escape-string-regexp: 4.0.0 - filesize: 8.0.7 - find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3_webpack@5.96.0 - global-modules: 2.0.0 - globby: 11.1.0 - gzip-size: 6.0.0 - immer: 9.0.21 - is-root: 2.1.0 - loader-utils: 3.3.1 - open: 8.4.2 - pkg-up: 3.1.0 - prompts: 2.4.2 - react-error-overlay: 6.0.11 - recursive-readdir: 2.2.3 - shell-quote: 1.8.1 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - eslint - - supports-color - - typescript - - vue-template-compiler - - webpack - dev: false - - /react-dom/17.0.2_react@17.0.2: - resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} - peerDependencies: - react: 17.0.2 - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react: 17.0.2 - scheduler: 0.20.2 - dev: false - - /react-error-overlay/6.0.11: - resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} - dev: false - - /react-fast-compare/3.2.2: - resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} - dev: false - - /react-helmet-async/1.3.0_sfoxds7t5ydpegc3knd667wn6m: - resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} - peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@babel/runtime': 7.26.0 - invariant: 2.2.4 - prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-fast-compare: 3.2.2 - shallowequal: 1.1.0 - dev: false - - /react-helmet-async/2.0.5_react@17.0.2: - resolution: {integrity: sha512-rYUYHeus+i27MvFE+Jaa4WsyBKGkL6qVgbJvSBoX8mbsWoABJXdEO0bZyi0F6i+4f0NuIb8AvqPMj3iXFHkMwg==} - peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 - dependencies: - invariant: 2.2.4 - react: 17.0.2 - react-fast-compare: 3.2.2 - shallowequal: 1.1.0 - dev: false - - /react-is/16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - dev: false - - /react-is/18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - dev: false - - /react-json-view/1.21.3_q2ahqybkqvlpd3owch36jrs4tu: - resolution: {integrity: sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==} - peerDependencies: - react: ^17.0.0 || ^16.3.0 || ^15.5.4 - react-dom: ^17.0.0 || ^16.3.0 || ^15.5.4 - dependencies: - flux: 4.0.4_react@17.0.2 - react: 17.0.2 - react-base16-styling: 0.6.0 - react-dom: 17.0.2_react@17.0.2 - react-lifecycles-compat: 3.0.4 - react-textarea-autosize: 8.5.4_giebhtz6uy3zjbzzh54v5f2luu - transitivePeerDependencies: - - '@types/react' - - encoding - dev: false - - /react-lifecycles-compat/3.0.4: - resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} - dev: false - - /react-loadable-ssr-addon-v5-slorber/1.0.1_2chpki6lqxahr7o7ttpca7wuai: - resolution: {integrity: sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==} - engines: {node: '>=10.13.0'} - peerDependencies: - react-loadable: '*' - webpack: '>=4.41.1 || 5.x' - dependencies: - '@babel/runtime': 7.26.0 - react-loadable: /@docusaurus/react-loadable/5.5.2_react@17.0.2 - webpack: 5.96.0 - dev: false - - /react-loadable-ssr-addon-v5-slorber/1.0.1_2gpknyoragrlwsoamqcp4342sq: - resolution: {integrity: sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==} - engines: {node: '>=10.13.0'} - peerDependencies: - react-loadable: '*' - webpack: '>=4.41.1 || 5.x' - dependencies: - '@babel/runtime': 7.26.0 - react-loadable: /@docusaurus/react-loadable/6.0.0_react@17.0.2 - webpack: 5.96.0 - dev: false - - /react-router-config/5.1.1_2dl5roaqnyqqppnjni7uetnb3a: - resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} - peerDependencies: - react: '>=15' - react-router: '>=5' - dependencies: - '@babel/runtime': 7.26.0 - react: 17.0.2 - react-router: 5.3.4_react@17.0.2 - dev: false - - /react-router-dom/5.3.4_react@17.0.2: - resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==} - peerDependencies: - react: '>=15' - dependencies: - '@babel/runtime': 7.26.0 - history: 4.10.1 - loose-envify: 1.4.0 - prop-types: 15.8.1 - react: 17.0.2 - react-router: 5.3.4_react@17.0.2 - tiny-invariant: 1.3.3 - tiny-warning: 1.0.3 - dev: false - - /react-router/5.3.4_react@17.0.2: - resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==} - peerDependencies: - react: '>=15' - dependencies: - '@babel/runtime': 7.26.0 - history: 4.10.1 - hoist-non-react-statics: 3.3.2 - loose-envify: 1.4.0 - path-to-regexp: 1.9.0 - prop-types: 15.8.1 - react: 17.0.2 - react-is: 16.13.1 - tiny-invariant: 1.3.3 - tiny-warning: 1.0.3 - dev: false - - /react-textarea-autosize/8.5.4_giebhtz6uy3zjbzzh54v5f2luu: - resolution: {integrity: sha512-eSSjVtRLcLfFwFcariT77t9hcbVJHQV76b51QjQGarQIHml2+gM2lms0n3XrhnDmgK5B+/Z7TmQk5OHNzqYm/A==} - engines: {node: '>=10'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@babel/runtime': 7.26.0 - react: 17.0.2 - use-composed-ref: 1.3.0_react@17.0.2 - use-latest: 1.2.1_giebhtz6uy3zjbzzh54v5f2luu - transitivePeerDependencies: - - '@types/react' - dev: false - - /react-waypoint/10.3.0_react@17.0.2: - resolution: {integrity: sha512-iF1y2c1BsoXuEGz08NoahaLFIGI9gTUAAOKip96HUmylRT6DUtpgoBPjk/Y8dfcFVmfVDvUzWjNXpZyKTOV0SQ==} - peerDependencies: - react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@babel/runtime': 7.26.0 - consolidated-events: 2.0.2 - prop-types: 15.8.1 - react: 17.0.2 - react-is: 18.3.1 - dev: false - - /react/17.0.2: - resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} - engines: {node: '>=0.10.0'} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - dev: false - - /readable-stream/2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: false - - /readable-stream/3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: false - - /readdirp/3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: false - - /reading-time/1.5.0: - resolution: {integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==} - dev: false - - /rechoir/0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} - engines: {node: '>= 0.10'} - dependencies: - resolve: 1.22.8 - dev: false - - /recma-build-jsx/1.0.0: - resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} - dependencies: - '@types/estree': 1.0.6 - estree-util-build-jsx: 3.0.1 - vfile: 6.0.3 - dev: false - - /recma-jsx/1.0.0: - resolution: {integrity: sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==} - dependencies: - acorn-jsx: 5.3.2 - estree-util-to-js: 2.0.0 - recma-parse: 1.0.0 - recma-stringify: 1.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - acorn - dev: false - - /recma-parse/1.0.0: - resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} - dependencies: - '@types/estree': 1.0.6 - esast-util-from-js: 2.0.1 - unified: 11.0.5 - vfile: 6.0.3 - dev: false - - /recma-stringify/1.0.0: - resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} - dependencies: - '@types/estree': 1.0.6 - estree-util-to-js: 2.0.0 - unified: 11.0.5 - vfile: 6.0.3 - dev: false - - /recursive-readdir/2.2.3: - resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} - engines: {node: '>=6.0.0'} - dependencies: - minimatch: 3.1.2 - dev: false - - /regenerate-unicode-properties/10.2.0: - resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - dev: false - - /regenerate/1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - dev: false - - /regenerator-runtime/0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - dev: false - - /regenerator-transform/0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - dependencies: - '@babel/runtime': 7.26.0 - dev: false - - /regexpu-core/6.1.1: - resolution: {integrity: sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.0 - regjsgen: 0.8.0 - regjsparser: 0.11.2 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.0 - dev: false - - /registry-auth-token/4.2.2: - resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} - engines: {node: '>=6.0.0'} - dependencies: - rc: 1.2.8 - dev: false - - /registry-auth-token/5.0.2: - resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} - engines: {node: '>=14'} - dependencies: - '@pnpm/npm-conf': 2.3.1 - dev: false - - /registry-url/5.1.0: - resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} - engines: {node: '>=8'} - dependencies: - rc: 1.2.8 - dev: false - - /registry-url/6.0.1: - resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} - engines: {node: '>=12'} - dependencies: - rc: 1.2.8 - dev: false - - /regjsgen/0.8.0: - resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - dev: false - - /regjsparser/0.11.2: - resolution: {integrity: sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==} - hasBin: true - dependencies: - jsesc: 3.0.2 - dev: false - - /rehype-raw/7.0.0: - resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} - dependencies: - '@types/hast': 3.0.4 - hast-util-raw: 9.0.4 - vfile: 6.0.3 - dev: false - - /rehype-recma/1.0.0: - resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} - dependencies: - '@types/estree': 1.0.6 - '@types/hast': 3.0.4 - hast-util-to-estree: 3.1.0 - transitivePeerDependencies: - - supports-color - dev: false - - /relateurl/0.2.7: - resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} - engines: {node: '>= 0.10'} - dev: false - - /remark-directive/3.0.0: - resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} - dependencies: - '@types/mdast': 4.0.4 - mdast-util-directive: 3.0.0 - micromark-extension-directive: 3.0.2 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - dev: false - - /remark-emoji/2.2.0: - resolution: {integrity: sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w==} - dependencies: - emoticon: 3.2.0 - node-emoji: 1.11.0 - unist-util-visit: 2.0.3 - dev: false - - /remark-emoji/4.0.1: - resolution: {integrity: sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - '@types/mdast': 4.0.4 - emoticon: 4.1.0 - mdast-util-find-and-replace: 3.0.1 - node-emoji: 2.1.3 - unified: 11.0.5 - dev: false - - /remark-footnotes/2.0.0: - resolution: {integrity: sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==} - dev: false - - /remark-frontmatter/5.0.0: - resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==} - dependencies: - '@types/mdast': 4.0.4 - mdast-util-frontmatter: 2.0.1 - micromark-extension-frontmatter: 2.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - dev: false - - /remark-gfm/4.0.0: - resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} - dependencies: - '@types/mdast': 4.0.4 - mdast-util-gfm: 3.0.0 - micromark-extension-gfm: 3.0.0 - remark-parse: 11.0.0 - remark-stringify: 11.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - dev: false - - /remark-mdx/1.6.22: - resolution: {integrity: sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==} - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-proposal-object-rest-spread': 7.12.1_@babel+core@7.12.9 - '@babel/plugin-syntax-jsx': 7.12.1_@babel+core@7.12.9 - '@mdx-js/util': 1.6.22 - is-alphabetical: 1.0.4 - remark-parse: 8.0.3 - unified: 9.2.0 - transitivePeerDependencies: - - supports-color - dev: false - - /remark-mdx/3.1.0: - resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==} - dependencies: - mdast-util-mdx: 3.0.0 - micromark-extension-mdxjs: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /remark-parse/11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.2 - micromark-util-types: 2.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - dev: false - - /remark-parse/8.0.3: - resolution: {integrity: sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==} - dependencies: - ccount: 1.1.0 - collapse-white-space: 1.0.6 - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - is-whitespace-character: 1.0.4 - is-word-character: 1.0.4 - markdown-escapes: 1.0.4 - parse-entities: 2.0.0 - repeat-string: 1.6.1 - state-toggle: 1.0.3 - trim: 0.0.1 - trim-trailing-lines: 1.1.4 - unherit: 1.1.3 - unist-util-remove-position: 2.0.1 - vfile-location: 3.2.0 - xtend: 4.0.2 - dev: false - - /remark-rehype/11.1.1: - resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.0 - unified: 11.0.5 - vfile: 6.0.3 - dev: false - - /remark-squeeze-paragraphs/4.0.0: - resolution: {integrity: sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==} - dependencies: - mdast-squeeze-paragraphs: 4.0.0 - dev: false - - /remark-stringify/11.0.0: - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - dependencies: - '@types/mdast': 4.0.4 - mdast-util-to-markdown: 2.1.1 - unified: 11.0.5 - dev: false - - /renderkid/3.0.0: - resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} - dependencies: - css-select: 4.3.0 - dom-converter: 0.2.0 - htmlparser2: 6.1.0 - lodash: 4.17.21 - strip-ansi: 6.0.1 - dev: false - - /repeat-string/1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - dev: false - - /require-from-string/2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: false - - /require-like/0.1.2: - resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} - dev: false - - /requires-port/1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - dev: false - - /resolve-alpn/1.2.1: - resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - dev: false - - /resolve-from/4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: false - - /resolve-pathname/3.0.0: - resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} - dev: false - - /resolve/1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - dependencies: - is-core-module: 2.15.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: false - - /responselike/1.0.2: - resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} - dependencies: - lowercase-keys: 1.0.1 - dev: false - - /responselike/3.0.0: - resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} - engines: {node: '>=14.16'} - dependencies: - lowercase-keys: 3.0.0 - dev: false - - /retry/0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - dev: false - - /reusify/1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: false - - /rimraf/3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - dependencies: - glob: 7.2.3 - dev: false - - /rtl-detect/1.1.2: - resolution: {integrity: sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==} - dev: false - - /rtlcss/3.5.0: - resolution: {integrity: sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==} - hasBin: true - dependencies: - find-up: 5.0.0 - picocolors: 1.1.1 - postcss: 8.4.47 - strip-json-comments: 3.1.1 - dev: false - - /run-parallel/1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: false - - /rxjs/7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - dependencies: - tslib: 2.8.1 - dev: false - - /safe-buffer/5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: false - - /safe-buffer/5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: false - - /safer-buffer/2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: false - - /sax/1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - dev: false - - /scheduler/0.20.2: - resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - dev: false - - /schema-utils/2.7.0: - resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} - engines: {node: '>= 8.9.0'} - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2_ajv@6.12.6 - dev: false - - /schema-utils/2.7.1: - resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} - engines: {node: '>= 8.9.0'} - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2_ajv@6.12.6 - dev: false - - /schema-utils/3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2_ajv@6.12.6 - dev: false - - /schema-utils/4.2.0: - resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} - engines: {node: '>= 12.13.0'} - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1 - ajv-keywords: 5.1.0_ajv@8.17.1 - dev: false - - /section-matter/1.0.0: - resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} - engines: {node: '>=4'} - dependencies: - extend-shallow: 2.0.1 - kind-of: 6.0.3 - dev: false - - /select-hose/2.0.0: - resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} - dev: false - - /selfsigned/2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} - dependencies: - '@types/node-forge': 1.3.11 - node-forge: 1.3.1 - dev: false - - /semver-diff/3.1.1: - resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.1 - dev: false - - /semver-diff/4.0.0: - resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} - engines: {node: '>=12'} - dependencies: - semver: 7.6.3 - dev: false - - /semver/5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - dev: false - - /semver/6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - dev: false - - /semver/7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true - dev: false - - /send/0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} - engines: {node: '>= 0.8.0'} - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - dev: false - - /serialize-javascript/6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - dependencies: - randombytes: 2.1.0 - dev: false - - /serve-handler/6.1.6: - resolution: {integrity: sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==} - dependencies: - bytes: 3.0.0 - content-disposition: 0.5.2 - mime-types: 2.1.18 - minimatch: 3.1.2 - path-is-inside: 1.0.2 - path-to-regexp: 3.3.0 - range-parser: 1.2.0 - dev: false - - /serve-index/1.9.1: - resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} - engines: {node: '>= 0.8.0'} - dependencies: - accepts: 1.3.8 - batch: 0.6.1 - debug: 2.6.9 - escape-html: 1.0.3 - http-errors: 1.6.3 - mime-types: 2.1.35 - parseurl: 1.3.3 - transitivePeerDependencies: - - supports-color - dev: false - - /serve-static/1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} - engines: {node: '>= 0.8.0'} - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.19.0 - transitivePeerDependencies: - - supports-color - dev: false - - /set-blocking/2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: false - - /set-function-length/1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - dev: false - - /setimmediate/1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - dev: false - - /setprototypeof/1.1.0: - resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} - dev: false - - /setprototypeof/1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - dev: false - - /shallow-clone/3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - dependencies: - kind-of: 6.0.3 - dev: false - - /shallowequal/1.1.0: - resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - dev: false - - /sharp/0.30.7: - resolution: {integrity: sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==} - engines: {node: '>=12.13.0'} - requiresBuild: true - dependencies: - color: 4.2.3 - detect-libc: 2.0.3 - node-addon-api: 5.1.0 - prebuild-install: 7.1.2 - semver: 7.6.3 - simple-get: 4.0.1 - tar-fs: 2.1.1 - tunnel-agent: 0.6.0 - dev: false - - /shebang-command/2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: false - - /shebang-regex/3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: false - - /shell-quote/1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - dev: false - - /shelljs/0.8.5: - resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} - engines: {node: '>=4'} - hasBin: true - dependencies: - glob: 7.2.3 - interpret: 1.4.0 - rechoir: 0.6.2 - dev: false - - /side-channel/1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.2 - dev: false - - /signal-exit/3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: false - - /simple-concat/1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - dev: false - - /simple-get/4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - dependencies: - decompress-response: 6.0.0 - once: 1.4.0 - simple-concat: 1.0.1 - dev: false - - /simple-swizzle/0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - dependencies: - is-arrayish: 0.3.2 - dev: false - - /sirv/2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} - dependencies: - '@polka/url': 1.0.0-next.28 - mrmime: 2.0.0 - totalist: 3.0.1 - dev: false - - /sisteransi/1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: false - - /sitemap/7.1.2: - resolution: {integrity: sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==} - engines: {node: '>=12.0.0', npm: '>=5.6.0'} - hasBin: true - dependencies: - '@types/node': 17.0.45 - '@types/sax': 1.2.7 - arg: 5.0.2 - sax: 1.4.1 - dev: false - - /skin-tone/2.0.0: - resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} - engines: {node: '>=8'} - dependencies: - unicode-emoji-modifier-base: 1.0.0 - dev: false - - /slash/3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: false - - /slash/4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - dev: false - - /snake-case/3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - dependencies: - dot-case: 3.0.4 - tslib: 2.8.1 - dev: false - - /sockjs/0.3.24: - resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} - dependencies: - faye-websocket: 0.11.4 - uuid: 8.3.2 - websocket-driver: 0.7.4 - dev: false - - /sort-css-media-queries/2.1.0: - resolution: {integrity: sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==} - engines: {node: '>= 6.3.0'} - dev: false - - /sort-css-media-queries/2.2.0: - resolution: {integrity: sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==} - engines: {node: '>= 6.3.0'} - dev: false - - /source-map-js/1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - dev: false - - /source-map-support/0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: false - - /source-map/0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - dev: false - - /source-map/0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: false - - /source-map/0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - dev: false - - /space-separated-tokens/1.1.5: - resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} - dev: false - - /space-separated-tokens/2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - dev: false - - /spdy-transport/3.0.0: - resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} - dependencies: - debug: 4.3.7 - detect-node: 2.1.0 - hpack.js: 2.1.6 - obuf: 1.1.2 - readable-stream: 3.6.2 - wbuf: 1.7.3 - transitivePeerDependencies: - - supports-color - dev: false - - /spdy/4.0.2: - resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} - engines: {node: '>=6.0.0'} - dependencies: - debug: 4.3.7 - handle-thing: 2.0.1 - http-deceiver: 1.2.7 - select-hose: 2.0.0 - spdy-transport: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /sprintf-js/1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: false - - /ssr-window/4.0.2: - resolution: {integrity: sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ==} - dev: false - - /stable/0.1.8: - resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - dev: false - - /state-toggle/1.0.3: - resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==} - dev: false - - /statuses/1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - dev: false - - /statuses/2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - dev: false - - /std-env/3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - dev: false - - /string-width/4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: false - - /string-width/5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - dev: false - - /string_decoder/1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: false - - /string_decoder/1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - dev: false - - /stringify-entities/4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - dev: false - - /stringify-object/3.3.0: - resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} - engines: {node: '>=4'} - dependencies: - get-own-enumerable-property-symbols: 3.0.2 - is-obj: 1.0.1 - is-regexp: 1.0.0 - dev: false - - /strip-ansi/6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: false - - /strip-ansi/7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - dependencies: - ansi-regex: 6.1.0 - dev: false - - /strip-bom-string/1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} - dev: false - - /strip-final-newline/2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: false - - /strip-json-comments/2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - dev: false - - /strip-json-comments/3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: false - - /style-to-object/0.3.0: - resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} - dependencies: - inline-style-parser: 0.1.1 - dev: false - - /style-to-object/0.4.4: - resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} - dependencies: - inline-style-parser: 0.1.1 - dev: false - - /style-to-object/1.0.8: - resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} - dependencies: - inline-style-parser: 0.2.4 - dev: false - - /stylehacks/5.1.1_postcss@8.4.47: - resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - dependencies: - browserslist: 4.24.2 - postcss: 8.4.47 - postcss-selector-parser: 6.1.2 - dev: false - - /stylehacks/6.1.1_postcss@8.4.47: - resolution: {integrity: sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - dependencies: - browserslist: 4.24.2 - postcss: 8.4.47 - postcss-selector-parser: 6.1.2 - dev: false - - /supports-color/7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: false - - /supports-color/8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - dependencies: - has-flag: 4.0.0 - dev: false - - /supports-preserve-symlinks-flag/1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: false - - /svg-parser/2.0.4: - resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} - dev: false - - /svgo/2.8.0: - resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} - engines: {node: '>=10.13.0'} - hasBin: true - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 4.3.0 - css-tree: 1.1.3 - csso: 4.2.0 - picocolors: 1.1.1 - stable: 0.1.8 - dev: false - - /svgo/3.3.2: - resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} - engines: {node: '>=14.0.0'} - hasBin: true - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 5.1.0 - css-tree: 2.3.1 - css-what: 6.1.0 - csso: 5.0.5 - picocolors: 1.1.1 - dev: false - - /swiper/8.1.6: - resolution: {integrity: sha512-KqnqIBbIQaIiG/sK2ckcQZbqK38486WlvJe99s2KOCu8jOOQGra6cdShdI9LDyh8DALV/5nwycczFmmNWhxs2A==} - engines: {node: '>= 4.7.0'} - requiresBuild: true - dependencies: - dom7: 4.0.6 - ssr-window: 4.0.2 - dev: false - - /tapable/1.1.3: - resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} - engines: {node: '>=6'} - dev: false - - /tapable/2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - dev: false - - /tar-fs/2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.2 - tar-stream: 2.2.0 - dev: false - - /tar-stream/2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: false - - /tar/6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - dev: false - - /terser-webpack-plugin/5.3.10_webpack@5.96.0: - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.36.0 - webpack: 5.96.0 - dev: false - - /terser/5.36.0: - resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} - engines: {node: '>=10'} - hasBin: true - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.14.0 - commander: 2.20.3 - source-map-support: 0.5.21 - dev: false - - /text-table/0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: false - - /thunky/1.1.0: - resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - dev: false - - /tiny-invariant/1.3.3: - resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - dev: false - - /tiny-warning/1.0.3: - resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} - dev: false - - /to-readable-stream/1.0.0: - resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} - engines: {node: '>=6'} - dev: false - - /to-regex-range/5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: false - - /toidentifier/1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - dev: false - - /totalist/3.0.1: - resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} - engines: {node: '>=6'} - dev: false - - /tr46/0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false - - /trim-lines/3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - dev: false - - /trim-trailing-lines/1.1.4: - resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} - dev: false - - /trim/0.0.1: - resolution: {integrity: sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==} - deprecated: Use String.prototype.trim() instead - dev: false - - /trough/1.0.5: - resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} - dev: false - - /trough/2.2.0: - resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - dev: false - - /tslib/2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - dev: false - - /tunnel-agent/0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - dependencies: - safe-buffer: 5.2.1 - dev: false - - /type-fest/0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: false - - /type-fest/1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - dev: false - - /type-fest/2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} - dev: false - - /type-is/1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - dev: false - - /typedarray-to-buffer/3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - dependencies: - is-typedarray: 1.0.0 - dev: false - - /ua-parser-js/1.0.39: - resolution: {integrity: sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==} - hasBin: true - dev: false - - /underscore/1.13.7: - resolution: {integrity: sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==} - dev: false - - /undici-types/6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - dev: false - - /undici/6.20.1: - resolution: {integrity: sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA==} - engines: {node: '>=18.17'} - dev: false - - /unherit/1.1.3: - resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} - dependencies: - inherits: 2.0.4 - xtend: 4.0.2 - dev: false - - /unicode-canonical-property-names-ecmascript/2.0.1: - resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} - engines: {node: '>=4'} - dev: false - - /unicode-emoji-modifier-base/1.0.0: - resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} - engines: {node: '>=4'} - dev: false - - /unicode-match-property-ecmascript/2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.1 - unicode-property-aliases-ecmascript: 2.1.0 - dev: false - - /unicode-match-property-value-ecmascript/2.2.0: - resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} - engines: {node: '>=4'} - dev: false - - /unicode-property-aliases-ecmascript/2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - dev: false - - /unified/11.0.5: - resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - dependencies: - '@types/unist': 3.0.3 - bail: 2.0.2 - devlop: 1.1.0 - extend: 3.0.2 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 6.0.3 - dev: false - - /unified/9.2.0: - resolution: {integrity: sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==} - dependencies: - bail: 1.0.5 - extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 2.1.0 - trough: 1.0.5 - vfile: 4.2.1 - dev: false - - /unified/9.2.2: - resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} - dependencies: - bail: 1.0.5 - extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 2.1.0 - trough: 1.0.5 - vfile: 4.2.1 - dev: false - - /unique-string/2.0.0: - resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} - engines: {node: '>=8'} - dependencies: - crypto-random-string: 2.0.0 - dev: false - - /unique-string/3.0.0: - resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} - engines: {node: '>=12'} - dependencies: - crypto-random-string: 4.0.0 - dev: false - - /unist-builder/2.0.3: - resolution: {integrity: sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==} - dev: false - - /unist-util-generated/1.1.6: - resolution: {integrity: sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==} - dev: false - - /unist-util-is/4.1.0: - resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} - dev: false - - /unist-util-is/6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - dependencies: - '@types/unist': 3.0.3 - dev: false - - /unist-util-position-from-estree/2.0.0: - resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} - dependencies: - '@types/unist': 3.0.3 - dev: false - - /unist-util-position/3.1.0: - resolution: {integrity: sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==} - dev: false - - /unist-util-position/5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - dependencies: - '@types/unist': 3.0.3 - dev: false - - /unist-util-remove-position/2.0.1: - resolution: {integrity: sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==} - dependencies: - unist-util-visit: 2.0.3 - dev: false - - /unist-util-remove/2.1.0: - resolution: {integrity: sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==} - dependencies: - unist-util-is: 4.1.0 - dev: false - - /unist-util-stringify-position/2.0.3: - resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} - dependencies: - '@types/unist': 2.0.11 - dev: false - - /unist-util-stringify-position/4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - dependencies: - '@types/unist': 3.0.3 - dev: false - - /unist-util-visit-parents/3.1.1: - resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} - dependencies: - '@types/unist': 2.0.11 - unist-util-is: 4.1.0 - dev: false - - /unist-util-visit-parents/6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - dev: false - - /unist-util-visit/2.0.3: - resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} - dependencies: - '@types/unist': 2.0.11 - unist-util-is: 4.1.0 - unist-util-visit-parents: 3.1.1 - dev: false - - /unist-util-visit/5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - dev: false - - /universalify/2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - dev: false - - /unpipe/1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - dev: false - - /update-browserslist-db/1.1.1_browserslist@4.24.2: - resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.24.2 - escalade: 3.2.0 - picocolors: 1.1.1 - dev: false - - /update-notifier/5.1.0: - resolution: {integrity: sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==} - engines: {node: '>=10'} - dependencies: - boxen: 5.1.2 - chalk: 4.1.2 - configstore: 5.0.1 - has-yarn: 2.1.0 - import-lazy: 2.1.0 - is-ci: 2.0.0 - is-installed-globally: 0.4.0 - is-npm: 5.0.0 - is-yarn-global: 0.3.0 - latest-version: 5.1.0 - pupa: 2.1.1 - semver: 7.6.3 - semver-diff: 3.1.1 - xdg-basedir: 4.0.0 - dev: false - - /update-notifier/6.0.2: - resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} - engines: {node: '>=14.16'} - dependencies: - boxen: 7.1.1 - chalk: 5.3.0 - configstore: 6.0.0 - has-yarn: 3.0.0 - import-lazy: 4.0.0 - is-ci: 3.0.1 - is-installed-globally: 0.4.0 - is-npm: 6.0.0 - is-yarn-global: 0.4.1 - latest-version: 7.0.0 - pupa: 3.1.0 - semver: 7.6.3 - semver-diff: 4.0.0 - xdg-basedir: 5.1.0 - dev: false - - /uri-js/4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.3.1 - dev: false - - /url-loader/4.1.1_d2acwi3aond6w7v6aopzsoxtem: - resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - file-loader: '*' - webpack: ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - file-loader: - optional: true - dependencies: - file-loader: 6.2.0_webpack@5.96.0 - loader-utils: 2.0.4 - mime-types: 2.1.35 - schema-utils: 3.3.0 - webpack: 5.96.0 - dev: false - - /url-parse-lax/3.0.0: - resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} - engines: {node: '>=4'} - dependencies: - prepend-http: 2.0.0 - dev: false - - /use-composed-ref/1.3.0_react@17.0.2: - resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - react: 17.0.2 - dev: false - - /use-isomorphic-layout-effect/1.1.2_giebhtz6uy3zjbzzh54v5f2luu: - resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 17.0.83 - react: 17.0.2 - dev: false - - /use-latest/1.2.1_giebhtz6uy3zjbzzh54v5f2luu: - resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 17.0.83 - react: 17.0.2 - use-isomorphic-layout-effect: 1.1.2_giebhtz6uy3zjbzzh54v5f2luu - dev: false - - /util-deprecate/1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: false - - /utila/0.4.0: - resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} - dev: false - - /utility-types/3.11.0: - resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} - engines: {node: '>= 4'} - dev: false - - /utils-merge/1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - dev: false - - /uuid/8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: false - - /value-equal/1.0.1: - resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} - dev: false - - /vary/1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - dev: false - - /vfile-location/3.2.0: - resolution: {integrity: sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==} - dev: false - - /vfile-location/5.0.3: - resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} - dependencies: - '@types/unist': 3.0.3 - vfile: 6.0.3 - dev: false - - /vfile-message/2.0.4: - resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} - dependencies: - '@types/unist': 2.0.11 - unist-util-stringify-position: 2.0.3 - dev: false - - /vfile-message/4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - dependencies: - '@types/unist': 3.0.3 - unist-util-stringify-position: 4.0.0 - dev: false - - /vfile/4.2.1: - resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} - dependencies: - '@types/unist': 2.0.11 - is-buffer: 2.0.5 - unist-util-stringify-position: 2.0.3 - vfile-message: 2.0.4 - dev: false - - /vfile/6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - dependencies: - '@types/unist': 3.0.3 - vfile-message: 4.0.2 - dev: false - - /wait-on/6.0.1: - resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==} - engines: {node: '>=10.0.0'} - hasBin: true - dependencies: - axios: 0.25.0 - joi: 17.13.3 - lodash: 4.17.21 - minimist: 1.2.8 - rxjs: 7.8.1 - transitivePeerDependencies: - - debug - dev: false - - /wait-on/6.0.1_debug@4.3.7: - resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==} - engines: {node: '>=10.0.0'} - hasBin: true - dependencies: - axios: 0.25.0_debug@4.3.7 - joi: 17.13.3 - lodash: 4.17.21 - minimist: 1.2.8 - rxjs: 7.8.1 - transitivePeerDependencies: - - debug - dev: false - - /watchpack/2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} - engines: {node: '>=10.13.0'} - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - dev: false - - /wbuf/1.7.3: - resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} - dependencies: - minimalistic-assert: 1.0.1 - dev: false - - /web-namespaces/1.1.4: - resolution: {integrity: sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==} - dev: false - - /web-namespaces/2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - dev: false - - /webidl-conversions/3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false - - /webpack-bundle-analyzer/4.10.2: - resolution: {integrity: sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==} - engines: {node: '>= 10.13.0'} - hasBin: true - dependencies: - '@discoveryjs/json-ext': 0.5.7 - acorn: 8.14.0 - acorn-walk: 8.3.4 - commander: 7.2.0 - debounce: 1.2.1 - escape-string-regexp: 4.0.0 - gzip-size: 6.0.0 - html-escaper: 2.0.2 - opener: 1.5.2 - picocolors: 1.1.1 - sirv: 2.0.4 - ws: 7.5.10 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - - /webpack-dev-middleware/5.3.4_webpack@5.96.0: - resolution: {integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - dependencies: - colorette: 2.0.20 - memfs: 3.5.3 - mime-types: 2.1.35 - range-parser: 1.2.1 - schema-utils: 4.2.0 - webpack: 5.96.0 - dev: false - - /webpack-dev-server/4.15.2_debug@4.3.7+webpack@5.96.0: - resolution: {integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==} - engines: {node: '>= 12.13.0'} - hasBin: true - peerDependencies: - webpack: ^4.37.0 || ^5.0.0 - webpack-cli: '*' - peerDependenciesMeta: - webpack: - optional: true - webpack-cli: - optional: true - dependencies: - '@types/bonjour': 3.5.13 - '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.21 - '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.7 - '@types/sockjs': 0.3.36 - '@types/ws': 8.5.12 - ansi-html-community: 0.0.8 - bonjour-service: 1.2.1 - chokidar: 3.6.0 - colorette: 2.0.20 - compression: 1.7.5 - connect-history-api-fallback: 2.0.0 - default-gateway: 6.0.3 - express: 4.21.1 - graceful-fs: 4.2.11 - html-entities: 2.5.2 - http-proxy-middleware: 2.0.7_utguotmo3jjpm2bhksntt72gcu - ipaddr.js: 2.2.0 - launch-editor: 2.9.1 - open: 8.4.2 - p-retry: 4.6.2 - rimraf: 3.0.2 - schema-utils: 4.2.0 - selfsigned: 2.4.1 - serve-index: 1.9.1 - sockjs: 0.3.24 - spdy: 4.0.2 - webpack: 5.96.0 - webpack-dev-middleware: 5.3.4_webpack@5.96.0 - ws: 8.18.0 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - dev: false - - /webpack-dev-server/4.15.2_webpack@5.96.0: - resolution: {integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==} - engines: {node: '>= 12.13.0'} - hasBin: true - peerDependencies: - webpack: ^4.37.0 || ^5.0.0 - webpack-cli: '*' - peerDependenciesMeta: - webpack: - optional: true - webpack-cli: - optional: true - dependencies: - '@types/bonjour': 3.5.13 - '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.21 - '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.7 - '@types/sockjs': 0.3.36 - '@types/ws': 8.5.12 - ansi-html-community: 0.0.8 - bonjour-service: 1.2.1 - chokidar: 3.6.0 - colorette: 2.0.20 - compression: 1.7.5 - connect-history-api-fallback: 2.0.0 - default-gateway: 6.0.3 - express: 4.21.1 - graceful-fs: 4.2.11 - html-entities: 2.5.2 - http-proxy-middleware: 2.0.7_@types+express@4.17.21 - ipaddr.js: 2.2.0 - launch-editor: 2.9.1 - open: 8.4.2 - p-retry: 4.6.2 - rimraf: 3.0.2 - schema-utils: 4.2.0 - selfsigned: 2.4.1 - serve-index: 1.9.1 - sockjs: 0.3.24 - spdy: 4.0.2 - webpack: 5.96.0 - webpack-dev-middleware: 5.3.4_webpack@5.96.0 - ws: 8.18.0 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - dev: false - - /webpack-merge/5.10.0: - resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} - engines: {node: '>=10.0.0'} - dependencies: - clone-deep: 4.0.1 - flat: 5.0.2 - wildcard: 2.0.1 - dev: false - - /webpack-sources/3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - dev: false - - /webpack/5.96.0: - resolution: {integrity: sha512-gvn84AfQ4f6vUeNWmFuRp3vGERyxK4epADKTaAo60K0EQbY/YBNQbXH3Ji/ZRK5M25O/XneAOuChF4xQZjQ4xA==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - dependencies: - '@types/estree': 1.0.6 - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/wasm-edit': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.14.0 - browserslist: 4.24.2 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.1 - es-module-lexer: 1.5.4 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10_webpack@5.96.0 - watchpack: 2.4.2 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - dev: false - - /webpackbar/5.0.2_webpack@5.96.0: - resolution: {integrity: sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==} - engines: {node: '>=12'} - peerDependencies: - webpack: 3 || 4 || 5 - dependencies: - chalk: 4.1.2 - consola: 2.15.3 - pretty-time: 1.1.0 - std-env: 3.7.0 - webpack: 5.96.0 - dev: false - - /websocket-driver/0.7.4: - resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} - engines: {node: '>=0.8.0'} - dependencies: - http-parser-js: 0.5.8 - safe-buffer: 5.2.1 - websocket-extensions: 0.1.4 - dev: false - - /websocket-extensions/0.1.4: - resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} - engines: {node: '>=0.8.0'} - dev: false - - /whatwg-encoding/3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} - dependencies: - iconv-lite: 0.6.3 - dev: false - - /whatwg-mimetype/4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} - engines: {node: '>=18'} - dev: false - - /whatwg-url/5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: false - - /which/1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: false - - /which/2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: false - - /wide-align/1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - dependencies: - string-width: 4.2.3 - dev: false - - /widest-line/3.1.0: - resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} - engines: {node: '>=8'} - dependencies: - string-width: 4.2.3 - dev: false - - /widest-line/4.0.1: - resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} - engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - dev: false - - /wildcard/2.0.1: - resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - dev: false - - /wrap-ansi/7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: false - - /wrap-ansi/8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - dev: false - - /wrappy/1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: false - - /write-file-atomic/3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - dev: false - - /ws/7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false - - /ws/8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false - - /xdg-basedir/4.0.0: - resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} - engines: {node: '>=8'} - dev: false - - /xdg-basedir/5.1.0: - resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} - engines: {node: '>=12'} - dev: false - - /xml-js/1.6.11: - resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} - hasBin: true - dependencies: - sax: 1.4.1 - dev: false - - /xtend/4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: false - - /yallist/3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: false - - /yallist/4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: false - - /yaml/1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: false - - /yocto-queue/0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: false - - /yocto-queue/1.1.1: - resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} - engines: {node: '>=12.20'} - dev: false - - /zwitch/1.0.5: - resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} - dev: false - - /zwitch/2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - dev: false diff --git a/website/pnpm-workspace.yaml b/website/pnpm-workspace.yaml deleted file mode 100644 index 751aac0b0..000000000 --- a/website/pnpm-workspace.yaml +++ /dev/null @@ -1,3 +0,0 @@ - -packages: - - './' diff --git a/website/sidebars.js b/website/sidebars.js deleted file mode 100644 index 541b44b85..000000000 --- a/website/sidebars.js +++ /dev/null @@ -1,99 +0,0 @@ -const fs = require('fs'); -const fm = require('front-matter'); - -const RE_MD = /\.mdx?$/; -// const RE_FILE = /\.[^.]+$/; -const RE_FILE = /\.(md|mdx|png|jpg|jpeg|svg|json|js|jsx)$/; -const INDEX_FILE = 'index.md'; -const META_FILE = '__meta__.md'; - -const listSubpath = (path) => - fs - .readdirSync(`./docs/${path}`) - .sort((a, b) => (a === INDEX_FILE && -1) || (b === INDEX_FILE && 1) || 0); - -const getDocId = (path) => (name) => `${path}/${name.replace(RE_MD, '')}`; - -const getOrder = (item) => { - if (typeof item === 'string') { - let attributes = {}; - try { - ({ attributes } = fm(fs.readFileSync(`./docs/${item}.md`, 'utf8'))); - } catch (ex) {} - return attributes.order || 9999999; - } else { - return item._order || 9999999; - } -}; - -const isDoc = (opt) => (name) => - RE_MD.test(name) && - name !== META_FILE && - (!opt.hideIndex || name !== INDEX_FILE); - -const listDocIds = (path, opt = {}) => { - const { collapsed = true } = opt; - return listSubpath(path) - .map((name) => { - if (isDoc(opt)(name)) { - const docId = getDocId(path)(name); - ({ attributes } = fm( - fs.readFileSync(`./docs/${path}/${name}`, 'utf8'), - )); - if (attributes.type === 'link') { - const { title, type, href, order } = attributes; - return { - type, - href, - label: title, - _order: order, - }; - } - return docId; - } else if (RE_FILE.test(name)) { - return null; - } else { - let attributes = {}; - try { - ({ attributes } = fm( - fs.readFileSync(`./docs/${path}/${name}/__meta__.md`, 'utf8'), - )); - } catch (ex) {} - if (!attributes.title) { - return null; - } - const { - title, - order, - collapsed: attrCollapsed = collapsed, - } = attributes; - return { - type: 'category', - label: title, - _order: order, - collapsed: attrCollapsed, - items: listDocIds(`${path}/${name}`, opt), - }; - } - }) - .filter((item) => Boolean(item)) - .sort((a, b) => { - return getOrder(a) - getOrder(b); - }) - .map((item) => { - if (typeof item === 'object') { - delete item._order; - } - return item; - }); -}; - -module.exports = { - guide: listDocIds('guide'), - api: listDocIds('api'), - // runtime: listDocIds('runtime'), - - blog: listDocIds('blog'), - // issues: listDocIds('issues'), - // community: listDocIds('community'), -}; diff --git a/website/src/README.md b/website/src/README.md deleted file mode 100644 index 00d0c0294..000000000 --- a/website/src/README.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -home: true -heroImage: /logo.png -tagline: 一站式微前端解决方案 -actionButtons: - - text: 指南 - link: /guide - - text: 快速开始 - link: /guide - extraClass: github grey - # - text: GitHub - # link: https://github.com/bytedance/garfish - # extraClass: github grey - # icon: fa fa-github - # target: _blank -features: - - title: 易用 - details: 任意前端框架均可使用,使用简单灵活,包括完备的路由系统 - - title: 完备 - details: 包含构建微前端系统时所需要的基本能力:运行时框架、cli、部署平台 - - title: 生产可用 - details: 已在字节内经受过足够大量的线上系统的考验及打磨,健壮性值得信赖 -footer: | - Copyright © 2021 Bytedance. ---- diff --git a/website/src/components/Highlight/index.js b/website/src/components/Highlight/index.js deleted file mode 100644 index d3e4f8dd3..000000000 --- a/website/src/components/Highlight/index.js +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react'; - -export default function Highlight({ children, color }) { - return ( - - {children} - - ); -} diff --git a/website/src/components/TeamProfileCards/index.jsx b/website/src/components/TeamProfileCards/index.jsx deleted file mode 100644 index d077671ec..000000000 --- a/website/src/components/TeamProfileCards/index.jsx +++ /dev/null @@ -1,76 +0,0 @@ -import React from 'react'; -import Translate from '@docusaurus/Translate'; -import Link from '@docusaurus/Link'; -import { members } from '@site/src/data/team'; - -function WebsiteLink({to, children}) { - return ( - - {children || ( - website - )} - - ); -} - -function TeamProfileCard({ className, name, children, githubUrl, username, avatar }) { - return ( -
-
-
-
- {username} -
-

{name}

-
-
-
-
{children}
- {/*
-
- {githubUrl && ( - - GitHub - - )} -
-
*/} -
-
- ); -} - -function TeamProfileCardCol(props) { - return ( - - ); -} - -export function ActiveTeamRow() { - members.sort((pre, next)=>{ - return pre.username.charCodeAt(0) - next.username.charCodeAt(0); - }); - - return ( -
- {members.map(member => { - const { name, username, description = '', ...rest } = member; - return ( - - - {description} - - - ); - })} -
- ); -} diff --git a/website/src/components/config/_basename.mdx b/website/src/components/config/_basename.mdx deleted file mode 100644 index 8bd2a91bb..000000000 --- a/website/src/components/config/_basename.mdx +++ /dev/null @@ -1,8 +0,0 @@ -import Highlight from '@site/src/components/Highlight'; - -- Type: string -- 子应用的基础路径,可选,默认值为全局 [basename](/api/run#basename); -- 通过路由驱动自动加载子应用时实际传递给子应用的 basename 为 `basename + activeWhen` 计算的值 -- 若手动载入渲染应用时 `basename` 为实际传入的值 -- 通过 [provider 函数](/guide/start#2导出-provider-函数) 的 `basename` 参数透传给子应用,子应用需要将 basename 设置为相应子应用的基础路由,这是必须的; -- [为什么子应用需要设置 basename ?](/issues#子应用拿到-basename-的作用) diff --git a/website/src/components/config/_domGetter.mdx b/website/src/components/config/_domGetter.mdx deleted file mode 100644 index 71391caed..000000000 --- a/website/src/components/config/_domGetter.mdx +++ /dev/null @@ -1,16 +0,0 @@ -import Highlight from '@site/src/components/Highlight'; - -- Type: interfaces.DomGetter - -```ts -export type DomGetter = - | string - | (() => Element | null) - | (() => Promise); -``` - -- 子应用的默认挂载点,可选,没有默认值,若省略需要在子应用 AppInfo 中单独指定。二者同时存在时,子应用指定优先级更高; -- 当提供 `string` 类型时需要其值是 `selector`, Garfish 内部会使用 `document.querySelector(domGetter)` 去选中子应用的挂载点 -- 当提供 `string` 类型的 `domGetter` 时,子应用在触发渲染后并不会若当前文档流上并不存在挂载点,`Garfish` 框架内部在 `3s` 内轮讯是否有挂载点 -- 当提供函数时,将在子应用挂载过程中执行此函数,并期望返回一个 dom 元素; -- 若 `domGetter` 在子应用渲染时无法查询到挂载点,则会丢出 `domGetter` 无效的异常 diff --git a/website/src/components/config/_insulationVariable.mdx b/website/src/components/config/_insulationVariable.mdx deleted file mode 100644 index 4ee610879..000000000 --- a/website/src/components/config/_insulationVariable.mdx +++ /dev/null @@ -1,10 +0,0 @@ -import Highlight from '@site/src/components/Highlight'; - -- Type: string[] -- 在开启沙箱的情况下,沙箱的子应用的环境变量将会从主应用中继承,举例: - - 在加载子应用前,主应用有一段:`window.xxxx = 123` - - 子应用中可以获取获取主应用的环境变量 `console.log(window.xxxx)`,输出 123 - - 因为目前 `Garfish` 的主子应用环境是隔离的,但是子应用的环境继承至主应用时可能会造成一些影响不符合预期 -- 若希望在子应用某些环境变量不继承至主应用,可以使用 `insulationVariable` 配置,例如: - - `insulationVariable: ['xxxx']` - - 'xxxx' 在子应用中将不会继承至主应用,`console.log(window.xxxx)` 输出 `undefined` diff --git a/website/src/components/config/_protectVariable.mdx b/website/src/components/config/_protectVariable.mdx deleted file mode 100644 index 0b36c2fe5..000000000 --- a/website/src/components/config/_protectVariable.mdx +++ /dev/null @@ -1,6 +0,0 @@ -import Highlight from '@site/src/components/Highlight'; - -- Type: string[] -- 在开启沙箱的情况下,提供使得 window 上的某些变量处于受保护状态的能力:这些值的读写不会受到沙箱隔离机制的影响,所有应用均可读取到,可选; -- 若希望在应用间共享 window 上的某些值,可将该值放置在数组中; -- 该属性与 [setGlobalValue](/api/setGlobalObject) 功能相同,推荐使用 `protectVariable` 属性,通过 `protectVariable` 可以明确的感知哪些值可能在应用间相互影响; diff --git a/website/src/components/config/_sandbox.mdx b/website/src/components/config/_sandbox.mdx deleted file mode 100644 index 2eda8dafb..000000000 --- a/website/src/components/config/_sandbox.mdx +++ /dev/null @@ -1,74 +0,0 @@ -import Highlight from '@site/src/components/Highlight'; - -- Type: SandboxConfig | false 可选,默认值为 [全局 sandbox 配置](/api/run#sandbox),当设置为 false 时关闭沙箱; - -- SandboxConfig: - -```ts -interface SandboxConfig { - // 是否开启快照沙箱,默认值为 false:关闭快照沙箱,开启 vm 沙箱 - snapshot?: boolean; - // 是否自动以子应用入口的域名前缀对子应用 fetch 请求的进行补齐,默认值为 false - fixBaseUrl?: boolean; - // 是否自动以子应用入口的域名前缀对相对路径资源进行前缀修正,默认值为 true,v1.15.0 版本提供 - fixStaticResourceBaseUrl?: boolean; - // 是否开启开启严格隔离,默认值为 false。开启严格隔离后,子应用的渲染节点将会开启 Shadow DOM close 模式,并且子应用的查询和添加行为仅会在 DOM 作用域内进行 - strictIsolation?: boolean; - // modules 仅在 vm 沙箱时有效,用于覆盖子应用执行上下文的环境变量,使用自定义的执行上下文,默认值为[] - modules?: Array | Record; - // disableElementtiming 1.14.4 版本提供,默认值为 false,将会给子应用元素注入 elementtiming 属性,可以通过此属性获取子应用元素的加载时间 - disableElementtiming?: boolean; - // fixOwnerDocument 1.17.2 版本提供 ,默认值 false,目前可能会存在 ownerDocument 逃逸的情况,设置为 true 之后将会避免 ownerDocument 逃逸 - fixOwnerDocument?: boolean; - // disableLinkTransformToStyle 1.18.0 版本提供 ,默认值 false,禁用掉 link 自动 transform 成 style 的行为 - disableLinkTransformToStyle?: boolean; - // excludeAssetFilter 1.18.0 版本提供,默认值为 undefined,用于过滤不需要再子应用沙箱中执行的资源例如 jsonp,url 参数为对应 script 的地址,返回 true 则会过滤掉该资源 - excludeAssetFilter?: (url: string) => boolean; -} - -type Module = (sandbox: Sandbox) => OverridesData | void; - -export interface OverridesData { - recover?: (context: Sandbox['global']) => void; - prepare?: () => void; - created?: (context: Sandbox['global']) => void; - override?: Record; -} -``` - -- 示例 - -```ts -Garfish.run({ - sandbox: { - snapshot: false, - strictIsolation: false, - // 覆盖子应用 localStorage,使用当前主应用 localStorage - modules: [ - () => ({ - override: { - localStorage: window.localStorage, - }, - }), - ], - }, -}); -``` - -:::caution -请注意: -如果你在沙箱内自定义的行为将会产生副作用,请确保在 recover 函数中清除你的副作用,garfish 将在应用卸载过程中执行 recover 函数销毁沙箱副作用,否则可能会造成内存泄漏。 -::: - -- 在什么情况下我应该关闭 sandbox ? - - > Garfish 目前已默认支持沙箱 esModule 能力,若需要在 vm 沙箱支持 esModule 应用,请使用 `@garfish/es-module` garfish 官方插件支持此能力,但这会带来严重的性能问题,[原因](/issues/#esmodule)。如果你的项目不是很需要在 vm 沙箱下运行,此时可以关闭沙箱; - -- [Garfish 沙箱机制](/guide/sandbox) - -:::info -若开启快照沙箱,请注意: - -1. 快照沙箱无法隔离主、子应用 -2. 快照沙箱无法支持多实例(同时加载多个子应用) - ::: diff --git a/website/src/components/config/_viteConfig.mdx b/website/src/components/config/_viteConfig.mdx deleted file mode 100644 index 8d1de57a1..000000000 --- a/website/src/components/config/_viteConfig.mdx +++ /dev/null @@ -1,19 +0,0 @@ - -```js -// vite.config.js -export default defineConfig({ - base: 'http://localhost:3000/', - server: { - port: 3000, - cors: true, - origin: 'http://localhost:3000', - }, -}); -``` - -:::caution 【重要】注意: -1. base 提供资源绝对路径,避免相对路径带来的资源访问问题; -2. origin 提供资源绝对路径,避免相对路径带来的资源访问问题; -3. 需要将子应用沙箱关闭 Garfish.run({ apps: [{ ..., sandbox: false }] }) -4. 子应用的副作用将会发生逃逸,在子应用卸载后需要将对应全局的副作用清除 -::: diff --git a/website/src/components/config/_webpackConfig.mdx b/website/src/components/config/_webpackConfig.mdx deleted file mode 100644 index 668cddb61..000000000 --- a/website/src/components/config/_webpackConfig.mdx +++ /dev/null @@ -1,45 +0,0 @@ -```js -// webpack.config.js -const webpack = require('webpack'); -const isDevelopment = process.env.NODE_ENV !== 'production'; - -module.exports = { - output: { - // 开发环境设置 true 将会导致热更新失效 - clean: isDevelopment ? false : true, - filename: '[name].[contenthash].js', - chunkFilename: '[name].[contenthash].js', - // 需要配置成 umd 规范 - libraryTarget: 'umd', - // 修改不规范的代码格式,避免逃逸沙箱 - globalObject: 'window', - // webpack5 使用 chunkLoadingGlobal 代替,或不填保证 package.json name 唯一即可 - jsonpFunction: 'garfish-demo-react', - // 保证子应用的资源路径变为绝对路径 - publicPath: 'http://localhost:8080', - }, - plugin: [ - // 保证错误堆栈信息及 sourcemap 行列信息正确 - new webpack.BannerPlugin({ - banner: 'Micro front-end', - }), - ], - devServer: { - // 保证在开发模式下应用端口不一样 - port: '8000', - headers: { - // 保证子应用的资源支持跨域,在上线后需要保证子应用的资源在主应用的环境中加载不会存在跨域问题(**也需要限制范围注意安全问题**) - 'Access-Control-Allow-Origin': '*', - }, - }, -}; -``` - -:::caution 【重要】注意: - -1. libraryTarget 需要配置成 umd 规范; -2. globalObject 需要设置为 'window',以避免由于不规范的代码格式导致的逃逸沙箱; -3. 如果你的 webpack 为 v4 版本,需要设置 jsonpFunction 并保证该值唯一(否则可能出现 webpack chunk 互相影响的可能)。若为 webpack5 将会直接使用 package.json name 作为唯一值,请确保应用间的 name 各不相同; -4. publicPath 设置为子应用资源的绝对地址,避免由于子应用的相对资源导致资源变为了主应用上的相对资源。这是因为主、子应用处于同一个文档流中,相对路径是相对于主应用而言的 -5. 'Access-Control-Allow-Origin': '\*' 允许开发环境跨域,保证子应用的资源支持跨域。另外也需要保证在上线后子应用的资源在主应用的环境中加载不会存在跨域问题(**也需要限制范围注意安全问题**); - ::: diff --git a/website/src/components/lifeCycle/_afterEval.mdx b/website/src/components/lifeCycle/_afterEval.mdx deleted file mode 100644 index 85c63f9c3..000000000 --- a/website/src/components/lifeCycle/_afterEval.mdx +++ /dev/null @@ -1,21 +0,0 @@ -import Highlight from '@site/src/components/Highlight'; - -- Type: (appInfo: AppInfo, code: string, env: Record, url: string, options) => void - - 该 `hook` 的参数分别为:`appInfo` 信息、`code` 执行的代码、`env` 要注入的环境变量,`url` 应用访问地址、`options` 参数选项例如 `async` 是否异步执行、`noEntry` 是否是 `noEntry` 模式; -- Kind: `sync`, `sequential` -- Previous Hook: `beforeLoad`、`afterLoad` -- Trigger: - - - 在实际执行代码后。`afterMount` 触发前触发; - - 子应用 html 内的 script 和动态创建的脚本执行时都会触发该 hook - -- 示例 - -```ts -Garfish.run({ - ..., - afterEval(appInfo) { - console.log('子应用代码执行完成', appInfo.name); - } -}) -``` diff --git a/website/src/components/lifeCycle/_afterLoad.mdx b/website/src/components/lifeCycle/_afterLoad.mdx deleted file mode 100644 index d480ef61d..000000000 --- a/website/src/components/lifeCycle/_afterLoad.mdx +++ /dev/null @@ -1,19 +0,0 @@ -import Highlight from '@site/src/components/Highlight'; - -- Type: async (appInfo: AppInfo, appInstance: interfaces.App) => void -- 该 `hook` 的参数分别为:应用信息、应用实例; -- Kind: `async`, `sequential` -- Trigger: - - - 在调用 `Garfish.load` 后并且子应用加载完成时触发该 `hook`; - -- 示例 - -```ts -Garfish.run({ - ..., - afterLoad(appInfo) { - console.log('子应用加载完成', appInfo.name); - } -}) -``` diff --git a/website/src/components/lifeCycle/_afterMount.mdx b/website/src/components/lifeCycle/_afterMount.mdx deleted file mode 100644 index 958c6b763..000000000 --- a/website/src/components/lifeCycle/_afterMount.mdx +++ /dev/null @@ -1,22 +0,0 @@ -import Highlight from '@site/src/components/Highlight'; - -- Type: (appInfo: AppInfo, appInstance: interfaces.App, cacheMode: boolean) => void - - 该 `hook` 的参数分别为:`appInfo` 信息、`appInstance` 应用实例、是否为 `缓存模式` 渲染和销毁 -- Kind: `sync`, `sequential` -- Previous Hook: `beforeLoad`、`afterLoad`、`beforeMount` -- Trigger: - - - 此时子应用 DOM 树已渲染完成,garfish 实例 `activeApps` 中已添加当前子应用 app 实例; - - 在挂载过程中,会调用应用生命周期中的 [`render` 函数](/guide/start#2导出-provider-函数),用户可在挂载前定义相关操作; - - 若挂载过程中出现异常,会触发 [errorMountApp](/api/run#errormountapp),同时会清除已创建的 app 渲染容器 appContainer - -- 示例 - -```ts -Garfish.run({ - ..., - afterMount(appInfo) { - console.log('子应用渲染结束', appInfo.name); - } -}) -``` diff --git a/website/src/components/lifeCycle/_afterUnmount.mdx b/website/src/components/lifeCycle/_afterUnmount.mdx deleted file mode 100644 index 3ec33ab94..000000000 --- a/website/src/components/lifeCycle/_afterUnmount.mdx +++ /dev/null @@ -1,8 +0,0 @@ -import Highlight from '@site/src/components/Highlight'; - -- Type: ( appInfo: AppInfo, appInstance: interfaces.App) => void -- Kind: `sync`, `sequential` -- Trigger: - - 此时,应用在渲和运行过程中产生的副作用已清除,DOM 已卸载,沙箱副作用已清除,garfish 实例 `activeApps` 当前 app 已移除; - - 在应用销毁过程中会调用应用生命周期中的 [`destory` 函数](/guide/start#2导出-provider-函数),用户可在销毁前定义相关操作; - - 若应用卸载过程中出现异常,会触发 [errorUnmountApp](/api/run#errorUnmountApp) diff --git a/website/src/components/lifeCycle/_beforeEval.mdx b/website/src/components/lifeCycle/_beforeEval.mdx deleted file mode 100644 index 773bacb8b..000000000 --- a/website/src/components/lifeCycle/_beforeEval.mdx +++ /dev/null @@ -1,23 +0,0 @@ -import Highlight from '@site/src/components/Highlight'; - -- Type: (appInfo: AppInfo, code: string, env: Record, url: string, options) => void - - 该 `hook` 的参数分别为:`appInfo` 信息、`code` 执行的代码、`env` 要注入的环境变量,`url` 代码的资源地址、`options` 参数选项(例如 `async` 是否异步执行、`noEntry` 是否是 `noEntry` 模式); -- Kind: `sync`, `sequential` -- Previous Hook: `beforeMount` -- Trigger: - - - 在子应用挂载过程中、实际执行代码前触发该 hook; - - 应用 html 内的 script 和动态创建的脚本执行时都会触发该 hook - - 此时 DOM 树已添加至文档流中,子应用代码准备执行; - - 若代码执行过程中抛出异常,则将触发 [errorMountApp](/api/run#errormountapp),否则触发 [beforeEval](/api/run#afterEval) - -- 示例 - -```ts -Garfish.run({ - ..., - beforeEval(appInfo) { - console.log('子应用代码开始执行', appInfo.name); - } -}) -``` diff --git a/website/src/components/lifeCycle/_beforeLoad.mdx b/website/src/components/lifeCycle/_beforeLoad.mdx deleted file mode 100644 index 26685757c..000000000 --- a/website/src/components/lifeCycle/_beforeLoad.mdx +++ /dev/null @@ -1,20 +0,0 @@ -import Highlight from '@site/src/components/Highlight'; - -- Type: async (appInfo: AppInfo, appInstance: App) => false | undefined - - 该 `hook` 的参数分别为:应用信息、应用实例; - - 当返回 `false` 时将中断子应用的加载及后续流程; -- Kind: `async`, `sequential` -- Trigger: - - - 在调用 `Garfish.load` 时触发该 `hook` - - 子应用加载前触发,此时还未开始加载子应用资源; - -- 示例 - -```ts -Garfish.run({ - ..., - beforeLoad(appInfo) { - console.log('子应用开始加载', appInfo.name); - } -``` diff --git a/website/src/components/lifeCycle/_beforeMount.mdx b/website/src/components/lifeCycle/_beforeMount.mdx deleted file mode 100644 index 099e1a710..000000000 --- a/website/src/components/lifeCycle/_beforeMount.mdx +++ /dev/null @@ -1,23 +0,0 @@ -import Highlight from '@site/src/components/Highlight'; - -- Type: (appInfo: AppInfo, appInstance: interfaces.App, cacheMode: boolean) => void - - 该 `hook` 的参数分别为:`appInfo` 信息、`appInstance` 应用实例、是否为 `缓存模式` 渲染和销毁 -- Kind: `sync`, `sequential` -- Previous Hook: `beforeEval`、`afterEval` -- Trigger: - - - 此时子应用资源准备完成,运行时环境初始化完成,准备开始渲染子应用 DOM 树; - - 在调用 `app.mount` 或 `app.show` 触发该 `hook`,用户除了手动调用这两个方法外,`Garfish Router` 托管模式还会自动触发 - - 在使用 `app.mount` 渲染应用是 `cacheMode` 为 `false`; - - 在使用 `app.show` 渲染应用是 `cacheMode` 为 `true`; - -- 示例 - -```ts -Garfish.run({ - ..., - beforeMount(appInfo) { - console.log('子应用开始渲染', appInfo.name); - } -}) -``` diff --git a/website/src/components/lifeCycle/_beforeUnmount.mdx b/website/src/components/lifeCycle/_beforeUnmount.mdx deleted file mode 100644 index 66c32385d..000000000 --- a/website/src/components/lifeCycle/_beforeUnmount.mdx +++ /dev/null @@ -1,11 +0,0 @@ -import Highlight from '@site/src/components/Highlight'; - -- Type: ( appInfo: AppInfo, appInstance: interfaces.App) => void -- Kind: `sync`, `sequential` -- Previous Hook: `beforeLoad`、`afterLoad`、`beforeMount`、`afterMount` -- Trigger: - - 在调用 `app.unmount` 或 `app.hide` 触发该 `hook`,用户除了手动调用这两个方法外,`Garfish Router` 托管模式还会自动触发 - - 在使用 `app.unmount` 渲染应用是 `cacheMode` 为 `false`; - - 在使用 `app.hide` 渲染应用是 `cacheMode` 为 `true`; - - 此时子应用 DOM 元素还未卸载,副作用尚未清除; - - 此时子应用 DOM 树已渲染完成,garfish 实例 `activeApps` 中已添加当前子应用 app 实例; diff --git a/website/src/components/lifeCycle/_errorLoadApp.mdx b/website/src/components/lifeCycle/_errorLoadApp.mdx deleted file mode 100644 index a3028b063..000000000 --- a/website/src/components/lifeCycle/_errorLoadApp.mdx +++ /dev/null @@ -1,21 +0,0 @@ -import Highlight from '@site/src/components/Highlight'; - -- Type: (error: Error, appInfo: AppInfo, appInstance: interfaces.App) => void - - 该 `hook` 的参数分别为:`error` 实例、 `appInfo` 信息、`appInstance` 应用实例 - - 一旦设置该 hook,子应用加载错误不会 throw 到文档流中,全局错误监听将无法捕获到; -- Kind: `sync`, `sequential` -- Trigger: - - - 在调用 `Garfish.load` 过程中,并且加载失败时触发该 `hook` - -- 示例 - -```ts -Garfish.run({ - ..., - errorLoadApp(error, appInfo) { - console.log('子应用加载异常', appInfo.name); - console.error(error); - } -}) -``` diff --git a/website/src/components/lifeCycle/_errorMountApp.mdx b/website/src/components/lifeCycle/_errorMountApp.mdx deleted file mode 100644 index 33e6b660a..000000000 --- a/website/src/components/lifeCycle/_errorMountApp.mdx +++ /dev/null @@ -1,21 +0,0 @@ -import Highlight from '@site/src/components/Highlight'; - -- Type: (error: Error, appInfo: AppInfo, appInstance: interfaces.App) => void - - 一旦设置该 hook,子应用加载错误不会 throw 到文档流中,全局错误监听将无法捕获到; -- Kind: `sync`, `sequential` -- Previous Hook: `beforeLoad`、`afterLoad`、`beforeMount`、`afterMount` -- Trigger: - - - 在渲染过程中出现异常会触发该 `hook`,子应用同步执行的代码出现异常会触发该 `hook`,异步代码无法触发 - -- 示例 - -```ts -Garfish.run({ - ..., - errorMountApp(error, appInfo) { - console.log('子应用渲染异常', appInfo.name); - console.error(error); - } -}) -``` diff --git a/website/src/components/lifeCycle/_errorUnmountApp.mdx b/website/src/components/lifeCycle/_errorUnmountApp.mdx deleted file mode 100644 index ab6a54401..000000000 --- a/website/src/components/lifeCycle/_errorUnmountApp.mdx +++ /dev/null @@ -1,20 +0,0 @@ -import Highlight from '@site/src/components/Highlight'; - -- Type: (error: Error, appInfo: AppInfo, appInstance: interfaces.App)=> void - - 一旦设置该 hook,子应用销毁错误不会向上 throw 到文档流中,全局错误监听将无法捕获到; -- Kind: `sync`, `sequential` -- Trigger: - - - 在 `app.unmount` 或 `app.hide` 销毁过程中出现异常则会触发该 `hook`,用户除了手动调用这两个方法外,`Garfish Router` 托管模式还会自动触发 - -- 示例 - -```ts -Garfish.run({ - ..., - errorUnmountApp(error, appInfo) { - console.log('子应用销毁异常', appInfo.name); - console.error(error); - } -}) -``` diff --git a/website/src/components/lifeCycle/_onNotMatchRouter.mdx b/website/src/components/lifeCycle/_onNotMatchRouter.mdx deleted file mode 100644 index 3689e7f3a..000000000 --- a/website/src/components/lifeCycle/_onNotMatchRouter.mdx +++ /dev/null @@ -1,19 +0,0 @@ -import Highlight from '@site/src/components/Highlight'; - -- Type: (path: string)=> void - - 该 `hook` 的参数分别为:应用信息、应用实例; -- Kind: `sync`, `sequential` -- Trigger: - - - 路由发生变化当前未激活子应用且未匹配到任何子应用时触发 - -- 示例 - -```ts -Garfish.run({ - ..., - onNotMatchRouter(path) { - console.log('未匹配到子应用', path); - } -}) -``` diff --git a/website/src/components/sumarryImg/index.jsx b/website/src/components/sumarryImg/index.jsx deleted file mode 100644 index 543eb3df0..000000000 --- a/website/src/components/sumarryImg/index.jsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react'; - - -export function summaryImg (url) { - return ( -
- - - -
- ) -} diff --git a/website/src/css/custom.css b/website/src/css/custom.css deleted file mode 100644 index c4852bf17..000000000 --- a/website/src/css/custom.css +++ /dev/null @@ -1,160 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @format - */ - -/** - * Any CSS included here will be global. The classic template - * bundles Infima by default. Infima is a CSS framework designed to - * work well for content-centric websites. - */ - -/* You can override the default Infima variables here. */ -:root { - --ifm-color-primary: #25c2a0; - --ifm-color-primary-dark: rgb(33, 175, 144); - --ifm-color-primary-darker: rgb(31, 165, 136); - --ifm-color-primary-darkest: rgb(26, 136, 112); - --ifm-color-primary-light: rgb(70, 203, 174); - --ifm-color-primary-lighter: rgb(102, 212, 189); - --ifm-color-primary-lightest: rgb(146, 224, 208); - --ifm-code-font-size: 95%; - --ifm-container-width-xl: 1140px; -} - -.navbar__search { - position: relative; - margin-left: 20px; -} - -code { - border: none; -} - -.args-list { - list-style: none; - padding-left: 0.75rem; -} - -.args-list>dt { - color: var(--ifm-color-primary); -} - -.args-list>dd { - margin: 0 0 .75rem .75rem -} - -.header-gitlab-link:before { - content: ''; - width: 24px; - height: 24px; - display: flex; - background: url("https://sf1-cdn-tos.douyinstatic.com/obj/eden-cn/nulogpyuloj/gitlab-282507.png") - no-repeat; - background-size: 100%; -} - -.header-github-link:before { - content: ''; - width: 32px; - height: 32px; - display: flex; - background: url("https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/project/github.png") - no-repeat; - background-size: 100%; -} - -.header-feishu-link:before { - content: ''; - width: 32px; - height: 32px; - display: flex; - background: url("https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/project/feishu.png") - no-repeat; - background-size: 100%; -} - -.docusaurus-highlight-code-line { - background-color: rgb(72, 77, 91); - display: block; - margin: 0 calc(-1 * var(--ifm-pre-padding)); - padding: 0 var(--ifm-pre-padding); -} - -.swiper-pagination-bullet .swiper-pagination-bullet-active { - width: 12px!important; - height: 12px!important; - background-color: rgba(62, 46, 46, 0.6)!important; - opacity: 1!important; -} - -.swiper-pagination-bullet { - width: 12px!important; - height: 12px!important; - background-color: rgba(62, 46, 46, 0.6)!important; -} - -.swiper-container-horizontal > .swiper-pagination-bullets { - bottom: 0!important; -} - -html[data-theme='dark'] .swiper-pagination-bullet-active { - background-color: rgba(245, 243, 243, 0.23)!important; -} - -html[data-theme='dark'] .swiper-pagination-bullet { - background-color: rgba(245, 243, 243, 0.23)!important; -} - -.swiper-container { - padding-bottom: 20px!important; -} - -.example-link details{ - margin: 1.5rem 0px; - padding: 0.5rem 1rem; - background-color: var(--ifm-background-color); - border: 1px solid var(--ifm-toc-border-color); - border-radius: 3px; -} - -.example-link ul { - list-style-type: none; - padding-left: 1.5rem; - margin: 1.25rem 0px; -} - -.example-link li{ - margin-bottom: 0.625rem; -} - -.example-link ul li::before { - content: "-"; - color: rgb(153, 153, 153); - position: absolute; - margin-left: -1rem; -} - -.polyfill-browser-table tr{ - border-top: 0px; -} - -.polyfill-browser-table tr, -.polyfill-browser-table td{ - display: flex; -} - -.polyfill-browser-table td{ - flex: 1; - flex-wrap: wrap; - justify-content: center; -} - -.polyfill-browser-table div{ - width: 100%; - text-align: center; -} diff --git a/website/src/pages/index.jsx b/website/src/pages/index.jsx deleted file mode 100644 index 2fde30322..000000000 --- a/website/src/pages/index.jsx +++ /dev/null @@ -1,279 +0,0 @@ -/* eslint max-len:0 */ -import React from 'react'; -import clsx from 'clsx'; -import Layout from '@theme/Layout'; -import Link from '@docusaurus/Link'; -import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; -import useBaseUrl from '@docusaurus/useBaseUrl'; -import styles from './index.module.css'; -import SwiperCore, { Pagination, Autoplay } from 'swiper'; -import { Swiper, SwiperSlide } from 'swiper/react'; -import 'swiper/css'; - -const notice = ''; - -const customers = [ - 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/open-garfish/douyin.svg', - 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/open-garfish/feishu.svg', - 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/open-garfish/toutiao.svg', - 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/open-garfish/fanqie.svg', - 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/open-garfish/dongchedi.svg', - 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/open-garfish/xigua.svg', - 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/open-garfish/helo.svg', - 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/open-garfish/oceanengine.svg', - 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/open-garfish/xingfuli.svg', - 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/open-garfish/yuntu.svg', - 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/open-garfish/beiqing.svg', -]; - -const stats = [ - { name: '服务团队', count: '120+' }, - { name: '服务用户', count: '800+' }, - { name: '服务项目', count: '360+' }, -]; - -const sliderImages = [ - 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/garfish-run.png', - 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/garfish-export.png', -]; - -const features = [ - { - title: '跨框架', - imageUrl: 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/feat-framework.png', - description: '支持 vue、react、angular 多种框架混合使用', - }, - { - title: 'API 最大简洁化', - imageUrl: 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/feat-api.png', - description: '在实际应用中使用方式极大简洁化', - }, - { - title: '路由驱动', - imageUrl: 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/router-drive.png', - description: '支持配置路由激活信息可完成自动化挂载和销毁', - }, -]; - - -const introductions = [ - // { - // title: '简洁至上', - // imageUrl: 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/open-garfish/bottom/simple.svg', - // imagePos: 'left', - // description: 'Garfish 最大的特殊是将微前端在运行时所需要的能力进行了整合,用户无需过分关心底层的实现通过统一的封装,配置应用相关信息即可快速完成接入', - // }, - // // { - // // title: '框架生态', - // // imageUrl: '', - // // imagePos: 'right', - // // description: 'Garfish 目前已经与 xxx 进行了生态扩展和功能整合,并正在和 xx 落地微前端监控上的各项指标' - // // }, - // { - // title: '面向未来', - // imageUrl: 'https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/open-garfish/bottom/for_feature.svg', - // imagePos: 'left', - // description: 'Garfish 目前正在探索对 ES Modules、 Webpack@5 等功能的落地', - // }, -]; - -SwiperCore.use([Pagination, Autoplay]); - -function UseDetail() { - return ( -
- { - stats.map(({ name, count }, index) => { - if (index > 3) { - return ''; - } else { - return ( - -

{count}

-

{name}

-
- ); - } - }) - } -
- ); -} - -function UserDetail() { - return ( -
-

他们在用

-
- {customers.map((logo, index) => { - return ( - - - - ); - })} -
-
- ); -} - -function SwiperWraper() { - return ( - - {sliderImages.map((sliderImage, index) => { - return ( - - - - ); - })} - - ); -} - -function Introduction({ imageUrl, imagePos, title, description, index }) { - const imgUrl = useBaseUrl(imageUrl); - - function introductionItem(num) { - return ( -
- {num % 2 -? ( -
-

{title}

-

{description}

-
- ) -: () - } -
- ); - } - - return ( -
-
-
-
- {introductionItem(index)} -
-
- {/* eslint-disable-next-line */} - {introductionItem(index + 1)} -
-
-
-
- ); -} - -function Home() { - const context = useDocusaurusContext(); - const { siteConfig = {} } = context; - - return ( - -
- {notice && - NEW -

{notice}

- 阅读更多 → - } -
-
-
-

{siteConfig.customFields.slogan}

-

{siteConfig.customFields.summary}

-
- - 入门教程 - - - 快速开始 - -
-
-
- -
-
-
-
-
-
- -
- {/*
- -
*/} -
-
-
-
-
-
-

- 功能特性 - - - - -

- - {/*

更多支持的功能支持:约定式路由、代码自动分割、国际化、一键预览服务等

*/} -
- {features && features.length > 0 && ( - <> - {features.map(({ title, link, imageUrl, description }, index) => ( -
- -
-

{title}

-

{description}

- -
- ))} - - )} -
-
-
- {introductions && introductions.length > 0 && ( - <> - {introductions.map(({ title, imageUrl, imagePos, description }, index) => ( - - ))} - - )} -
-
- ); -} - -export default Home; diff --git a/website/src/pages/index.module.css b/website/src/pages/index.module.css deleted file mode 100644 index 68ecc5830..000000000 --- a/website/src/pages/index.module.css +++ /dev/null @@ -1,326 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @format - */ - -/** - * CSS files with the .module.css suffix will be treated as CSS modules - * and scoped locally. - */ - -.homeTop { - padding: 4rem 0; - position: relative; - overflow: hidden; - height: calc(100vh - var(--ifm-navbar-height)); - display: flex; - align-items: center; - flex-direction: column; - justify-content: center; - position: relative; - padding-bottom: 70px; - background-color: #fff; - position: relative; -} - -.notice { - position: absolute; - top: 66px; - display: flex; - justify-content: center; - align-items: center; - justify-content: start; - background: #eee; - border: 2px solid #eaeaea; - border-radius: 8px; - padding: 10px; - min-width: 450px; -} - -.notice:hover { - text-decoration: none; -} - -.noticeTag { - background: linear-gradient(90deg,#ed6292 25%,#ed5760 87.5%); - border-radius: 5px; - color: #fff; - padding: 1px 8px; - font-weight: bold; - font-size: 12px; -} - -.noticeDesc { - margin: 0 10px; - font-size: 12px; -} - -.noticeRead { - font-size: 12px; -} - -.slogan { - font-size: 40px; - margin-bottom: 30px; - padding-top: 30px; -} - -.homeContent { - position: relative; - padding: 130px 0; -} - -.homeContentBottom { - position: absolute; - bottom: 4rem; -} - -.homeContentBottomContainer { - align-items: flex-end; - align-items: baseline; - color: #9C9191; - /* padding-left: 3rem; */ -} -.flexAlignCenter { - align-items: center; -} - -.bannerImg { - width: 100%; -} - -.homeLeft { - padding-left: 3rem; -} - -.homeLeftSubtitle { - margin-bottom: 60px; -} - - -.heroLogo { - max-width: 170px; - max-height: 170px; -} - -@media screen and (max-width: 966px) { - .homeTop { - padding: 8rem 0; - height: auto; - } - - .homeContent { - padding-bottom: 0; - } - - .noDisplay { - display: none; - } - - .homeBanner { - padding: 2rem; - text-align: center; - } - - .homeLeft { - padding-left: 0; - } - - .introductionContent, - .introductionImage { - text-align: center; - } -} - -.buttons { - display: flex; - align-items: center; - justify-content: left; -} - -.linkButton { - border-color: #0077fa; - border-width: 2px; -} - -.getStarted { - background-color: #0077fa; - margin-right: 3rem; - color: #fff!important; -} - -.getStarted:hover { - background: rgba(0,119,250,0.9); - box-shadow: 0 6px 20px rgba(0,118,255,0.23); -} - -.getGuide:hover { - border-color: rgba(0,119,250,0.9); - box-shadow: 0 6px 20px rgba(0,118,255,0.23); -} - -html[data-theme=dark] .notice { - background-color: #35363c; - border: 2px solid rgba(255,255,255 ,0.08) -} - -html[data-theme=dark] .linkButton { - border: 2px solid rgba(255,255,255 ,0.08); -} - -html[data-theme=dark] .getStarted { - background-color: #35363c; - border: 1px solid rgba(255,255,255 ,0.08); - color: var(--ifm-font-color-base); -} - -html[data-theme=dark] .getStarted:hover { - background: #35363cb3; - box-shadow: 0 6px 20px rgba(255,255,255 ,0.08); -} - -html[data-theme=dark] .getGuide:hover { - box-shadow: 0 6px 20px rgba(255,255,255 ,0.08); -} - -html[data-theme=dark] .homeTop { - background-color: #1c1f23; -} - - -.feature_odd { - background-color: #fff; -} - -html[data-theme=dark] .feature_odd { - background-color: #1c1f23; -} - -.featuresSection { - background: #fafafa; -} - -.featureSectionTitle { - text-align: center; - padding: 100px 0 0; -} - -.featureSectionDescription { - text-align: center; - color: #999; - font-size: 14px; - margin: 0; -} - -html[data-theme=dark] .featuresSection { - background-color: #18191a; -} - -.flexAlignRight { - display: flex; - justify-content: flex-end; -} - -.introductionBody { - padding: 100px 0; -} - -.introductionImage { - width: 354px; -} - -.useDetailList { - text-align: center; -} - -.userLogo { - max-width: 80px; -} - -.userDetailTitle { - text-align: center; - font-weight: bold -} -html[data-theme=dark] .userDetailTitle { - color: #999; -} -.userContent { - display: flex; - justify-content: space-between; -} - -.features { - padding: 40px 0 100px; - display: flex; -} - -.featureItem { - display: flex; - flex-direction: column; - text-align: center; - margin: 50px 0; -} - -.featureItem a { - color: #333 -} - -.featureItem a:hover { - text-decoration: none; -} - -.featureImage { - margin-bottom: 16px; -} - -.featureImage img { - width: 60px; -} - -.featureDescription { - font-size: 14px; -} - -html[data-theme=dark] .featureItem a { - color: #fff; -} - -/*=================== ringContainer =================== */ -.ringContainer { - position: relative; - top: -8px; - left: -8px; -} - -.circle { - width: 8px; - height: 8px; - background-color: #62bd19; - border-radius: 50%; - position: absolute; - top: 10px; - left: 10px; -} - -.ringring { - border: 3px solid #62bd19; - border-radius: 30px; - height: 16px; - width: 16px; - position: absolute; - left: 6px; - top: 6px; - animation: pulsate 1s ease-out; - animation-iteration-count: infinite; - opacity: 0.0 -} - -@keyframes pulsate { - 0% { -webkit-transform: scale(0.1, 0.1); opacity: 0.0; } - 50% { opacity: 1.0; } - 100% { -webkit-transform: scale(1.2, 1.2); opacity: 0.0; } -} diff --git a/website/src/pages/resource.js b/website/src/pages/resource.js deleted file mode 100644 index 7f645f745..000000000 --- a/website/src/pages/resource.js +++ /dev/null @@ -1,38 +0,0 @@ -import React from 'react'; -import Layout from '@theme/Layout'; -import styles from './resource.module.css'; -// import { resource, summary } from './constants/resource'; - -function Resource() { - return ( - <> - - {/*
-

{summary.title}

-

{summary.description}

-
- -
-
- { - resource.map((item, index) => ( - - )) - } -
-
*/} -
- - ); -} - -export default Resource; diff --git a/website/src/pages/resource.module.css b/website/src/pages/resource.module.css deleted file mode 100644 index c61561c47..000000000 --- a/website/src/pages/resource.module.css +++ /dev/null @@ -1,79 +0,0 @@ -.resourceBanner { - background-image: url(''); - background-size: cover; - height: 320px; - text-align: center; - color: #333; - display: flex; - align-content: center; - justify-content: center; - flex-direction: column; -} - -.content { - margin-left: -20px; - margin-right: -20px; - display: flex; - flex-direction: row; - flex-wrap: wrap; - margin-top: 40px !important; - margin-bottom: 80px !important; -} - -.description { - color: #666; -} - -.item { - padding-left: 20px; - padding-right: 20px; - flex: 0 0 50%; - width: 50%; - max-width: 50%; - transition: transform .3s ease; -} - -.img { - background: #fff; - padding: 40px 0; -} - -.item img { - display: block; - max-width: 60%; - margin: 0 auto -} - -.item:hover { - transform: translateY(-2px); -} - -.body { - position: relative; - display: block; - transition: transform .3s ease; - box-shadow: 0 8px 24px rgba(163,177,191,.35); - background: #fafafa; - margin-bottom: 40px; - overflow: hidden; - display: block; -} - -.meta { - text-align: center; - box-sizing: border-box; - transition: transform .3s ease; - padding: 0 20px; -} - - -.item:hover .body { - transform: translateY(-2px); -} - -.meta h5 { - margin-top: 15px; - font-size: 14px; - font-weight: 700; - color: #333; -} diff --git a/website/src/pages/showcase.js b/website/src/pages/showcase.js deleted file mode 100644 index 6cfbcaefe..000000000 --- a/website/src/pages/showcase.js +++ /dev/null @@ -1,39 +0,0 @@ -import React from 'react'; -import Layout from '@theme/Layout'; -import styles from './showcase.module.css'; - -function Scaffold() { - return ( - <> - - ... 待完善 - {/*
-

{summary.title}

-

{summary.description}

-
- -
-
- { - showcase.map((item, index) => ( -
-
-
- -
-
-
{item.info.title}
-

{item.info.description}

-
-
-
- )) - } -
-
*/} -
- - ); -} - -export default Scaffold; diff --git a/website/src/pages/showcase.module.css b/website/src/pages/showcase.module.css deleted file mode 100644 index 8d83a246a..000000000 --- a/website/src/pages/showcase.module.css +++ /dev/null @@ -1,84 +0,0 @@ -.showcaseBanner { - background: url('https://lf3-static.bytednsdoc.com/obj/eden-cn/dhozeh7vhpebvog/project/bg.png'); - background-size: cover; - height: 320px; - text-align: center; - color: #333; - display: flex; - align-content: center; - justify-content: center; - flex-direction: column; -} - -.showcaseDescription { - color: #666; -} - -.showcaseContent { - margin-left: -20px; - margin-right: -20px; - display: flex; - flex-direction: row; - flex-wrap: wrap; - margin-top: 20px; -} - -.showcaseItem { - padding-left: 20px; - padding-right: 20px; - flex: 0 0 50%; - width: 50%; - max-width: 50%; - transition: transform .3s ease; -} - -.showcaseItem:hover { - transform: translateY(-2px); -} - -.showcaseBody { - position: relative; - display: block; - transition: transform .3s ease; - box-shadow: 0 8px 24px rgba(163,177,191,.35); - background: #fafafa; - margin-bottom: 40px; - overflow: hidden; -} - -.showcaseImg { - height: 306px; -} - - -.showcaseMeta { - text-align: center; - box-sizing: border-box; - transition: transform .3s ease; - padding: 0 20px; -} - - -.item:hover .body { - transform: translateY(-2px); -} - -.meta h5 { - margin-top: 15px; - font-size: 14px; - font-weight: 700; - color: #333; -} - -.meta p { - color: #999; - margin-top: 10px; - font-size: 12px; - line-height: 22px; - font-weight: 400; - overflow:hidden; - text-overflow: ellipsis; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; -} diff --git a/website/static/.nojekyll b/website/static/.nojekyll deleted file mode 100644 index e69de29bb..000000000 diff --git a/website/static/img/undraw_docusaurus_mountain.svg b/website/static/img/undraw_docusaurus_mountain.svg deleted file mode 100644 index 431cef2f7..000000000 --- a/website/static/img/undraw_docusaurus_mountain.svg +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/website/static/img/undraw_docusaurus_react.svg b/website/static/img/undraw_docusaurus_react.svg deleted file mode 100644 index e41705043..000000000 --- a/website/static/img/undraw_docusaurus_react.svg +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/website/static/img/undraw_docusaurus_tree.svg b/website/static/img/undraw_docusaurus_tree.svg deleted file mode 100644 index a05cc03dd..000000000 --- a/website/static/img/undraw_docusaurus_tree.svg +++ /dev/null @@ -1 +0,0 @@ -docu_tree \ No newline at end of file