├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc ├── .vscode ├── extensions.json └── settings.json ├── LICENSE ├── README.md ├── index.html ├── package.json ├── pnpm-lock.yaml ├── public ├── favicon.svg ├── pwa-192x192.png ├── pwa-512x512.png ├── robots.txt └── safari-pinned-tab.svg ├── scripts └── move-dist.sh ├── serverless ├── .gitignore ├── api │ ├── get-page-props.js │ └── index.js ├── package-lock.json ├── package.json └── vercel.json ├── src ├── App.tsx ├── api.tsx ├── components │ └── Footer.tsx ├── i18n │ ├── index.ts │ ├── locales.ts │ └── translations │ │ ├── README.md │ │ ├── en.json │ │ ├── es.json │ │ ├── fr.json │ │ ├── it.json │ │ ├── ja.json │ │ ├── ko.json │ │ ├── tr.json │ │ ├── vi.json │ │ └── zh-CN.json ├── main.ts ├── pages │ ├── README.md │ ├── [...all].tsx │ ├── about.mdx │ ├── hi │ │ └── [name].tsx │ └── index.tsx ├── shims.d.ts ├── styles │ ├── main.css │ └── markdown.css └── utils │ ├── dark-theme.ts │ └── local-storage.ts ├── tailwind.config.ts ├── tsconfig.json └── vite.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.local 3 | dist 4 | dist-ssr 5 | node_modules 6 | **/_* 7 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | shamefully-hoist=true 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | /node_modules/** 2 | /.cache/** 3 | /dist/** 4 | /tests/unit/coverage/** 5 | **/.temp/** -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | semi: false 2 | singleQuote: true 3 | trailingComma: es5 -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "lokalise.i18n-ally", 4 | "antfu.iconify", 5 | "dbaeumer.vscode-eslint" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "i18n-ally.localesPaths": "locales", 3 | "i18n-ally.keystyle": "nested", 4 | "i18n-ally.sortKeys": true, 5 | "cSpell.words": [ 6 | "Reactesse" 7 | ], 8 | "typescript.tsdk": "node_modules/typescript/lib" 9 | } 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Fran Dios 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Reactesse SSR 2 | 3 | > React + Vite + SSR template based on [@antfu](https://github.com/antfu)'s [Vitesse](https://github.com/antfu/vitesse) with [`vite-ssr`](https://github.com/frandiox/vite-ssr). 4 | 5 |

6 | Live Demo 7 |

8 | 9 | ## Features 10 | 11 | - ⚡️ [React](https://github.com/facebook/react), [Vite 2](https://github.com/vitejs/vite), [pnpm](https://pnpm.js.org/), [ESBuild](https://github.com/evanw/esbuild) 12 | 13 | - 🗂 [File based routing](./src/pages) 14 | 15 | - 🎨 [Windi CSS](https://github.com/windicss/windicss) - on-demand Tailwind CSS with speed 16 | 17 | - 😃 [SVG icons](https://react-icons.github.io/react-icons/) 18 | 19 | - 🌍 [I18n ready](./src/i18n/translations) 20 | 21 | - 🗒 [Markdown Support](https://github.com/brillout/vite-plugin-mdx) 22 | 23 | - 🖨 Server-side rendering (SSR) in Node.js via [vite-ssr](https://github.com/frandiox/vite-ssr) 24 | 25 | - 🦾 TypeScript, of course 26 | 27 | - ☁️ Deploy on Vercel, minimal [config](./serverless/vercel.json) 28 | 29 |
30 | 31 | ## Pre-packed 32 | 33 | ### UI Frameworks 34 | 35 | - [Windi CSS](https://github.com/windicss/windicss) (On-demand [TailwindCSS](https://tailwindcss.com/)) - lighter and faster, with a bundle additional features! 36 | - [Windi CSS Typography](https://windicss.netlify.app/guide/plugins.html#typography) - similar to [Tailwind CSS Typography](https://github.com/tailwindlabs/tailwindcss-typograph) but for Windi CSS 37 | 38 | ### Plugins 39 | 40 | - [`vite-plugin-pages`](https://github.com/hannoeru/vite-plugin-pages) - file system based routing 41 | - [`vite-plugin-windicss`](https://github.com/antfu/vite-plugin-windicss) - WindiCSS support 42 | - [`vite-plugin-mdx`](https://github.com/brillout/vite-plugin-mdx) - Markdown as components / components in Markdown 43 | - [`remark-prism`](https://github.com/sergioramos/remark-prism) - [Prism](https://prismjs.com/) for syntax highlighting 44 | - [`prism-theme-vars`](https://github.com/antfu/prism-theme-vars) - customizable Prism.js theme using CSS variables 45 | - [react-i18next](https://react.i18next.com/) - Internationalization 46 | - [`react-helmet-async`](https://github.com/staylor/react-helmet-async) - manipulate document head reactively 47 | 48 | ### Dev tools 49 | 50 | - [TypeScript](https://www.typescriptlang.org/) 51 | - [pnpm](https://pnpm.js.org/) - fast, disk space efficient package manager 52 | - [`vite-ssr`](https://github.com/frandiox/vite-ssr) - Server-side rendering 53 | - [Vercel](https://vercel.com/) - deploy 54 | - [VS Code Extensions](./.vscode/extensions.json) 55 | - [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) 56 | 57 | ## Try it now! 58 | 59 | ### GitHub Template 60 | 61 | [Create a repo from this template on GitHub](https://github.com/frandiox/reactesse-ssr-template/generate). 62 | 63 | ### Clone to local 64 | 65 | If you prefer to do it manually with the cleaner git history 66 | 67 | ```bash 68 | npx degit frandiox/reactesse-ssr-template my-reactesse-app 69 | cd my-reactesse-app 70 | pnpm i # If you don't have pnpm installed, run: npm install -g pnpm 71 | ``` 72 | 73 | ## Checklist 74 | 75 | When you use this template, try follow the checklist to update your info properly 76 | 77 | - [ ] Add a `name` field in `package.json` 78 | - [ ] Change the author name in `LICENSE` 79 | - [ ] Change the favicon in `public` 80 | - [ ] Remove the `.github` folder which contains the funding info 81 | - [ ] Clean up the READMEs and remove routes 82 | 83 | And, enjoy :) 84 | 85 | ## Usage 86 | 87 | ### Development 88 | 89 | Just run and visit http://localhost:3333 90 | 91 | ```bash 92 | pnpm dev # SSR development 93 | pnpm dev:spa # SPA without SSR 94 | ``` 95 | 96 | ### Build 97 | 98 | To build the App, run 99 | 100 | ```bash 101 | pnpm build 102 | ``` 103 | 104 | And you will see the generated files in `dist`, and some of these files will be moved to `serverless` for deployment. 105 | 106 | ### Deploy on Vercel 107 | 108 | Go to [Vercel](https://vercel.com) and install its CLI. Then: 109 | 110 | ```bash 111 | pnpm preview # Simulate Vercel environment locally 112 | pnpm deploy 113 | pnpm deploy:prod 114 | ``` 115 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "engines": { 4 | "node": ">=14" 5 | }, 6 | "scripts": { 7 | "dev": "vite-ssr --port 3333 --open", 8 | "dev:spa": "vite --port 3333 --open", 9 | "clean": "rm -rf dist && rm -rf serverless/public && rm -rf serverless/api/renderer", 10 | "build": "pnpm clean && cross-env NODE_ENV=production vite-ssr build && ./scripts/move-dist.sh", 11 | "preview": "cd serverless && vercel dev", 12 | "deploy": "cd serverless && vercel", 13 | "deploy:prod": "cd serverless && vercel --prod" 14 | }, 15 | "dependencies": { 16 | "@mdx-js/react": "^1.6.22", 17 | "@react-icons/all-files": "^4.1.0", 18 | "i18next": "^20.3.5", 19 | "prism-theme-vars": "^0.2.2", 20 | "react": "^17.0.2", 21 | "react-dom": "^17.0.2", 22 | "react-helmet-async": "^1.0.9", 23 | "react-i18next": "^11.11.4", 24 | "react-router": "^5.2.0", 25 | "react-router-config": "^5.1.1", 26 | "react-router-dom": "^5.2.0", 27 | "vite-ssr": "^0.12.0" 28 | }, 29 | "devDependencies": { 30 | "@mdx-js/mdx": "^1.6.22", 31 | "@types/jest": "^26.0.24", 32 | "@types/node": "^16.4.10", 33 | "@types/react": "^17.0.15", 34 | "@types/react-dom": "^17.0.9", 35 | "@types/react-router-config": "^5.0.3", 36 | "@types/react-router-dom": "^5.1.8", 37 | "@typescript-eslint/eslint-plugin": "^4.29.0", 38 | "@vitejs/plugin-react-refresh": "^1.3.6", 39 | "cross-env": "^7.0.3", 40 | "eslint": "^7.32.0", 41 | "node-fetch": "^2.6.1", 42 | "pnpm": "^6.11.5", 43 | "remark-prism": "^1.3.6", 44 | "rimraf": "^3.0.2", 45 | "typescript": "^4.3.5", 46 | "vite": "^2.4.4", 47 | "vite-plugin-mdx": "^3.5.6", 48 | "vite-plugin-pages": "0.12.x", 49 | "vite-plugin-windicss": "^1.2.7" 50 | } 51 | } -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.3 2 | 3 | specifiers: 4 | '@mdx-js/mdx': ^1.6.22 5 | '@mdx-js/react': ^1.6.22 6 | '@react-icons/all-files': ^4.1.0 7 | '@types/jest': ^26.0.24 8 | '@types/node': ^16.4.10 9 | '@types/react': ^17.0.15 10 | '@types/react-dom': ^17.0.9 11 | '@types/react-router-config': ^5.0.3 12 | '@types/react-router-dom': ^5.1.8 13 | '@typescript-eslint/eslint-plugin': ^4.29.0 14 | '@vitejs/plugin-react-refresh': ^1.3.6 15 | cross-env: ^7.0.3 16 | eslint: ^7.32.0 17 | i18next: ^20.3.5 18 | node-fetch: ^2.6.1 19 | pnpm: ^6.11.5 20 | prism-theme-vars: ^0.2.2 21 | react: ^17.0.2 22 | react-dom: ^17.0.2 23 | react-helmet-async: ^1.0.9 24 | react-i18next: ^11.11.4 25 | react-router: ^5.2.0 26 | react-router-config: ^5.1.1 27 | react-router-dom: ^5.2.0 28 | remark-prism: ^1.3.6 29 | rimraf: ^3.0.2 30 | typescript: ^4.3.5 31 | vite: ^2.4.4 32 | vite-plugin-mdx: ^3.5.6 33 | vite-plugin-pages: 0.12.x 34 | vite-plugin-windicss: ^1.2.7 35 | vite-ssr: ^0.12.0 36 | 37 | dependencies: 38 | '@mdx-js/react': 1.6.22_react@17.0.2 39 | '@react-icons/all-files': 4.1.0_react@17.0.2 40 | i18next: 20.3.5 41 | prism-theme-vars: 0.2.2 42 | react: 17.0.2 43 | react-dom: 17.0.2_react@17.0.2 44 | react-helmet-async: 1.0.9_react-dom@17.0.2+react@17.0.2 45 | react-i18next: 11.11.4_i18next@20.3.5+react@17.0.2 46 | react-router: 5.2.0_react@17.0.2 47 | react-router-config: 5.1.1_react-router@5.2.0+react@17.0.2 48 | react-router-dom: 5.2.0_react@17.0.2 49 | vite-ssr: 0.12.0_f45c38ab9d74c0c9f98540462cb1bd4c 50 | 51 | devDependencies: 52 | '@mdx-js/mdx': 1.6.22 53 | '@types/jest': 26.0.24 54 | '@types/node': 16.4.10 55 | '@types/react': 17.0.15 56 | '@types/react-dom': 17.0.9 57 | '@types/react-router-config': 5.0.3 58 | '@types/react-router-dom': 5.1.8 59 | '@typescript-eslint/eslint-plugin': 4.29.0_eslint@7.32.0+typescript@4.3.5 60 | '@vitejs/plugin-react-refresh': 1.3.6 61 | cross-env: 7.0.3 62 | eslint: 7.32.0 63 | node-fetch: 2.6.1 64 | pnpm: 6.11.5 65 | remark-prism: 1.3.6 66 | rimraf: 3.0.2 67 | typescript: 4.3.5 68 | vite: 2.4.4 69 | vite-plugin-mdx: 3.5.6_@mdx-js+mdx@1.6.22+vite@2.4.4 70 | vite-plugin-pages: 0.12.2_vite@2.4.4 71 | vite-plugin-windicss: 1.2.7_vite@2.4.4 72 | 73 | packages: 74 | 75 | /@alloc/quick-lru/5.2.0: 76 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 77 | engines: {node: '>=10'} 78 | dev: true 79 | 80 | /@antfu/utils/0.2.4: 81 | resolution: {integrity: sha512-2bZNkVfL9IZESmvE26UKi8SzyvSoaIsGXDcnbHFMtmGMqUiB1fXpAJ1ijGf+tSqKRQ5yagck2U1Qk0p+705/kw==} 82 | dependencies: 83 | '@types/throttle-debounce': 2.1.0 84 | dev: true 85 | 86 | /@babel/code-frame/7.12.11: 87 | resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} 88 | dependencies: 89 | '@babel/highlight': 7.14.0 90 | dev: true 91 | 92 | /@babel/code-frame/7.14.5: 93 | resolution: {integrity: sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==} 94 | engines: {node: '>=6.9.0'} 95 | dependencies: 96 | '@babel/highlight': 7.14.5 97 | dev: true 98 | 99 | /@babel/compat-data/7.14.9: 100 | resolution: {integrity: sha512-p3QjZmMGHDGdpcwEYYWu7i7oJShJvtgMjJeb0W95PPhSm++3lm8YXYOh45Y6iCN9PkZLTZ7CIX5nFrp7pw7TXw==} 101 | engines: {node: '>=6.9.0'} 102 | dev: true 103 | 104 | /@babel/core/7.12.9: 105 | resolution: {integrity: sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==} 106 | engines: {node: '>=6.9.0'} 107 | dependencies: 108 | '@babel/code-frame': 7.14.5 109 | '@babel/generator': 7.14.9 110 | '@babel/helper-module-transforms': 7.14.8 111 | '@babel/helpers': 7.14.8 112 | '@babel/parser': 7.14.9 113 | '@babel/template': 7.14.5 114 | '@babel/traverse': 7.14.9 115 | '@babel/types': 7.14.9 116 | convert-source-map: 1.8.0 117 | debug: 4.3.2 118 | gensync: 1.0.0-beta.2 119 | json5: 2.2.0 120 | lodash: 4.17.21 121 | resolve: 1.20.0 122 | semver: 5.7.1 123 | source-map: 0.5.7 124 | transitivePeerDependencies: 125 | - supports-color 126 | dev: true 127 | 128 | /@babel/core/7.14.8: 129 | resolution: {integrity: sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q==} 130 | engines: {node: '>=6.9.0'} 131 | dependencies: 132 | '@babel/code-frame': 7.14.5 133 | '@babel/generator': 7.14.9 134 | '@babel/helper-compilation-targets': 7.14.5_@babel+core@7.14.8 135 | '@babel/helper-module-transforms': 7.14.8 136 | '@babel/helpers': 7.14.8 137 | '@babel/parser': 7.14.9 138 | '@babel/template': 7.14.5 139 | '@babel/traverse': 7.14.9 140 | '@babel/types': 7.14.9 141 | convert-source-map: 1.7.0 142 | debug: 4.3.2 143 | gensync: 1.0.0-beta.2 144 | json5: 2.2.0 145 | semver: 6.3.0 146 | source-map: 0.5.7 147 | transitivePeerDependencies: 148 | - supports-color 149 | dev: true 150 | 151 | /@babel/generator/7.14.9: 152 | resolution: {integrity: sha512-4yoHbhDYzFa0GLfCzLp5GxH7vPPMAHdZjyE7M/OajM9037zhx0rf+iNsJwp4PT0MSFpwjG7BsHEbPkBQpZ6cYA==} 153 | engines: {node: '>=6.9.0'} 154 | dependencies: 155 | '@babel/types': 7.14.9 156 | jsesc: 2.5.2 157 | source-map: 0.5.7 158 | dev: true 159 | 160 | /@babel/helper-compilation-targets/7.14.5_@babel+core@7.14.8: 161 | resolution: {integrity: sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==} 162 | engines: {node: '>=6.9.0'} 163 | peerDependencies: 164 | '@babel/core': ^7.0.0 165 | dependencies: 166 | '@babel/compat-data': 7.14.9 167 | '@babel/core': 7.14.8 168 | '@babel/helper-validator-option': 7.14.5 169 | browserslist: 4.16.6 170 | semver: 6.3.0 171 | dev: true 172 | 173 | /@babel/helper-function-name/7.14.5: 174 | resolution: {integrity: sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==} 175 | engines: {node: '>=6.9.0'} 176 | dependencies: 177 | '@babel/helper-get-function-arity': 7.14.5 178 | '@babel/template': 7.14.5 179 | '@babel/types': 7.14.9 180 | dev: true 181 | 182 | /@babel/helper-get-function-arity/7.14.5: 183 | resolution: {integrity: sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==} 184 | engines: {node: '>=6.9.0'} 185 | dependencies: 186 | '@babel/types': 7.14.9 187 | dev: true 188 | 189 | /@babel/helper-hoist-variables/7.14.5: 190 | resolution: {integrity: sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==} 191 | engines: {node: '>=6.9.0'} 192 | dependencies: 193 | '@babel/types': 7.14.9 194 | dev: true 195 | 196 | /@babel/helper-member-expression-to-functions/7.14.7: 197 | resolution: {integrity: sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==} 198 | engines: {node: '>=6.9.0'} 199 | dependencies: 200 | '@babel/types': 7.14.9 201 | dev: true 202 | 203 | /@babel/helper-module-imports/7.14.5: 204 | resolution: {integrity: sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==} 205 | engines: {node: '>=6.9.0'} 206 | dependencies: 207 | '@babel/types': 7.14.9 208 | dev: true 209 | 210 | /@babel/helper-module-transforms/7.14.8: 211 | resolution: {integrity: sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA==} 212 | engines: {node: '>=6.9.0'} 213 | dependencies: 214 | '@babel/helper-module-imports': 7.14.5 215 | '@babel/helper-replace-supers': 7.14.5 216 | '@babel/helper-simple-access': 7.14.8 217 | '@babel/helper-split-export-declaration': 7.14.5 218 | '@babel/helper-validator-identifier': 7.14.9 219 | '@babel/template': 7.14.5 220 | '@babel/traverse': 7.14.9 221 | '@babel/types': 7.14.9 222 | transitivePeerDependencies: 223 | - supports-color 224 | dev: true 225 | 226 | /@babel/helper-optimise-call-expression/7.14.5: 227 | resolution: {integrity: sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==} 228 | engines: {node: '>=6.9.0'} 229 | dependencies: 230 | '@babel/types': 7.14.9 231 | dev: true 232 | 233 | /@babel/helper-plugin-utils/7.10.4: 234 | resolution: {integrity: sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==} 235 | dev: true 236 | 237 | /@babel/helper-plugin-utils/7.14.5: 238 | resolution: {integrity: sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==} 239 | engines: {node: '>=6.9.0'} 240 | dev: true 241 | 242 | /@babel/helper-replace-supers/7.14.5: 243 | resolution: {integrity: sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==} 244 | engines: {node: '>=6.9.0'} 245 | dependencies: 246 | '@babel/helper-member-expression-to-functions': 7.14.7 247 | '@babel/helper-optimise-call-expression': 7.14.5 248 | '@babel/traverse': 7.14.9 249 | '@babel/types': 7.14.9 250 | transitivePeerDependencies: 251 | - supports-color 252 | dev: true 253 | 254 | /@babel/helper-simple-access/7.14.8: 255 | resolution: {integrity: sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==} 256 | engines: {node: '>=6.9.0'} 257 | dependencies: 258 | '@babel/types': 7.14.9 259 | dev: true 260 | 261 | /@babel/helper-split-export-declaration/7.14.5: 262 | resolution: {integrity: sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==} 263 | engines: {node: '>=6.9.0'} 264 | dependencies: 265 | '@babel/types': 7.14.9 266 | dev: true 267 | 268 | /@babel/helper-validator-identifier/7.14.0: 269 | resolution: {integrity: sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==} 270 | 271 | /@babel/helper-validator-identifier/7.14.9: 272 | resolution: {integrity: sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==} 273 | engines: {node: '>=6.9.0'} 274 | dev: true 275 | 276 | /@babel/helper-validator-option/7.14.5: 277 | resolution: {integrity: sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==} 278 | engines: {node: '>=6.9.0'} 279 | dev: true 280 | 281 | /@babel/helpers/7.14.8: 282 | resolution: {integrity: sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw==} 283 | engines: {node: '>=6.9.0'} 284 | dependencies: 285 | '@babel/template': 7.14.5 286 | '@babel/traverse': 7.14.9 287 | '@babel/types': 7.14.9 288 | transitivePeerDependencies: 289 | - supports-color 290 | dev: true 291 | 292 | /@babel/highlight/7.14.0: 293 | resolution: {integrity: sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==} 294 | dependencies: 295 | '@babel/helper-validator-identifier': 7.14.0 296 | chalk: 2.4.2 297 | js-tokens: 4.0.0 298 | dev: true 299 | 300 | /@babel/highlight/7.14.5: 301 | resolution: {integrity: sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==} 302 | engines: {node: '>=6.9.0'} 303 | dependencies: 304 | '@babel/helper-validator-identifier': 7.14.9 305 | chalk: 2.4.2 306 | js-tokens: 4.0.0 307 | dev: true 308 | 309 | /@babel/parser/7.14.4: 310 | resolution: {integrity: sha512-ArliyUsWDUqEGfWcmzpGUzNfLxTdTp6WU4IuP6QFSp9gGfWS6boxFCkJSJ/L4+RG8z/FnIU3WxCk6hPL9SSWeA==} 311 | engines: {node: '>=6.0.0'} 312 | hasBin: true 313 | dev: false 314 | 315 | /@babel/parser/7.14.9: 316 | resolution: {integrity: sha512-RdUTOseXJ8POjjOeEBEvNMIZU/nm4yu2rufRkcibzkkg7DmQvXU8v3M4Xk9G7uuI86CDGkKcuDWgioqZm+mScQ==} 317 | engines: {node: '>=6.0.0'} 318 | hasBin: true 319 | dev: true 320 | 321 | /@babel/plugin-proposal-object-rest-spread/7.12.1_@babel+core@7.12.9: 322 | resolution: {integrity: sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==} 323 | peerDependencies: 324 | '@babel/core': ^7.0.0-0 325 | dependencies: 326 | '@babel/core': 7.12.9 327 | '@babel/helper-plugin-utils': 7.10.4 328 | '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 329 | '@babel/plugin-transform-parameters': 7.14.5_@babel+core@7.12.9 330 | dev: true 331 | 332 | /@babel/plugin-syntax-jsx/7.12.1_@babel+core@7.12.9: 333 | resolution: {integrity: sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==} 334 | peerDependencies: 335 | '@babel/core': ^7.0.0-0 336 | dependencies: 337 | '@babel/core': 7.12.9 338 | '@babel/helper-plugin-utils': 7.14.5 339 | dev: true 340 | 341 | /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.12.9: 342 | resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} 343 | peerDependencies: 344 | '@babel/core': ^7.0.0-0 345 | dependencies: 346 | '@babel/core': 7.12.9 347 | '@babel/helper-plugin-utils': 7.14.5 348 | dev: true 349 | 350 | /@babel/plugin-transform-parameters/7.14.5_@babel+core@7.12.9: 351 | resolution: {integrity: sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA==} 352 | engines: {node: '>=6.9.0'} 353 | peerDependencies: 354 | '@babel/core': ^7.0.0-0 355 | dependencies: 356 | '@babel/core': 7.12.9 357 | '@babel/helper-plugin-utils': 7.14.5 358 | dev: true 359 | 360 | /@babel/plugin-transform-react-jsx-self/7.14.9_@babel+core@7.14.8: 361 | resolution: {integrity: sha512-Fqqu0f8zv9W+RyOnx29BX/RlEsBRANbOf5xs5oxb2aHP4FKbLXxIaVPUiCti56LAR1IixMH4EyaixhUsKqoBHw==} 362 | engines: {node: '>=6.9.0'} 363 | peerDependencies: 364 | '@babel/core': ^7.0.0-0 365 | dependencies: 366 | '@babel/core': 7.14.8 367 | '@babel/helper-plugin-utils': 7.14.5 368 | dev: true 369 | 370 | /@babel/plugin-transform-react-jsx-source/7.14.5_@babel+core@7.14.8: 371 | resolution: {integrity: sha512-1TpSDnD9XR/rQ2tzunBVPThF5poaYT9GqP+of8fAtguYuI/dm2RkrMBDemsxtY0XBzvW7nXjYM0hRyKX9QYj7Q==} 372 | engines: {node: '>=6.9.0'} 373 | peerDependencies: 374 | '@babel/core': ^7.0.0-0 375 | dependencies: 376 | '@babel/core': 7.14.8 377 | '@babel/helper-plugin-utils': 7.14.5 378 | dev: true 379 | 380 | /@babel/runtime/7.14.0: 381 | resolution: {integrity: sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==} 382 | dependencies: 383 | regenerator-runtime: 0.13.7 384 | dev: false 385 | 386 | /@babel/runtime/7.14.8: 387 | resolution: {integrity: sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==} 388 | engines: {node: '>=6.9.0'} 389 | dependencies: 390 | regenerator-runtime: 0.13.9 391 | dev: false 392 | 393 | /@babel/template/7.14.5: 394 | resolution: {integrity: sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==} 395 | engines: {node: '>=6.9.0'} 396 | dependencies: 397 | '@babel/code-frame': 7.14.5 398 | '@babel/parser': 7.14.9 399 | '@babel/types': 7.14.9 400 | dev: true 401 | 402 | /@babel/traverse/7.14.9: 403 | resolution: {integrity: sha512-bldh6dtB49L8q9bUyB7bC20UKgU+EFDwKJylwl234Kv+ySZeMD31Xeht6URyueQ6LrRRpF2tmkfcZooZR9/e8g==} 404 | engines: {node: '>=6.9.0'} 405 | dependencies: 406 | '@babel/code-frame': 7.14.5 407 | '@babel/generator': 7.14.9 408 | '@babel/helper-function-name': 7.14.5 409 | '@babel/helper-hoist-variables': 7.14.5 410 | '@babel/helper-split-export-declaration': 7.14.5 411 | '@babel/parser': 7.14.9 412 | '@babel/types': 7.14.9 413 | debug: 4.3.2 414 | globals: 11.12.0 415 | transitivePeerDependencies: 416 | - supports-color 417 | dev: true 418 | 419 | /@babel/types/7.14.4: 420 | resolution: {integrity: sha512-lCj4aIs0xUefJFQnwwQv2Bxg7Omd6bgquZ6LGC+gGMh6/s5qDVfjuCMlDmYQ15SLsWHd9n+X3E75lKIhl5Lkiw==} 421 | dependencies: 422 | '@babel/helper-validator-identifier': 7.14.0 423 | to-fast-properties: 2.0.0 424 | dev: false 425 | 426 | /@babel/types/7.14.9: 427 | resolution: {integrity: sha512-u0bLTnv3DFHeaQLYzb7oRJ1JHr1sv/SYDM7JSqHFFLwXG1wTZRughxFI5NCP8qBEo1rVVsn7Yg2Lvw49nne/Ow==} 428 | engines: {node: '>=6.9.0'} 429 | dependencies: 430 | '@babel/helper-validator-identifier': 7.14.9 431 | to-fast-properties: 2.0.0 432 | dev: true 433 | 434 | /@eslint/eslintrc/0.4.3: 435 | resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} 436 | engines: {node: ^10.12.0 || >=12.0.0} 437 | dependencies: 438 | ajv: 6.12.6 439 | debug: 4.3.2 440 | espree: 7.3.1 441 | globals: 13.9.0 442 | ignore: 4.0.6 443 | import-fresh: 3.3.0 444 | js-yaml: 3.14.1 445 | minimatch: 3.0.4 446 | strip-json-comments: 3.1.1 447 | transitivePeerDependencies: 448 | - supports-color 449 | dev: true 450 | 451 | /@humanwhocodes/config-array/0.5.0: 452 | resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} 453 | engines: {node: '>=10.10.0'} 454 | dependencies: 455 | '@humanwhocodes/object-schema': 1.2.0 456 | debug: 4.3.2 457 | minimatch: 3.0.4 458 | transitivePeerDependencies: 459 | - supports-color 460 | dev: true 461 | 462 | /@humanwhocodes/object-schema/1.2.0: 463 | resolution: {integrity: sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==} 464 | dev: true 465 | 466 | /@jest/types/26.6.2: 467 | resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} 468 | engines: {node: '>= 10.14.2'} 469 | dependencies: 470 | '@types/istanbul-lib-coverage': 2.0.3 471 | '@types/istanbul-reports': 3.0.1 472 | '@types/node': 16.4.10 473 | '@types/yargs': 15.0.13 474 | chalk: 4.1.1 475 | dev: true 476 | 477 | /@mdx-js/mdx/1.6.22: 478 | resolution: {integrity: sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==} 479 | dependencies: 480 | '@babel/core': 7.12.9 481 | '@babel/plugin-syntax-jsx': 7.12.1_@babel+core@7.12.9 482 | '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 483 | '@mdx-js/util': 1.6.22 484 | babel-plugin-apply-mdx-type-prop: 1.6.22_@babel+core@7.12.9 485 | babel-plugin-extract-import-names: 1.6.22 486 | camelcase-css: 2.0.1 487 | detab: 2.0.4 488 | hast-util-raw: 6.0.1 489 | lodash.uniq: 4.5.0 490 | mdast-util-to-hast: 10.0.1 491 | remark-footnotes: 2.0.0 492 | remark-mdx: 1.6.22 493 | remark-parse: 8.0.3 494 | remark-squeeze-paragraphs: 4.0.0 495 | style-to-object: 0.3.0 496 | unified: 9.2.0 497 | unist-builder: 2.0.3 498 | unist-util-visit: 2.0.3 499 | transitivePeerDependencies: 500 | - supports-color 501 | dev: true 502 | 503 | /@mdx-js/react/1.6.22_react@17.0.2: 504 | resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} 505 | peerDependencies: 506 | react: ^16.13.1 || ^17.0.0 507 | dependencies: 508 | react: 17.0.2 509 | dev: false 510 | 511 | /@mdx-js/util/1.6.22: 512 | resolution: {integrity: sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==} 513 | dev: true 514 | 515 | /@nodelib/fs.scandir/2.1.5: 516 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 517 | engines: {node: '>= 8'} 518 | dependencies: 519 | '@nodelib/fs.stat': 2.0.5 520 | run-parallel: 1.2.0 521 | dev: true 522 | 523 | /@nodelib/fs.stat/2.0.5: 524 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 525 | engines: {node: '>= 8'} 526 | dev: true 527 | 528 | /@nodelib/fs.walk/1.2.7: 529 | resolution: {integrity: sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==} 530 | engines: {node: '>= 8'} 531 | dependencies: 532 | '@nodelib/fs.scandir': 2.1.5 533 | fastq: 1.11.0 534 | dev: true 535 | 536 | /@react-icons/all-files/4.1.0_react@17.0.2: 537 | resolution: {integrity: sha512-hxBI2UOuVaI3O/BhQfhtb4kcGn9ft12RWAFVMUeNjqqhLsHvFtzIkFaptBJpFDANTKoDfdVoHTKZDlwKCACbMQ==} 538 | peerDependencies: 539 | react: '*' 540 | dependencies: 541 | react: 17.0.2 542 | dev: false 543 | 544 | /@rollup/plugin-replace/3.0.0: 545 | resolution: {integrity: sha512-3c7JCbMuYXM4PbPWT4+m/4Y6U60SgsnDT/cCyAyUKwFHg7pTSfsSQzIpETha3a3ig6OdOKzZz87D9ZXIK3qsDg==} 546 | peerDependencies: 547 | rollup: ^1.20.0 || ^2.0.0 548 | dependencies: 549 | '@rollup/pluginutils': 3.1.0 550 | magic-string: 0.25.7 551 | dev: false 552 | 553 | /@rollup/pluginutils/3.1.0: 554 | resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} 555 | engines: {node: '>= 8.0.0'} 556 | peerDependencies: 557 | rollup: ^1.20.0||^2.0.0 558 | dependencies: 559 | '@types/estree': 0.0.39 560 | estree-walker: 1.0.1 561 | picomatch: 2.3.0 562 | dev: false 563 | 564 | /@rollup/pluginutils/4.1.1: 565 | resolution: {integrity: sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ==} 566 | engines: {node: '>= 8.0.0'} 567 | dependencies: 568 | estree-walker: 2.0.2 569 | picomatch: 2.3.0 570 | dev: true 571 | 572 | /@tootallnate/once/1.1.2: 573 | resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} 574 | engines: {node: '>= 6'} 575 | dev: true 576 | 577 | /@types/estree/0.0.39: 578 | resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} 579 | dev: false 580 | 581 | /@types/estree/0.0.48: 582 | resolution: {integrity: sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==} 583 | dev: true 584 | 585 | /@types/hast/2.3.2: 586 | resolution: {integrity: sha512-Op5W7jYgZI7AWKY5wQ0/QNMzQM7dGQPyW1rXKNiymVCy5iTfdPuGu4HhYNOM2sIv8gUfIuIdcYlXmAepwaowow==} 587 | dependencies: 588 | '@types/unist': 2.0.6 589 | dev: true 590 | 591 | /@types/history/4.7.8: 592 | resolution: {integrity: sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA==} 593 | dev: true 594 | 595 | /@types/history/4.7.9: 596 | resolution: {integrity: sha512-MUc6zSmU3tEVnkQ78q0peeEjKWPUADMlC/t++2bI8WnAG2tvYRPIgHG8lWkXwqc8MsUF6Z2MOf+Mh5sazOmhiQ==} 597 | dev: true 598 | 599 | /@types/istanbul-lib-coverage/2.0.3: 600 | resolution: {integrity: sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==} 601 | dev: true 602 | 603 | /@types/istanbul-lib-report/3.0.0: 604 | resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} 605 | dependencies: 606 | '@types/istanbul-lib-coverage': 2.0.3 607 | dev: true 608 | 609 | /@types/istanbul-reports/3.0.1: 610 | resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} 611 | dependencies: 612 | '@types/istanbul-lib-report': 3.0.0 613 | dev: true 614 | 615 | /@types/jest/26.0.24: 616 | resolution: {integrity: sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==} 617 | dependencies: 618 | jest-diff: 26.6.2 619 | pretty-format: 26.6.2 620 | dev: true 621 | 622 | /@types/json-schema/7.0.7: 623 | resolution: {integrity: sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==} 624 | dev: true 625 | 626 | /@types/mdast/3.0.7: 627 | resolution: {integrity: sha512-YwR7OK8aPmaBvMMUi+pZXBNoW2unbVbfok4YRqGMJBe1dpDlzpRkJrYEYmvjxgs5JhuQmKfDexrN98u941Zasg==} 628 | dependencies: 629 | '@types/unist': 2.0.6 630 | dev: true 631 | 632 | /@types/node/16.4.10: 633 | resolution: {integrity: sha512-TmVHsm43br64js9BqHWqiDZA+xMtbUpI1MBIA0EyiBmoV9pcEYFOSdj5fr6enZNfh4fChh+AGOLIzGwJnkshyQ==} 634 | dev: true 635 | 636 | /@types/parse5/5.0.3: 637 | resolution: {integrity: sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==} 638 | dev: true 639 | 640 | /@types/prop-types/15.7.3: 641 | resolution: {integrity: sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==} 642 | dev: true 643 | 644 | /@types/react-dom/17.0.9: 645 | resolution: {integrity: sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg==} 646 | dependencies: 647 | '@types/react': 17.0.15 648 | dev: true 649 | 650 | /@types/react-router-config/5.0.3: 651 | resolution: {integrity: sha512-38vpjXic0+E2sIBEKUe+RrCmbc8RqcQhNV8OmU3KUcwgy/yzTeo67MhllP+0zjZWNr7Lhw+RnUkL0hzkf63nUQ==} 652 | dependencies: 653 | '@types/history': 4.7.9 654 | '@types/react': 17.0.15 655 | '@types/react-router': 5.1.16 656 | dev: true 657 | 658 | /@types/react-router-dom/5.1.8: 659 | resolution: {integrity: sha512-03xHyncBzG0PmDmf8pf3rehtjY0NpUj7TIN46FrT5n1ZWHPZvXz32gUyNboJ+xsL8cpg8bQVLcllptcQHvocrw==} 660 | dependencies: 661 | '@types/history': 4.7.8 662 | '@types/react': 17.0.15 663 | '@types/react-router': 5.1.15 664 | dev: true 665 | 666 | /@types/react-router/5.1.15: 667 | resolution: {integrity: sha512-z3UlMG/x91SFEVmmvykk9FLTliDvfdIUky4k2rCfXWQ0NKbrP8o9BTCaCTPuYsB8gDkUnUmkcA2vYlm2DR+HAA==} 668 | dependencies: 669 | '@types/history': 4.7.8 670 | '@types/react': 17.0.15 671 | dev: true 672 | 673 | /@types/react-router/5.1.16: 674 | resolution: {integrity: sha512-8d7nR/fNSqlTFGHti0R3F9WwIertOaaA1UEB8/jr5l5mDMOs4CidEgvvYMw4ivqrBK+vtVLxyTj2P+Pr/dtgzg==} 675 | dependencies: 676 | '@types/history': 4.7.9 677 | '@types/react': 17.0.15 678 | dev: true 679 | 680 | /@types/react/17.0.15: 681 | resolution: {integrity: sha512-uTKHDK9STXFHLaKv6IMnwp52fm0hwU+N89w/p9grdUqcFA6WuqDyPhaWopbNyE1k/VhgzmHl8pu1L4wITtmlLw==} 682 | dependencies: 683 | '@types/prop-types': 15.7.3 684 | '@types/scheduler': 0.16.1 685 | csstype: 3.0.8 686 | dev: true 687 | 688 | /@types/scheduler/0.16.1: 689 | resolution: {integrity: sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA==} 690 | dev: true 691 | 692 | /@types/throttle-debounce/2.1.0: 693 | resolution: {integrity: sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==} 694 | dev: true 695 | 696 | /@types/unist/2.0.6: 697 | resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} 698 | dev: true 699 | 700 | /@types/yargs-parser/20.2.0: 701 | resolution: {integrity: sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==} 702 | dev: true 703 | 704 | /@types/yargs/15.0.13: 705 | resolution: {integrity: sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==} 706 | dependencies: 707 | '@types/yargs-parser': 20.2.0 708 | dev: true 709 | 710 | /@typescript-eslint/eslint-plugin/4.29.0_eslint@7.32.0+typescript@4.3.5: 711 | resolution: {integrity: sha512-eiREtqWRZ8aVJcNru7cT/AMVnYd9a2UHsfZT8MR1dW3UUEg6jDv9EQ9Cq4CUPZesyQ58YUpoAADGv71jY8RwgA==} 712 | engines: {node: ^10.12.0 || >=12.0.0} 713 | peerDependencies: 714 | '@typescript-eslint/parser': ^4.0.0 715 | eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 716 | typescript: '*' 717 | peerDependenciesMeta: 718 | typescript: 719 | optional: true 720 | dependencies: 721 | '@typescript-eslint/experimental-utils': 4.29.0_eslint@7.32.0+typescript@4.3.5 722 | '@typescript-eslint/scope-manager': 4.29.0 723 | debug: 4.3.2 724 | eslint: 7.32.0 725 | functional-red-black-tree: 1.0.1 726 | regexpp: 3.1.0 727 | semver: 7.3.5 728 | tsutils: 3.21.0_typescript@4.3.5 729 | typescript: 4.3.5 730 | transitivePeerDependencies: 731 | - supports-color 732 | dev: true 733 | 734 | /@typescript-eslint/experimental-utils/4.29.0_eslint@7.32.0+typescript@4.3.5: 735 | resolution: {integrity: sha512-FpNVKykfeaIxlArLUP/yQfv/5/3rhl1ov6RWgud4OgbqWLkEq7lqgQU9iiavZRzpzCRQV4XddyFz3wFXdkiX9w==} 736 | engines: {node: ^10.12.0 || >=12.0.0} 737 | peerDependencies: 738 | eslint: '*' 739 | dependencies: 740 | '@types/json-schema': 7.0.7 741 | '@typescript-eslint/scope-manager': 4.29.0 742 | '@typescript-eslint/types': 4.29.0 743 | '@typescript-eslint/typescript-estree': 4.29.0_typescript@4.3.5 744 | eslint: 7.32.0 745 | eslint-scope: 5.1.1 746 | eslint-utils: 3.0.0_eslint@7.32.0 747 | transitivePeerDependencies: 748 | - supports-color 749 | - typescript 750 | dev: true 751 | 752 | /@typescript-eslint/scope-manager/4.29.0: 753 | resolution: {integrity: sha512-HPq7XAaDMM3DpmuijxLV9Io8/6pQnliiXMQUcAdjpJJSR+fdmbD/zHCd7hMkjJn04UQtCQBtshgxClzg6NIS2w==} 754 | engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} 755 | dependencies: 756 | '@typescript-eslint/types': 4.29.0 757 | '@typescript-eslint/visitor-keys': 4.29.0 758 | dev: true 759 | 760 | /@typescript-eslint/types/4.29.0: 761 | resolution: {integrity: sha512-2YJM6XfWfi8pgU2HRhTp7WgRw78TCRO3dOmSpAvIQ8MOv4B46JD2chnhpNT7Jq8j0APlIbzO1Bach734xxUl4A==} 762 | engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} 763 | dev: true 764 | 765 | /@typescript-eslint/typescript-estree/4.29.0_typescript@4.3.5: 766 | resolution: {integrity: sha512-8ZpNHDIOyqzzgZrQW9+xQ4k5hM62Xy2R4RPO3DQxMc5Rq5QkCdSpk/drka+DL9w6sXNzV5nrdlBmf8+x495QXQ==} 767 | engines: {node: ^10.12.0 || >=12.0.0} 768 | peerDependencies: 769 | typescript: '*' 770 | peerDependenciesMeta: 771 | typescript: 772 | optional: true 773 | dependencies: 774 | '@typescript-eslint/types': 4.29.0 775 | '@typescript-eslint/visitor-keys': 4.29.0 776 | debug: 4.3.2 777 | globby: 11.0.3 778 | is-glob: 4.0.1 779 | semver: 7.3.5 780 | tsutils: 3.21.0_typescript@4.3.5 781 | typescript: 4.3.5 782 | transitivePeerDependencies: 783 | - supports-color 784 | dev: true 785 | 786 | /@typescript-eslint/visitor-keys/4.29.0: 787 | resolution: {integrity: sha512-LoaofO1C/jAJYs0uEpYMXfHboGXzOJeV118X4OsZu9f7rG7Pr9B3+4HTU8+err81rADa4xfQmAxnRnPAI2jp+Q==} 788 | engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} 789 | dependencies: 790 | '@typescript-eslint/types': 4.29.0 791 | eslint-visitor-keys: 2.1.0 792 | dev: true 793 | 794 | /@vitejs/plugin-react-refresh/1.3.6: 795 | resolution: {integrity: sha512-iNR/UqhUOmFFxiezt0em9CgmiJBdWR+5jGxB2FihaoJfqGt76kiwaKoVOJVU5NYcDWMdN06LbyN2VIGIoYdsEA==} 796 | engines: {node: '>=12.0.0'} 797 | dependencies: 798 | '@babel/core': 7.14.8 799 | '@babel/plugin-transform-react-jsx-self': 7.14.9_@babel+core@7.14.8 800 | '@babel/plugin-transform-react-jsx-source': 7.14.5_@babel+core@7.14.8 801 | '@rollup/pluginutils': 4.1.1 802 | react-refresh: 0.10.0 803 | transitivePeerDependencies: 804 | - supports-color 805 | dev: true 806 | 807 | /@vue/compiler-core/3.1.1: 808 | resolution: {integrity: sha512-Z1RO3T6AEtAUFf2EqqovFm3ohAeTvFzRtB0qUENW2nEerJfdlk13/LS1a0EgsqlzxmYfR/S/S/gW9PLbFZZxkA==} 809 | dependencies: 810 | '@babel/parser': 7.14.4 811 | '@babel/types': 7.14.4 812 | '@vue/shared': 3.1.1 813 | estree-walker: 2.0.2 814 | source-map: 0.6.1 815 | dev: false 816 | 817 | /@vue/compiler-core/3.1.5: 818 | resolution: {integrity: sha512-TXBhFinoBaXKDykJzY26UEuQU1K07FOp/0Ie+OXySqqk0bS0ZO7Xvl7UmiTUPYcLrWbxWBR7Bs/y55AI0MNc2Q==} 819 | dependencies: 820 | '@babel/parser': 7.14.9 821 | '@babel/types': 7.14.9 822 | '@vue/shared': 3.1.5 823 | estree-walker: 2.0.2 824 | source-map: 0.6.1 825 | dev: true 826 | 827 | /@vue/compiler-dom/3.1.1: 828 | resolution: {integrity: sha512-nobRIo0t5ibzg+q8nC31m+aJhbq8FbWUoKvk6h3Vs1EqTDJaj6lBTcVTq5or8AYht7FbSpdAJ81isbJ1rWNX7A==} 829 | dependencies: 830 | '@vue/compiler-core': 3.1.1 831 | '@vue/shared': 3.1.1 832 | dev: false 833 | 834 | /@vue/compiler-dom/3.1.5: 835 | resolution: {integrity: sha512-ZsL3jqJ52OjGU/YiT/9XiuZAmWClKInZM2aFJh9gnsAPqOrj2JIELMbkIFpVKR/CrVO/f2VxfPiiQdQTr65jcQ==} 836 | dependencies: 837 | '@vue/compiler-core': 3.1.5 838 | '@vue/shared': 3.1.5 839 | dev: true 840 | 841 | /@vue/compiler-sfc/3.1.5: 842 | resolution: {integrity: sha512-mtMY6xMvZeSRx9MTa1+NgJWndrkzVTdJ1pQAmAKQuxyb5LsHVvrgP7kcQFvxPHVpLVTORbTJWHaiqoKrJvi1iA==} 843 | peerDependencies: 844 | vue: 3.1.5 845 | dependencies: 846 | '@babel/parser': 7.14.9 847 | '@babel/types': 7.14.9 848 | '@types/estree': 0.0.48 849 | '@vue/compiler-core': 3.1.5 850 | '@vue/compiler-dom': 3.1.5 851 | '@vue/compiler-ssr': 3.1.5 852 | '@vue/shared': 3.1.5 853 | consolidate: 0.16.0 854 | estree-walker: 2.0.2 855 | hash-sum: 2.0.0 856 | lru-cache: 5.1.1 857 | magic-string: 0.25.7 858 | merge-source-map: 1.1.0 859 | postcss: 8.3.6 860 | postcss-modules: 4.2.2_postcss@8.3.6 861 | postcss-selector-parser: 6.0.6 862 | source-map: 0.6.1 863 | dev: true 864 | 865 | /@vue/compiler-ssr/3.1.1: 866 | resolution: {integrity: sha512-7H6krZtVt3h/YzfNp7eYK41hMDz8ZskiBy+Wby+EDRINX6BD9JQ5C8zyy2xAa7T6Iz2VrQzsaJ/Bb52lTPSS5A==} 867 | dependencies: 868 | '@vue/compiler-dom': 3.1.1 869 | '@vue/shared': 3.1.1 870 | dev: false 871 | 872 | /@vue/compiler-ssr/3.1.5: 873 | resolution: {integrity: sha512-CU5N7Di/a4lyJ18LGJxJYZS2a8PlLdWpWHX9p/XcsjT2TngMpj3QvHVRkuik2u8QrIDZ8OpYmTyj1WDNsOV+Dg==} 874 | dependencies: 875 | '@vue/compiler-dom': 3.1.5 876 | '@vue/shared': 3.1.5 877 | dev: true 878 | 879 | /@vue/server-renderer/3.1.1: 880 | resolution: {integrity: sha512-b0UFiOfF27CGeWw25eoaRTiYqezBxY/ODl2VeuDMgdcbakdPP4T/ieSyjuN5g/ZxDCnGO6q/sMRZQgmQhYltww==} 881 | peerDependencies: 882 | vue: 3.1.1 883 | dependencies: 884 | '@vue/compiler-ssr': 3.1.1 885 | '@vue/shared': 3.1.1 886 | dev: false 887 | 888 | /@vue/shared/3.1.1: 889 | resolution: {integrity: sha512-g+4pzAw7PYSjARtLBoDq6DmcblX8i9KJHSCnyM5VDDFFifUaUT9iHbFpOF/KOizQ9f7QAqU2JH3Y6aXjzUMhVA==} 890 | dev: false 891 | 892 | /@vue/shared/3.1.5: 893 | resolution: {integrity: sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==} 894 | dev: true 895 | 896 | /@windicss/config/1.2.7: 897 | resolution: {integrity: sha512-XpH/dkXWk2LGygHzHBWWEW/yGcLqhpFFN2jo+zMeWZ1ggBzndQQzBHqHGQHcr6U6v3PoBuOz1prVWgUmQxn9eQ==} 898 | dependencies: 899 | debug: 4.3.2 900 | jiti: 1.11.0 901 | windicss: 3.1.6 902 | transitivePeerDependencies: 903 | - supports-color 904 | dev: true 905 | 906 | /@windicss/plugin-utils/1.2.7: 907 | resolution: {integrity: sha512-aNQhd1nEjkVsCHmzq0+4VGTmovOGGfPnH2hspH4YuDxMDhQ/99VrBdyk7irngWJjedjHB3+UYCSYWpY5a+2Hbg==} 908 | dependencies: 909 | '@antfu/utils': 0.2.4 910 | '@windicss/config': 1.2.7 911 | debug: 4.3.2 912 | fast-glob: 3.2.7 913 | magic-string: 0.25.7 914 | micromatch: 4.0.4 915 | windicss: 3.1.6 916 | transitivePeerDependencies: 917 | - supports-color 918 | dev: true 919 | 920 | /abab/2.0.5: 921 | resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==} 922 | dev: true 923 | 924 | /acorn-globals/6.0.0: 925 | resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} 926 | dependencies: 927 | acorn: 7.4.1 928 | acorn-walk: 7.2.0 929 | dev: true 930 | 931 | /acorn-jsx/5.3.1_acorn@7.4.1: 932 | resolution: {integrity: sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==} 933 | peerDependencies: 934 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 935 | dependencies: 936 | acorn: 7.4.1 937 | dev: true 938 | 939 | /acorn-walk/7.2.0: 940 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} 941 | engines: {node: '>=0.4.0'} 942 | dev: true 943 | 944 | /acorn/7.4.1: 945 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 946 | engines: {node: '>=0.4.0'} 947 | hasBin: true 948 | dev: true 949 | 950 | /acorn/8.4.1: 951 | resolution: {integrity: sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==} 952 | engines: {node: '>=0.4.0'} 953 | hasBin: true 954 | dev: true 955 | 956 | /agent-base/6.0.2: 957 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} 958 | engines: {node: '>= 6.0.0'} 959 | dependencies: 960 | debug: 4.3.2 961 | transitivePeerDependencies: 962 | - supports-color 963 | dev: true 964 | 965 | /ajv/6.12.6: 966 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 967 | dependencies: 968 | fast-deep-equal: 3.1.3 969 | fast-json-stable-stringify: 2.1.0 970 | json-schema-traverse: 0.4.1 971 | uri-js: 4.4.1 972 | dev: true 973 | 974 | /ajv/8.6.0: 975 | resolution: {integrity: sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==} 976 | dependencies: 977 | fast-deep-equal: 3.1.3 978 | json-schema-traverse: 1.0.0 979 | require-from-string: 2.0.2 980 | uri-js: 4.4.1 981 | dev: true 982 | 983 | /ansi-colors/4.1.1: 984 | resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} 985 | engines: {node: '>=6'} 986 | dev: true 987 | 988 | /ansi-regex/5.0.0: 989 | resolution: {integrity: sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==} 990 | engines: {node: '>=8'} 991 | dev: true 992 | 993 | /ansi-styles/3.2.1: 994 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 995 | engines: {node: '>=4'} 996 | dependencies: 997 | color-convert: 1.9.3 998 | dev: true 999 | 1000 | /ansi-styles/4.3.0: 1001 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 1002 | engines: {node: '>=8'} 1003 | dependencies: 1004 | color-convert: 2.0.1 1005 | dev: true 1006 | 1007 | /argparse/1.0.10: 1008 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 1009 | dependencies: 1010 | sprintf-js: 1.0.3 1011 | dev: true 1012 | 1013 | /array-union/2.1.0: 1014 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 1015 | engines: {node: '>=8'} 1016 | dev: true 1017 | 1018 | /astral-regex/2.0.0: 1019 | resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} 1020 | engines: {node: '>=8'} 1021 | dev: true 1022 | 1023 | /asynckit/0.4.0: 1024 | resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} 1025 | dev: true 1026 | 1027 | /available-typed-arrays/1.0.4: 1028 | resolution: {integrity: sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA==} 1029 | engines: {node: '>= 0.4'} 1030 | dev: true 1031 | 1032 | /babel-plugin-apply-mdx-type-prop/1.6.22_@babel+core@7.12.9: 1033 | resolution: {integrity: sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==} 1034 | peerDependencies: 1035 | '@babel/core': ^7.11.6 1036 | dependencies: 1037 | '@babel/core': 7.12.9 1038 | '@babel/helper-plugin-utils': 7.10.4 1039 | '@mdx-js/util': 1.6.22 1040 | dev: true 1041 | 1042 | /babel-plugin-extract-import-names/1.6.22: 1043 | resolution: {integrity: sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==} 1044 | dependencies: 1045 | '@babel/helper-plugin-utils': 7.10.4 1046 | dev: true 1047 | 1048 | /bail/1.0.5: 1049 | resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} 1050 | dev: true 1051 | 1052 | /balanced-match/1.0.2: 1053 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1054 | dev: true 1055 | 1056 | /big.js/5.2.2: 1057 | resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} 1058 | dev: true 1059 | 1060 | /bluebird/3.7.2: 1061 | resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} 1062 | dev: true 1063 | 1064 | /brace-expansion/1.1.11: 1065 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 1066 | dependencies: 1067 | balanced-match: 1.0.2 1068 | concat-map: 0.0.1 1069 | dev: true 1070 | 1071 | /braces/3.0.2: 1072 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 1073 | engines: {node: '>=8'} 1074 | dependencies: 1075 | fill-range: 7.0.1 1076 | dev: true 1077 | 1078 | /browser-process-hrtime/1.0.0: 1079 | resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} 1080 | dev: true 1081 | 1082 | /browserslist/4.16.6: 1083 | resolution: {integrity: sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==} 1084 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1085 | hasBin: true 1086 | dependencies: 1087 | caniuse-lite: 1.0.30001235 1088 | colorette: 1.2.2 1089 | electron-to-chromium: 1.3.749 1090 | escalade: 3.1.1 1091 | node-releases: 1.1.73 1092 | dev: true 1093 | 1094 | /call-bind/1.0.2: 1095 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 1096 | dependencies: 1097 | function-bind: 1.1.1 1098 | get-intrinsic: 1.1.1 1099 | dev: true 1100 | 1101 | /callsites/3.1.0: 1102 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1103 | engines: {node: '>=6'} 1104 | dev: true 1105 | 1106 | /camelcase-css/2.0.1: 1107 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 1108 | engines: {node: '>= 6'} 1109 | dev: true 1110 | 1111 | /caniuse-lite/1.0.30001235: 1112 | resolution: {integrity: sha512-zWEwIVqnzPkSAXOUlQnPW2oKoYb2aLQ4Q5ejdjBcnH63rfypaW34CxaeBn1VMya2XaEU3P/R2qHpWyj+l0BT1A==} 1113 | dev: true 1114 | 1115 | /ccount/1.1.0: 1116 | resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} 1117 | dev: true 1118 | 1119 | /chalk/2.4.2: 1120 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 1121 | engines: {node: '>=4'} 1122 | dependencies: 1123 | ansi-styles: 3.2.1 1124 | escape-string-regexp: 1.0.5 1125 | supports-color: 5.5.0 1126 | dev: true 1127 | 1128 | /chalk/4.1.1: 1129 | resolution: {integrity: sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==} 1130 | engines: {node: '>=10'} 1131 | dependencies: 1132 | ansi-styles: 4.3.0 1133 | supports-color: 7.2.0 1134 | dev: true 1135 | 1136 | /character-entities-legacy/1.1.4: 1137 | resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} 1138 | dev: true 1139 | 1140 | /character-entities/1.2.4: 1141 | resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} 1142 | dev: true 1143 | 1144 | /character-reference-invalid/1.1.4: 1145 | resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} 1146 | dev: true 1147 | 1148 | /classnames/2.3.1: 1149 | resolution: {integrity: sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==} 1150 | dev: true 1151 | 1152 | /collapse-white-space/1.0.6: 1153 | resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} 1154 | dev: true 1155 | 1156 | /color-convert/1.9.3: 1157 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1158 | dependencies: 1159 | color-name: 1.1.3 1160 | dev: true 1161 | 1162 | /color-convert/2.0.1: 1163 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1164 | engines: {node: '>=7.0.0'} 1165 | dependencies: 1166 | color-name: 1.1.4 1167 | dev: true 1168 | 1169 | /color-name/1.1.3: 1170 | resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} 1171 | dev: true 1172 | 1173 | /color-name/1.1.4: 1174 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1175 | dev: true 1176 | 1177 | /colorette/1.2.2: 1178 | resolution: {integrity: sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==} 1179 | dev: true 1180 | 1181 | /combined-stream/1.0.8: 1182 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 1183 | engines: {node: '>= 0.8'} 1184 | dependencies: 1185 | delayed-stream: 1.0.0 1186 | dev: true 1187 | 1188 | /comma-separated-tokens/1.0.8: 1189 | resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} 1190 | dev: true 1191 | 1192 | /concat-map/0.0.1: 1193 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 1194 | dev: true 1195 | 1196 | /connect/3.7.0: 1197 | resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} 1198 | engines: {node: '>= 0.10.0'} 1199 | dependencies: 1200 | debug: 2.6.9 1201 | finalhandler: 1.1.2 1202 | parseurl: 1.3.3 1203 | utils-merge: 1.0.1 1204 | dev: false 1205 | 1206 | /consolidate/0.16.0: 1207 | resolution: {integrity: sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==} 1208 | engines: {node: '>= 0.10.0'} 1209 | dependencies: 1210 | bluebird: 3.7.2 1211 | dev: true 1212 | 1213 | /convert-source-map/1.7.0: 1214 | resolution: {integrity: sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==} 1215 | dependencies: 1216 | safe-buffer: 5.1.2 1217 | dev: true 1218 | 1219 | /convert-source-map/1.8.0: 1220 | resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} 1221 | dependencies: 1222 | safe-buffer: 5.1.2 1223 | dev: true 1224 | 1225 | /cross-env/7.0.3: 1226 | resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} 1227 | engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} 1228 | hasBin: true 1229 | dependencies: 1230 | cross-spawn: 7.0.3 1231 | dev: true 1232 | 1233 | /cross-spawn/7.0.3: 1234 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1235 | engines: {node: '>= 8'} 1236 | dependencies: 1237 | path-key: 3.1.1 1238 | shebang-command: 2.0.0 1239 | which: 2.0.2 1240 | dev: true 1241 | 1242 | /css-selector-parser/1.4.1: 1243 | resolution: {integrity: sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==} 1244 | dev: true 1245 | 1246 | /cssesc/3.0.0: 1247 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 1248 | engines: {node: '>=4'} 1249 | hasBin: true 1250 | dev: true 1251 | 1252 | /cssom/0.3.8: 1253 | resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} 1254 | dev: true 1255 | 1256 | /cssom/0.4.4: 1257 | resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} 1258 | dev: true 1259 | 1260 | /cssstyle/2.3.0: 1261 | resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} 1262 | engines: {node: '>=8'} 1263 | dependencies: 1264 | cssom: 0.3.8 1265 | dev: true 1266 | 1267 | /csstype/3.0.8: 1268 | resolution: {integrity: sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==} 1269 | dev: true 1270 | 1271 | /data-urls/2.0.0: 1272 | resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} 1273 | engines: {node: '>=10'} 1274 | dependencies: 1275 | abab: 2.0.5 1276 | whatwg-mimetype: 2.3.0 1277 | whatwg-url: 8.7.0 1278 | dev: true 1279 | 1280 | /debug/2.6.9: 1281 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 1282 | dependencies: 1283 | ms: 2.0.0 1284 | dev: false 1285 | 1286 | /debug/4.3.2: 1287 | resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==} 1288 | engines: {node: '>=6.0'} 1289 | peerDependencies: 1290 | supports-color: '*' 1291 | peerDependenciesMeta: 1292 | supports-color: 1293 | optional: true 1294 | dependencies: 1295 | ms: 2.1.2 1296 | dev: true 1297 | 1298 | /decimal.js/10.3.1: 1299 | resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} 1300 | dev: true 1301 | 1302 | /deep-equal/2.0.5: 1303 | resolution: {integrity: sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==} 1304 | dependencies: 1305 | call-bind: 1.0.2 1306 | es-get-iterator: 1.1.2 1307 | get-intrinsic: 1.1.1 1308 | is-arguments: 1.1.0 1309 | is-date-object: 1.0.4 1310 | is-regex: 1.1.3 1311 | isarray: 2.0.5 1312 | object-is: 1.1.5 1313 | object-keys: 1.1.1 1314 | object.assign: 4.1.2 1315 | regexp.prototype.flags: 1.3.1 1316 | side-channel: 1.0.4 1317 | which-boxed-primitive: 1.0.2 1318 | which-collection: 1.0.1 1319 | which-typed-array: 1.1.4 1320 | dev: true 1321 | 1322 | /deep-is/0.1.3: 1323 | resolution: {integrity: sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=} 1324 | dev: true 1325 | 1326 | /define-properties/1.1.3: 1327 | resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==} 1328 | engines: {node: '>= 0.4'} 1329 | dependencies: 1330 | object-keys: 1.1.1 1331 | dev: true 1332 | 1333 | /delayed-stream/1.0.0: 1334 | resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} 1335 | engines: {node: '>=0.4.0'} 1336 | dev: true 1337 | 1338 | /detab/2.0.4: 1339 | resolution: {integrity: sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==} 1340 | dependencies: 1341 | repeat-string: 1.6.1 1342 | dev: true 1343 | 1344 | /diff-sequences/26.6.2: 1345 | resolution: {integrity: sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==} 1346 | engines: {node: '>= 10.14.2'} 1347 | dev: true 1348 | 1349 | /dir-glob/3.0.1: 1350 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1351 | engines: {node: '>=8'} 1352 | dependencies: 1353 | path-type: 4.0.0 1354 | dev: true 1355 | 1356 | /doctrine/3.0.0: 1357 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1358 | engines: {node: '>=6.0.0'} 1359 | dependencies: 1360 | esutils: 2.0.3 1361 | dev: true 1362 | 1363 | /domexception/2.0.1: 1364 | resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} 1365 | engines: {node: '>=8'} 1366 | dependencies: 1367 | webidl-conversions: 5.0.0 1368 | dev: true 1369 | 1370 | /ee-first/1.1.1: 1371 | resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} 1372 | dev: false 1373 | 1374 | /electron-to-chromium/1.3.749: 1375 | resolution: {integrity: sha512-F+v2zxZgw/fMwPz/VUGIggG4ZndDsYy0vlpthi3tjmDZlcfbhN5mYW0evXUsBr2sUtuDANFtle410A9u/sd/4A==} 1376 | dev: true 1377 | 1378 | /emoji-regex/8.0.0: 1379 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1380 | dev: true 1381 | 1382 | /emojis-list/3.0.0: 1383 | resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} 1384 | engines: {node: '>= 4'} 1385 | dev: true 1386 | 1387 | /encodeurl/1.0.2: 1388 | resolution: {integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=} 1389 | engines: {node: '>= 0.8'} 1390 | dev: false 1391 | 1392 | /enquirer/2.3.6: 1393 | resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} 1394 | engines: {node: '>=8.6'} 1395 | dependencies: 1396 | ansi-colors: 4.1.1 1397 | dev: true 1398 | 1399 | /es-abstract/1.18.3: 1400 | resolution: {integrity: sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==} 1401 | engines: {node: '>= 0.4'} 1402 | dependencies: 1403 | call-bind: 1.0.2 1404 | es-to-primitive: 1.2.1 1405 | function-bind: 1.1.1 1406 | get-intrinsic: 1.1.1 1407 | has: 1.0.3 1408 | has-symbols: 1.0.2 1409 | is-callable: 1.2.3 1410 | is-negative-zero: 2.0.1 1411 | is-regex: 1.1.3 1412 | is-string: 1.0.6 1413 | object-inspect: 1.10.3 1414 | object-keys: 1.1.1 1415 | object.assign: 4.1.2 1416 | string.prototype.trimend: 1.0.4 1417 | string.prototype.trimstart: 1.0.4 1418 | unbox-primitive: 1.0.1 1419 | dev: true 1420 | 1421 | /es-get-iterator/1.1.2: 1422 | resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==} 1423 | dependencies: 1424 | call-bind: 1.0.2 1425 | get-intrinsic: 1.1.1 1426 | has-symbols: 1.0.2 1427 | is-arguments: 1.1.0 1428 | is-map: 2.0.2 1429 | is-set: 2.0.2 1430 | is-string: 1.0.6 1431 | isarray: 2.0.5 1432 | dev: true 1433 | 1434 | /es-to-primitive/1.2.1: 1435 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 1436 | engines: {node: '>= 0.4'} 1437 | dependencies: 1438 | is-callable: 1.2.3 1439 | is-date-object: 1.0.4 1440 | is-symbol: 1.0.4 1441 | dev: true 1442 | 1443 | /esbuild/0.12.17: 1444 | resolution: {integrity: sha512-GshKJyVYUnlSXIZj/NheC2O0Kblh42CS7P1wJyTbbIHevTG4jYMS9NNw8EOd8dDWD0dzydYHS01MpZoUcQXB4g==} 1445 | hasBin: true 1446 | requiresBuild: true 1447 | dev: true 1448 | 1449 | /esbuild/0.8.57: 1450 | resolution: {integrity: sha512-j02SFrUwFTRUqiY0Kjplwjm1psuzO1d6AjaXKuOR9hrY0HuPsT6sV42B6myW34h1q4CRy+Y3g4RU/cGJeI/nNA==} 1451 | hasBin: true 1452 | requiresBuild: true 1453 | dev: true 1454 | 1455 | /escalade/3.1.1: 1456 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1457 | engines: {node: '>=6'} 1458 | dev: true 1459 | 1460 | /escape-html/1.0.3: 1461 | resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=} 1462 | 1463 | /escape-string-regexp/1.0.5: 1464 | resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} 1465 | engines: {node: '>=0.8.0'} 1466 | dev: true 1467 | 1468 | /escape-string-regexp/4.0.0: 1469 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1470 | engines: {node: '>=10'} 1471 | dev: true 1472 | 1473 | /escodegen/2.0.0: 1474 | resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} 1475 | engines: {node: '>=6.0'} 1476 | hasBin: true 1477 | dependencies: 1478 | esprima: 4.0.1 1479 | estraverse: 5.2.0 1480 | esutils: 2.0.3 1481 | optionator: 0.8.3 1482 | optionalDependencies: 1483 | source-map: 0.6.1 1484 | dev: true 1485 | 1486 | /eslint-scope/5.1.1: 1487 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 1488 | engines: {node: '>=8.0.0'} 1489 | dependencies: 1490 | esrecurse: 4.3.0 1491 | estraverse: 4.3.0 1492 | dev: true 1493 | 1494 | /eslint-utils/2.1.0: 1495 | resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} 1496 | engines: {node: '>=6'} 1497 | dependencies: 1498 | eslint-visitor-keys: 1.3.0 1499 | dev: true 1500 | 1501 | /eslint-utils/3.0.0_eslint@7.32.0: 1502 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 1503 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 1504 | peerDependencies: 1505 | eslint: '>=5' 1506 | dependencies: 1507 | eslint: 7.32.0 1508 | eslint-visitor-keys: 2.1.0 1509 | dev: true 1510 | 1511 | /eslint-visitor-keys/1.3.0: 1512 | resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} 1513 | engines: {node: '>=4'} 1514 | dev: true 1515 | 1516 | /eslint-visitor-keys/2.1.0: 1517 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 1518 | engines: {node: '>=10'} 1519 | dev: true 1520 | 1521 | /eslint/7.32.0: 1522 | resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} 1523 | engines: {node: ^10.12.0 || >=12.0.0} 1524 | hasBin: true 1525 | dependencies: 1526 | '@babel/code-frame': 7.12.11 1527 | '@eslint/eslintrc': 0.4.3 1528 | '@humanwhocodes/config-array': 0.5.0 1529 | ajv: 6.12.6 1530 | chalk: 4.1.1 1531 | cross-spawn: 7.0.3 1532 | debug: 4.3.2 1533 | doctrine: 3.0.0 1534 | enquirer: 2.3.6 1535 | escape-string-regexp: 4.0.0 1536 | eslint-scope: 5.1.1 1537 | eslint-utils: 2.1.0 1538 | eslint-visitor-keys: 2.1.0 1539 | espree: 7.3.1 1540 | esquery: 1.4.0 1541 | esutils: 2.0.3 1542 | fast-deep-equal: 3.1.3 1543 | file-entry-cache: 6.0.1 1544 | functional-red-black-tree: 1.0.1 1545 | glob-parent: 5.1.2 1546 | globals: 13.9.0 1547 | ignore: 4.0.6 1548 | import-fresh: 3.3.0 1549 | imurmurhash: 0.1.4 1550 | is-glob: 4.0.1 1551 | js-yaml: 3.14.1 1552 | json-stable-stringify-without-jsonify: 1.0.1 1553 | levn: 0.4.1 1554 | lodash.merge: 4.6.2 1555 | minimatch: 3.0.4 1556 | natural-compare: 1.4.0 1557 | optionator: 0.9.1 1558 | progress: 2.0.3 1559 | regexpp: 3.1.0 1560 | semver: 7.3.5 1561 | strip-ansi: 6.0.0 1562 | strip-json-comments: 3.1.1 1563 | table: 6.7.1 1564 | text-table: 0.2.0 1565 | v8-compile-cache: 2.3.0 1566 | transitivePeerDependencies: 1567 | - supports-color 1568 | dev: true 1569 | 1570 | /espree/7.3.1: 1571 | resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} 1572 | engines: {node: ^10.12.0 || >=12.0.0} 1573 | dependencies: 1574 | acorn: 7.4.1 1575 | acorn-jsx: 5.3.1_acorn@7.4.1 1576 | eslint-visitor-keys: 1.3.0 1577 | dev: true 1578 | 1579 | /esprima/4.0.1: 1580 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1581 | engines: {node: '>=4'} 1582 | hasBin: true 1583 | dev: true 1584 | 1585 | /esquery/1.4.0: 1586 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 1587 | engines: {node: '>=0.10'} 1588 | dependencies: 1589 | estraverse: 5.2.0 1590 | dev: true 1591 | 1592 | /esrecurse/4.3.0: 1593 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1594 | engines: {node: '>=4.0'} 1595 | dependencies: 1596 | estraverse: 5.2.0 1597 | dev: true 1598 | 1599 | /estraverse/4.3.0: 1600 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1601 | engines: {node: '>=4.0'} 1602 | dev: true 1603 | 1604 | /estraverse/5.2.0: 1605 | resolution: {integrity: sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==} 1606 | engines: {node: '>=4.0'} 1607 | dev: true 1608 | 1609 | /estree-walker/1.0.1: 1610 | resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} 1611 | dev: false 1612 | 1613 | /estree-walker/2.0.2: 1614 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1615 | 1616 | /esutils/2.0.3: 1617 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1618 | engines: {node: '>=0.10.0'} 1619 | dev: true 1620 | 1621 | /extend/3.0.2: 1622 | resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} 1623 | dev: true 1624 | 1625 | /fast-deep-equal/3.1.3: 1626 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1627 | dev: true 1628 | 1629 | /fast-glob/3.2.7: 1630 | resolution: {integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==} 1631 | engines: {node: '>=8'} 1632 | dependencies: 1633 | '@nodelib/fs.stat': 2.0.5 1634 | '@nodelib/fs.walk': 1.2.7 1635 | glob-parent: 5.1.2 1636 | merge2: 1.4.1 1637 | micromatch: 4.0.4 1638 | dev: true 1639 | 1640 | /fast-json-stable-stringify/2.1.0: 1641 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1642 | dev: true 1643 | 1644 | /fast-levenshtein/2.0.6: 1645 | resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} 1646 | dev: true 1647 | 1648 | /fastq/1.11.0: 1649 | resolution: {integrity: sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==} 1650 | dependencies: 1651 | reusify: 1.0.4 1652 | dev: true 1653 | 1654 | /file-entry-cache/6.0.1: 1655 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1656 | engines: {node: ^10.12.0 || >=12.0.0} 1657 | dependencies: 1658 | flat-cache: 3.0.4 1659 | dev: true 1660 | 1661 | /fill-range/7.0.1: 1662 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1663 | engines: {node: '>=8'} 1664 | dependencies: 1665 | to-regex-range: 5.0.1 1666 | dev: true 1667 | 1668 | /finalhandler/1.1.2: 1669 | resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} 1670 | engines: {node: '>= 0.8'} 1671 | dependencies: 1672 | debug: 2.6.9 1673 | encodeurl: 1.0.2 1674 | escape-html: 1.0.3 1675 | on-finished: 2.3.0 1676 | parseurl: 1.3.3 1677 | statuses: 1.5.0 1678 | unpipe: 1.0.0 1679 | dev: false 1680 | 1681 | /flat-cache/3.0.4: 1682 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1683 | engines: {node: ^10.12.0 || >=12.0.0} 1684 | dependencies: 1685 | flatted: 3.1.1 1686 | rimraf: 3.0.2 1687 | dev: true 1688 | 1689 | /flatted/3.1.1: 1690 | resolution: {integrity: sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==} 1691 | dev: true 1692 | 1693 | /foreach/2.0.5: 1694 | resolution: {integrity: sha1-C+4AUBiusmDQo6865ljdATbsG5k=} 1695 | dev: true 1696 | 1697 | /form-data/3.0.1: 1698 | resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} 1699 | engines: {node: '>= 6'} 1700 | dependencies: 1701 | asynckit: 0.4.0 1702 | combined-stream: 1.0.8 1703 | mime-types: 2.1.32 1704 | dev: true 1705 | 1706 | /fs.realpath/1.0.0: 1707 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} 1708 | dev: true 1709 | 1710 | /fsevents/2.3.2: 1711 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1712 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1713 | os: [darwin] 1714 | dev: true 1715 | optional: true 1716 | 1717 | /function-bind/1.1.1: 1718 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1719 | dev: true 1720 | 1721 | /functional-red-black-tree/1.0.1: 1722 | resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} 1723 | dev: true 1724 | 1725 | /generic-names/2.0.1: 1726 | resolution: {integrity: sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==} 1727 | dependencies: 1728 | loader-utils: 1.4.0 1729 | dev: true 1730 | 1731 | /gensync/1.0.0-beta.2: 1732 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1733 | engines: {node: '>=6.9.0'} 1734 | dev: true 1735 | 1736 | /get-intrinsic/1.1.1: 1737 | resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} 1738 | dependencies: 1739 | function-bind: 1.1.1 1740 | has: 1.0.3 1741 | has-symbols: 1.0.2 1742 | dev: true 1743 | 1744 | /glob-parent/5.1.2: 1745 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1746 | engines: {node: '>= 6'} 1747 | dependencies: 1748 | is-glob: 4.0.1 1749 | dev: true 1750 | 1751 | /glob/7.1.7: 1752 | resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} 1753 | dependencies: 1754 | fs.realpath: 1.0.0 1755 | inflight: 1.0.6 1756 | inherits: 2.0.4 1757 | minimatch: 3.0.4 1758 | once: 1.4.0 1759 | path-is-absolute: 1.0.1 1760 | dev: true 1761 | 1762 | /globals/11.12.0: 1763 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1764 | engines: {node: '>=4'} 1765 | dev: true 1766 | 1767 | /globals/13.9.0: 1768 | resolution: {integrity: sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==} 1769 | engines: {node: '>=8'} 1770 | dependencies: 1771 | type-fest: 0.20.2 1772 | dev: true 1773 | 1774 | /globby/11.0.3: 1775 | resolution: {integrity: sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==} 1776 | engines: {node: '>=10'} 1777 | dependencies: 1778 | array-union: 2.1.0 1779 | dir-glob: 3.0.1 1780 | fast-glob: 3.2.7 1781 | ignore: 5.1.8 1782 | merge2: 1.4.1 1783 | slash: 3.0.0 1784 | dev: true 1785 | 1786 | /has-bigints/1.0.1: 1787 | resolution: {integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==} 1788 | dev: true 1789 | 1790 | /has-flag/3.0.0: 1791 | resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} 1792 | engines: {node: '>=4'} 1793 | dev: true 1794 | 1795 | /has-flag/4.0.0: 1796 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1797 | engines: {node: '>=8'} 1798 | dev: true 1799 | 1800 | /has-symbols/1.0.2: 1801 | resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==} 1802 | engines: {node: '>= 0.4'} 1803 | dev: true 1804 | 1805 | /has/1.0.3: 1806 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1807 | engines: {node: '>= 0.4.0'} 1808 | dependencies: 1809 | function-bind: 1.1.1 1810 | dev: true 1811 | 1812 | /hash-sum/2.0.0: 1813 | resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} 1814 | dev: true 1815 | 1816 | /hast-to-hyperscript/9.0.1: 1817 | resolution: {integrity: sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==} 1818 | dependencies: 1819 | '@types/unist': 2.0.6 1820 | comma-separated-tokens: 1.0.8 1821 | property-information: 5.6.0 1822 | space-separated-tokens: 1.1.5 1823 | style-to-object: 0.3.0 1824 | unist-util-is: 4.1.0 1825 | web-namespaces: 1.1.4 1826 | dev: true 1827 | 1828 | /hast-util-from-parse5/6.0.1: 1829 | resolution: {integrity: sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==} 1830 | dependencies: 1831 | '@types/parse5': 5.0.3 1832 | hastscript: 6.0.0 1833 | property-information: 5.6.0 1834 | vfile: 4.2.1 1835 | vfile-location: 3.2.0 1836 | web-namespaces: 1.1.4 1837 | dev: true 1838 | 1839 | /hast-util-parse-selector/2.2.5: 1840 | resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} 1841 | dev: true 1842 | 1843 | /hast-util-raw/6.0.1: 1844 | resolution: {integrity: sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==} 1845 | dependencies: 1846 | '@types/hast': 2.3.2 1847 | hast-util-from-parse5: 6.0.1 1848 | hast-util-to-parse5: 6.0.0 1849 | html-void-elements: 1.0.5 1850 | parse5: 6.0.1 1851 | unist-util-position: 3.1.0 1852 | vfile: 4.2.1 1853 | web-namespaces: 1.1.4 1854 | xtend: 4.0.2 1855 | zwitch: 1.0.5 1856 | dev: true 1857 | 1858 | /hast-util-to-parse5/6.0.0: 1859 | resolution: {integrity: sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==} 1860 | dependencies: 1861 | hast-to-hyperscript: 9.0.1 1862 | property-information: 5.6.0 1863 | web-namespaces: 1.1.4 1864 | xtend: 4.0.2 1865 | zwitch: 1.0.5 1866 | dev: true 1867 | 1868 | /hastscript/6.0.0: 1869 | resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} 1870 | dependencies: 1871 | '@types/hast': 2.3.2 1872 | comma-separated-tokens: 1.0.8 1873 | hast-util-parse-selector: 2.2.5 1874 | property-information: 5.6.0 1875 | space-separated-tokens: 1.1.5 1876 | dev: true 1877 | 1878 | /history/4.10.1: 1879 | resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} 1880 | dependencies: 1881 | '@babel/runtime': 7.14.0 1882 | loose-envify: 1.4.0 1883 | resolve-pathname: 3.0.0 1884 | tiny-invariant: 1.1.0 1885 | tiny-warning: 1.0.3 1886 | value-equal: 1.0.1 1887 | dev: false 1888 | 1889 | /hoist-non-react-statics/3.3.2: 1890 | resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} 1891 | dependencies: 1892 | react-is: 16.13.1 1893 | dev: false 1894 | 1895 | /html-encoding-sniffer/2.0.1: 1896 | resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} 1897 | engines: {node: '>=10'} 1898 | dependencies: 1899 | whatwg-encoding: 1.0.5 1900 | dev: true 1901 | 1902 | /html-parse-stringify/3.0.1: 1903 | resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} 1904 | dependencies: 1905 | void-elements: 3.1.0 1906 | dev: false 1907 | 1908 | /html-void-elements/1.0.5: 1909 | resolution: {integrity: sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==} 1910 | dev: true 1911 | 1912 | /http-proxy-agent/4.0.1: 1913 | resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} 1914 | engines: {node: '>= 6'} 1915 | dependencies: 1916 | '@tootallnate/once': 1.1.2 1917 | agent-base: 6.0.2 1918 | debug: 4.3.2 1919 | transitivePeerDependencies: 1920 | - supports-color 1921 | dev: true 1922 | 1923 | /https-proxy-agent/5.0.0: 1924 | resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} 1925 | engines: {node: '>= 6'} 1926 | dependencies: 1927 | agent-base: 6.0.2 1928 | debug: 4.3.2 1929 | transitivePeerDependencies: 1930 | - supports-color 1931 | dev: true 1932 | 1933 | /i18next/20.3.5: 1934 | resolution: {integrity: sha512-//MGeU6n4TencJmCgG+TCrpdgAD/NDEU/KfKQekYbJX6QV7sD/NjWQdVdBi+bkT0snegnSoB7QhjSeatrk3a0w==} 1935 | dependencies: 1936 | '@babel/runtime': 7.14.8 1937 | dev: false 1938 | 1939 | /iconv-lite/0.4.24: 1940 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1941 | engines: {node: '>=0.10.0'} 1942 | dependencies: 1943 | safer-buffer: 2.1.2 1944 | dev: true 1945 | 1946 | /icss-replace-symbols/1.1.0: 1947 | resolution: {integrity: sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=} 1948 | dev: true 1949 | 1950 | /icss-utils/5.1.0_postcss@8.3.6: 1951 | resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} 1952 | engines: {node: ^10 || ^12 || >= 14} 1953 | peerDependencies: 1954 | postcss: ^8.1.0 1955 | dependencies: 1956 | postcss: 8.3.6 1957 | dev: true 1958 | 1959 | /ignore/4.0.6: 1960 | resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} 1961 | engines: {node: '>= 4'} 1962 | dev: true 1963 | 1964 | /ignore/5.1.8: 1965 | resolution: {integrity: sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==} 1966 | engines: {node: '>= 4'} 1967 | dev: true 1968 | 1969 | /import-fresh/3.3.0: 1970 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1971 | engines: {node: '>=6'} 1972 | dependencies: 1973 | parent-module: 1.0.1 1974 | resolve-from: 4.0.0 1975 | dev: true 1976 | 1977 | /imurmurhash/0.1.4: 1978 | resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} 1979 | engines: {node: '>=0.8.19'} 1980 | dev: true 1981 | 1982 | /inflight/1.0.6: 1983 | resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} 1984 | dependencies: 1985 | once: 1.4.0 1986 | wrappy: 1.0.2 1987 | dev: true 1988 | 1989 | /inherits/2.0.4: 1990 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1991 | dev: true 1992 | 1993 | /inline-style-parser/0.1.1: 1994 | resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} 1995 | dev: true 1996 | 1997 | /invariant/2.2.4: 1998 | resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} 1999 | dependencies: 2000 | loose-envify: 1.4.0 2001 | dev: false 2002 | 2003 | /is-alphabetical/1.0.4: 2004 | resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} 2005 | dev: true 2006 | 2007 | /is-alphanumerical/1.0.4: 2008 | resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} 2009 | dependencies: 2010 | is-alphabetical: 1.0.4 2011 | is-decimal: 1.0.4 2012 | dev: true 2013 | 2014 | /is-arguments/1.1.0: 2015 | resolution: {integrity: sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==} 2016 | engines: {node: '>= 0.4'} 2017 | dependencies: 2018 | call-bind: 1.0.2 2019 | dev: true 2020 | 2021 | /is-bigint/1.0.2: 2022 | resolution: {integrity: sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==} 2023 | dev: true 2024 | 2025 | /is-boolean-object/1.1.1: 2026 | resolution: {integrity: sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==} 2027 | engines: {node: '>= 0.4'} 2028 | dependencies: 2029 | call-bind: 1.0.2 2030 | dev: true 2031 | 2032 | /is-buffer/2.0.5: 2033 | resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} 2034 | engines: {node: '>=4'} 2035 | dev: true 2036 | 2037 | /is-callable/1.2.3: 2038 | resolution: {integrity: sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==} 2039 | engines: {node: '>= 0.4'} 2040 | dev: true 2041 | 2042 | /is-core-module/2.5.0: 2043 | resolution: {integrity: sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==} 2044 | dependencies: 2045 | has: 1.0.3 2046 | dev: true 2047 | 2048 | /is-date-object/1.0.4: 2049 | resolution: {integrity: sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==} 2050 | engines: {node: '>= 0.4'} 2051 | dev: true 2052 | 2053 | /is-decimal/1.0.4: 2054 | resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} 2055 | dev: true 2056 | 2057 | /is-extglob/2.1.1: 2058 | resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} 2059 | engines: {node: '>=0.10.0'} 2060 | dev: true 2061 | 2062 | /is-fullwidth-code-point/3.0.0: 2063 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 2064 | engines: {node: '>=8'} 2065 | dev: true 2066 | 2067 | /is-glob/4.0.1: 2068 | resolution: {integrity: sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==} 2069 | engines: {node: '>=0.10.0'} 2070 | dependencies: 2071 | is-extglob: 2.1.1 2072 | dev: true 2073 | 2074 | /is-hexadecimal/1.0.4: 2075 | resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} 2076 | dev: true 2077 | 2078 | /is-map/2.0.2: 2079 | resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} 2080 | dev: true 2081 | 2082 | /is-negative-zero/2.0.1: 2083 | resolution: {integrity: sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==} 2084 | engines: {node: '>= 0.4'} 2085 | dev: true 2086 | 2087 | /is-number-object/1.0.5: 2088 | resolution: {integrity: sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==} 2089 | engines: {node: '>= 0.4'} 2090 | dev: true 2091 | 2092 | /is-number/7.0.0: 2093 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 2094 | engines: {node: '>=0.12.0'} 2095 | dev: true 2096 | 2097 | /is-plain-obj/2.1.0: 2098 | resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} 2099 | engines: {node: '>=8'} 2100 | dev: true 2101 | 2102 | /is-potential-custom-element-name/1.0.1: 2103 | resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} 2104 | dev: true 2105 | 2106 | /is-regex/1.1.3: 2107 | resolution: {integrity: sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==} 2108 | engines: {node: '>= 0.4'} 2109 | dependencies: 2110 | call-bind: 1.0.2 2111 | has-symbols: 1.0.2 2112 | dev: true 2113 | 2114 | /is-set/2.0.2: 2115 | resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} 2116 | dev: true 2117 | 2118 | /is-string/1.0.6: 2119 | resolution: {integrity: sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==} 2120 | engines: {node: '>= 0.4'} 2121 | dev: true 2122 | 2123 | /is-symbol/1.0.4: 2124 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 2125 | engines: {node: '>= 0.4'} 2126 | dependencies: 2127 | has-symbols: 1.0.2 2128 | dev: true 2129 | 2130 | /is-typed-array/1.1.5: 2131 | resolution: {integrity: sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==} 2132 | engines: {node: '>= 0.4'} 2133 | dependencies: 2134 | available-typed-arrays: 1.0.4 2135 | call-bind: 1.0.2 2136 | es-abstract: 1.18.3 2137 | foreach: 2.0.5 2138 | has-symbols: 1.0.2 2139 | dev: true 2140 | 2141 | /is-weakmap/2.0.1: 2142 | resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} 2143 | dev: true 2144 | 2145 | /is-weakset/2.0.1: 2146 | resolution: {integrity: sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==} 2147 | dev: true 2148 | 2149 | /is-whitespace-character/1.0.4: 2150 | resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} 2151 | dev: true 2152 | 2153 | /is-word-character/1.0.4: 2154 | resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} 2155 | dev: true 2156 | 2157 | /isarray/0.0.1: 2158 | resolution: {integrity: sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=} 2159 | dev: false 2160 | 2161 | /isarray/2.0.5: 2162 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 2163 | dev: true 2164 | 2165 | /isexe/2.0.0: 2166 | resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} 2167 | dev: true 2168 | 2169 | /jest-diff/26.6.2: 2170 | resolution: {integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==} 2171 | engines: {node: '>= 10.14.2'} 2172 | dependencies: 2173 | chalk: 4.1.1 2174 | diff-sequences: 26.6.2 2175 | jest-get-type: 26.3.0 2176 | pretty-format: 26.6.2 2177 | dev: true 2178 | 2179 | /jest-get-type/26.3.0: 2180 | resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} 2181 | engines: {node: '>= 10.14.2'} 2182 | dev: true 2183 | 2184 | /jiti/1.11.0: 2185 | resolution: {integrity: sha512-/2c7e61hxxTIN34UeHBB0LCJ5Tq64kgJDV7GR+++e8XRxCKRIKmB8tH6ww1W+Z6Kgd6By+C3RSCu1lXjbPT68A==} 2186 | hasBin: true 2187 | dev: true 2188 | 2189 | /js-tokens/4.0.0: 2190 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2191 | 2192 | /js-yaml/3.14.1: 2193 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 2194 | hasBin: true 2195 | dependencies: 2196 | argparse: 1.0.10 2197 | esprima: 4.0.1 2198 | dev: true 2199 | 2200 | /jsdom/16.7.0: 2201 | resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} 2202 | engines: {node: '>=10'} 2203 | peerDependencies: 2204 | canvas: ^2.5.0 2205 | peerDependenciesMeta: 2206 | canvas: 2207 | optional: true 2208 | dependencies: 2209 | abab: 2.0.5 2210 | acorn: 8.4.1 2211 | acorn-globals: 6.0.0 2212 | cssom: 0.4.4 2213 | cssstyle: 2.3.0 2214 | data-urls: 2.0.0 2215 | decimal.js: 10.3.1 2216 | domexception: 2.0.1 2217 | escodegen: 2.0.0 2218 | form-data: 3.0.1 2219 | html-encoding-sniffer: 2.0.1 2220 | http-proxy-agent: 4.0.1 2221 | https-proxy-agent: 5.0.0 2222 | is-potential-custom-element-name: 1.0.1 2223 | nwsapi: 2.2.0 2224 | parse5: 6.0.1 2225 | saxes: 5.0.1 2226 | symbol-tree: 3.2.4 2227 | tough-cookie: 4.0.0 2228 | w3c-hr-time: 1.0.2 2229 | w3c-xmlserializer: 2.0.0 2230 | webidl-conversions: 6.1.0 2231 | whatwg-encoding: 1.0.5 2232 | whatwg-mimetype: 2.3.0 2233 | whatwg-url: 8.7.0 2234 | ws: 7.5.3 2235 | xml-name-validator: 3.0.0 2236 | transitivePeerDependencies: 2237 | - bufferutil 2238 | - supports-color 2239 | - utf-8-validate 2240 | dev: true 2241 | 2242 | /jsesc/2.5.2: 2243 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 2244 | engines: {node: '>=4'} 2245 | hasBin: true 2246 | dev: true 2247 | 2248 | /json-schema-traverse/0.4.1: 2249 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2250 | dev: true 2251 | 2252 | /json-schema-traverse/1.0.0: 2253 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 2254 | dev: true 2255 | 2256 | /json-stable-stringify-without-jsonify/1.0.1: 2257 | resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} 2258 | dev: true 2259 | 2260 | /json5/1.0.1: 2261 | resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} 2262 | hasBin: true 2263 | dependencies: 2264 | minimist: 1.2.5 2265 | dev: true 2266 | 2267 | /json5/2.2.0: 2268 | resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==} 2269 | engines: {node: '>=6'} 2270 | hasBin: true 2271 | dependencies: 2272 | minimist: 1.2.5 2273 | dev: true 2274 | 2275 | /levn/0.3.0: 2276 | resolution: {integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=} 2277 | engines: {node: '>= 0.8.0'} 2278 | dependencies: 2279 | prelude-ls: 1.1.2 2280 | type-check: 0.3.2 2281 | dev: true 2282 | 2283 | /levn/0.4.1: 2284 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2285 | engines: {node: '>= 0.8.0'} 2286 | dependencies: 2287 | prelude-ls: 1.2.1 2288 | type-check: 0.4.0 2289 | dev: true 2290 | 2291 | /loader-utils/1.4.0: 2292 | resolution: {integrity: sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==} 2293 | engines: {node: '>=4.0.0'} 2294 | dependencies: 2295 | big.js: 5.2.2 2296 | emojis-list: 3.0.0 2297 | json5: 1.0.1 2298 | dev: true 2299 | 2300 | /lodash.camelcase/4.3.0: 2301 | resolution: {integrity: sha1-soqmKIorn8ZRA1x3EfZathkDMaY=} 2302 | dev: true 2303 | 2304 | /lodash.clonedeep/4.5.0: 2305 | resolution: {integrity: sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=} 2306 | dev: true 2307 | 2308 | /lodash.merge/4.6.2: 2309 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2310 | dev: true 2311 | 2312 | /lodash.truncate/4.4.2: 2313 | resolution: {integrity: sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=} 2314 | dev: true 2315 | 2316 | /lodash.uniq/4.5.0: 2317 | resolution: {integrity: sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=} 2318 | dev: true 2319 | 2320 | /lodash/4.17.21: 2321 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 2322 | dev: true 2323 | 2324 | /loose-envify/1.4.0: 2325 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 2326 | hasBin: true 2327 | dependencies: 2328 | js-tokens: 4.0.0 2329 | dev: false 2330 | 2331 | /lru-cache/5.1.1: 2332 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 2333 | dependencies: 2334 | yallist: 3.1.1 2335 | dev: true 2336 | 2337 | /lru-cache/6.0.0: 2338 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2339 | engines: {node: '>=10'} 2340 | dependencies: 2341 | yallist: 4.0.0 2342 | dev: true 2343 | 2344 | /magic-string/0.25.7: 2345 | resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==} 2346 | dependencies: 2347 | sourcemap-codec: 1.4.8 2348 | 2349 | /markdown-escapes/1.0.4: 2350 | resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} 2351 | dev: true 2352 | 2353 | /mdast-squeeze-paragraphs/4.0.0: 2354 | resolution: {integrity: sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==} 2355 | dependencies: 2356 | unist-util-remove: 2.1.0 2357 | dev: true 2358 | 2359 | /mdast-util-definitions/4.0.0: 2360 | resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==} 2361 | dependencies: 2362 | unist-util-visit: 2.0.3 2363 | dev: true 2364 | 2365 | /mdast-util-to-hast/10.0.1: 2366 | resolution: {integrity: sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==} 2367 | dependencies: 2368 | '@types/mdast': 3.0.7 2369 | '@types/unist': 2.0.6 2370 | mdast-util-definitions: 4.0.0 2371 | mdurl: 1.0.1 2372 | unist-builder: 2.0.3 2373 | unist-util-generated: 1.1.6 2374 | unist-util-position: 3.1.0 2375 | unist-util-visit: 2.0.3 2376 | dev: true 2377 | 2378 | /mdurl/1.0.1: 2379 | resolution: {integrity: sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=} 2380 | dev: true 2381 | 2382 | /merge-source-map/1.1.0: 2383 | resolution: {integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==} 2384 | dependencies: 2385 | source-map: 0.6.1 2386 | dev: true 2387 | 2388 | /merge2/1.4.1: 2389 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2390 | engines: {node: '>= 8'} 2391 | dev: true 2392 | 2393 | /micromatch/4.0.4: 2394 | resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} 2395 | engines: {node: '>=8.6'} 2396 | dependencies: 2397 | braces: 3.0.2 2398 | picomatch: 2.3.0 2399 | dev: true 2400 | 2401 | /mime-db/1.49.0: 2402 | resolution: {integrity: sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==} 2403 | engines: {node: '>= 0.6'} 2404 | dev: true 2405 | 2406 | /mime-types/2.1.32: 2407 | resolution: {integrity: sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==} 2408 | engines: {node: '>= 0.6'} 2409 | dependencies: 2410 | mime-db: 1.49.0 2411 | dev: true 2412 | 2413 | /mini-create-react-context/0.4.1_prop-types@15.7.2+react@17.0.2: 2414 | resolution: {integrity: sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==} 2415 | peerDependencies: 2416 | prop-types: ^15.0.0 2417 | react: ^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 2418 | dependencies: 2419 | '@babel/runtime': 7.14.0 2420 | prop-types: 15.7.2 2421 | react: 17.0.2 2422 | tiny-warning: 1.0.3 2423 | dev: false 2424 | 2425 | /minimatch/3.0.4: 2426 | resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} 2427 | dependencies: 2428 | brace-expansion: 1.1.11 2429 | dev: true 2430 | 2431 | /minimist/1.2.5: 2432 | resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} 2433 | dev: true 2434 | 2435 | /ms/2.0.0: 2436 | resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} 2437 | dev: false 2438 | 2439 | /ms/2.1.2: 2440 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2441 | dev: true 2442 | 2443 | /nanoid/3.1.23: 2444 | resolution: {integrity: sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==} 2445 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2446 | hasBin: true 2447 | dev: true 2448 | 2449 | /natural-compare/1.4.0: 2450 | resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} 2451 | dev: true 2452 | 2453 | /node-fetch/2.6.1: 2454 | resolution: {integrity: sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==} 2455 | engines: {node: 4.x || >=6.0.0} 2456 | 2457 | /node-releases/1.1.73: 2458 | resolution: {integrity: sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==} 2459 | dev: true 2460 | 2461 | /nwsapi/2.2.0: 2462 | resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==} 2463 | dev: true 2464 | 2465 | /object-assign/4.1.1: 2466 | resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} 2467 | engines: {node: '>=0.10.0'} 2468 | 2469 | /object-inspect/1.10.3: 2470 | resolution: {integrity: sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==} 2471 | dev: true 2472 | 2473 | /object-is/1.1.5: 2474 | resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} 2475 | engines: {node: '>= 0.4'} 2476 | dependencies: 2477 | call-bind: 1.0.2 2478 | define-properties: 1.1.3 2479 | dev: true 2480 | 2481 | /object-keys/1.1.1: 2482 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2483 | engines: {node: '>= 0.4'} 2484 | dev: true 2485 | 2486 | /object.assign/4.1.2: 2487 | resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==} 2488 | engines: {node: '>= 0.4'} 2489 | dependencies: 2490 | call-bind: 1.0.2 2491 | define-properties: 1.1.3 2492 | has-symbols: 1.0.2 2493 | object-keys: 1.1.1 2494 | dev: true 2495 | 2496 | /on-finished/2.3.0: 2497 | resolution: {integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=} 2498 | engines: {node: '>= 0.8'} 2499 | dependencies: 2500 | ee-first: 1.1.1 2501 | dev: false 2502 | 2503 | /once/1.4.0: 2504 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} 2505 | dependencies: 2506 | wrappy: 1.0.2 2507 | dev: true 2508 | 2509 | /optionator/0.8.3: 2510 | resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} 2511 | engines: {node: '>= 0.8.0'} 2512 | dependencies: 2513 | deep-is: 0.1.3 2514 | fast-levenshtein: 2.0.6 2515 | levn: 0.3.0 2516 | prelude-ls: 1.1.2 2517 | type-check: 0.3.2 2518 | word-wrap: 1.2.3 2519 | dev: true 2520 | 2521 | /optionator/0.9.1: 2522 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 2523 | engines: {node: '>= 0.8.0'} 2524 | dependencies: 2525 | deep-is: 0.1.3 2526 | fast-levenshtein: 2.0.6 2527 | levn: 0.4.1 2528 | prelude-ls: 1.2.1 2529 | type-check: 0.4.0 2530 | word-wrap: 1.2.3 2531 | dev: true 2532 | 2533 | /parent-module/1.0.1: 2534 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2535 | engines: {node: '>=6'} 2536 | dependencies: 2537 | callsites: 3.1.0 2538 | dev: true 2539 | 2540 | /parse-entities/2.0.0: 2541 | resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} 2542 | dependencies: 2543 | character-entities: 1.2.4 2544 | character-entities-legacy: 1.1.4 2545 | character-reference-invalid: 1.1.4 2546 | is-alphanumerical: 1.0.4 2547 | is-decimal: 1.0.4 2548 | is-hexadecimal: 1.0.4 2549 | dev: true 2550 | 2551 | /parse-numeric-range/1.2.0: 2552 | resolution: {integrity: sha512-1q2tXpAOplPxcl8vrIGPWz1dJxxfmdRkCFcpxxMBerDnGuuHalOWF/xj9L8Nn5XoTUoB/6F0CeQBp2fMgkOYFg==} 2553 | dev: true 2554 | 2555 | /parse5-htmlparser2-tree-adapter/6.0.1: 2556 | resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} 2557 | dependencies: 2558 | parse5: 6.0.1 2559 | dev: true 2560 | 2561 | /parse5/6.0.1: 2562 | resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} 2563 | dev: true 2564 | 2565 | /parseurl/1.3.3: 2566 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 2567 | engines: {node: '>= 0.8'} 2568 | dev: false 2569 | 2570 | /path-is-absolute/1.0.1: 2571 | resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} 2572 | engines: {node: '>=0.10.0'} 2573 | dev: true 2574 | 2575 | /path-key/3.1.1: 2576 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2577 | engines: {node: '>=8'} 2578 | dev: true 2579 | 2580 | /path-parse/1.0.7: 2581 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2582 | dev: true 2583 | 2584 | /path-to-regexp/1.8.0: 2585 | resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} 2586 | dependencies: 2587 | isarray: 0.0.1 2588 | dev: false 2589 | 2590 | /path-type/4.0.0: 2591 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2592 | engines: {node: '>=8'} 2593 | dev: true 2594 | 2595 | /picomatch/2.3.0: 2596 | resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} 2597 | engines: {node: '>=8.6'} 2598 | 2599 | /pnpm/6.11.5: 2600 | resolution: {integrity: sha512-TXMSRyncP88F4GTdKFIIi3kdXSYf+v3uvIKLfNjPTt2YjsrbKmYNCR3VsGjYwlMVSnH2UEo2/sM2VNSefH9Isw==} 2601 | engines: {node: '>=12.17'} 2602 | hasBin: true 2603 | dev: true 2604 | 2605 | /postcss-modules-extract-imports/3.0.0_postcss@8.3.6: 2606 | resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} 2607 | engines: {node: ^10 || ^12 || >= 14} 2608 | peerDependencies: 2609 | postcss: ^8.1.0 2610 | dependencies: 2611 | postcss: 8.3.6 2612 | dev: true 2613 | 2614 | /postcss-modules-local-by-default/4.0.0_postcss@8.3.6: 2615 | resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==} 2616 | engines: {node: ^10 || ^12 || >= 14} 2617 | peerDependencies: 2618 | postcss: ^8.1.0 2619 | dependencies: 2620 | icss-utils: 5.1.0_postcss@8.3.6 2621 | postcss: 8.3.6 2622 | postcss-selector-parser: 6.0.6 2623 | postcss-value-parser: 4.1.0 2624 | dev: true 2625 | 2626 | /postcss-modules-scope/3.0.0_postcss@8.3.6: 2627 | resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} 2628 | engines: {node: ^10 || ^12 || >= 14} 2629 | peerDependencies: 2630 | postcss: ^8.1.0 2631 | dependencies: 2632 | postcss: 8.3.6 2633 | postcss-selector-parser: 6.0.6 2634 | dev: true 2635 | 2636 | /postcss-modules-values/4.0.0_postcss@8.3.6: 2637 | resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} 2638 | engines: {node: ^10 || ^12 || >= 14} 2639 | peerDependencies: 2640 | postcss: ^8.1.0 2641 | dependencies: 2642 | icss-utils: 5.1.0_postcss@8.3.6 2643 | postcss: 8.3.6 2644 | dev: true 2645 | 2646 | /postcss-modules/4.2.2_postcss@8.3.6: 2647 | resolution: {integrity: sha512-/H08MGEmaalv/OU8j6bUKi/kZr2kqGF6huAW8m9UAgOLWtpFdhA14+gPBoymtqyv+D4MLsmqaF2zvIegdCxJXg==} 2648 | peerDependencies: 2649 | postcss: ^8.0.0 2650 | dependencies: 2651 | generic-names: 2.0.1 2652 | icss-replace-symbols: 1.1.0 2653 | lodash.camelcase: 4.3.0 2654 | postcss: 8.3.6 2655 | postcss-modules-extract-imports: 3.0.0_postcss@8.3.6 2656 | postcss-modules-local-by-default: 4.0.0_postcss@8.3.6 2657 | postcss-modules-scope: 3.0.0_postcss@8.3.6 2658 | postcss-modules-values: 4.0.0_postcss@8.3.6 2659 | string-hash: 1.1.3 2660 | dev: true 2661 | 2662 | /postcss-selector-parser/6.0.6: 2663 | resolution: {integrity: sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==} 2664 | engines: {node: '>=4'} 2665 | dependencies: 2666 | cssesc: 3.0.0 2667 | util-deprecate: 1.0.2 2668 | dev: true 2669 | 2670 | /postcss-value-parser/4.1.0: 2671 | resolution: {integrity: sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==} 2672 | dev: true 2673 | 2674 | /postcss/8.3.6: 2675 | resolution: {integrity: sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==} 2676 | engines: {node: ^10 || ^12 || >=14} 2677 | dependencies: 2678 | colorette: 1.2.2 2679 | nanoid: 3.1.23 2680 | source-map-js: 0.6.2 2681 | dev: true 2682 | 2683 | /prelude-ls/1.1.2: 2684 | resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} 2685 | engines: {node: '>= 0.8.0'} 2686 | dev: true 2687 | 2688 | /prelude-ls/1.2.1: 2689 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2690 | engines: {node: '>= 0.8.0'} 2691 | dev: true 2692 | 2693 | /pretty-format/26.6.2: 2694 | resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} 2695 | engines: {node: '>= 10'} 2696 | dependencies: 2697 | '@jest/types': 26.6.2 2698 | ansi-regex: 5.0.0 2699 | ansi-styles: 4.3.0 2700 | react-is: 17.0.2 2701 | dev: true 2702 | 2703 | /prism-theme-vars/0.2.2: 2704 | resolution: {integrity: sha512-EL9ifuU/F8tEldoCa2sspiiLWysCL54xDbf2gN/ubwdtbuJROqOGopG5kSwunapwaioT+jLUQ/Ky+7jnv62xJA==} 2705 | dev: false 2706 | 2707 | /prismjs/1.24.1: 2708 | resolution: {integrity: sha512-mNPsedLuk90RVJioIky8ANZEwYm5w9LcvCXrxHlwf4fNVSn8jEipMybMkWUyyF0JhnC+C4VcOVSBuHRKs1L5Ow==} 2709 | dev: true 2710 | 2711 | /progress/2.0.3: 2712 | resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} 2713 | engines: {node: '>=0.4.0'} 2714 | dev: true 2715 | 2716 | /prop-types/15.7.2: 2717 | resolution: {integrity: sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==} 2718 | dependencies: 2719 | loose-envify: 1.4.0 2720 | object-assign: 4.1.1 2721 | react-is: 16.13.1 2722 | dev: false 2723 | 2724 | /property-information/5.6.0: 2725 | resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} 2726 | dependencies: 2727 | xtend: 4.0.2 2728 | dev: true 2729 | 2730 | /psl/1.8.0: 2731 | resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==} 2732 | dev: true 2733 | 2734 | /punycode/2.1.1: 2735 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 2736 | engines: {node: '>=6'} 2737 | dev: true 2738 | 2739 | /queue-microtask/1.2.3: 2740 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2741 | dev: true 2742 | 2743 | /react-dom/17.0.2_react@17.0.2: 2744 | resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} 2745 | peerDependencies: 2746 | react: 17.0.2 2747 | dependencies: 2748 | loose-envify: 1.4.0 2749 | object-assign: 4.1.1 2750 | react: 17.0.2 2751 | scheduler: 0.20.2 2752 | dev: false 2753 | 2754 | /react-fast-compare/3.2.0: 2755 | resolution: {integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==} 2756 | dev: false 2757 | 2758 | /react-helmet-async/1.0.9_react-dom@17.0.2+react@17.0.2: 2759 | resolution: {integrity: sha512-N+iUlo9WR3/u9qGMmP4jiYfaD6pe9IvDTapZLFJz2D3xlTlCM1Bzy4Ab3g72Nbajo/0ZyW+W9hdz8Hbe4l97pQ==} 2760 | peerDependencies: 2761 | react: ^16.6.0 || ^17.0.0 2762 | react-dom: ^16.6.0 || ^17.0.0 2763 | dependencies: 2764 | '@babel/runtime': 7.14.0 2765 | invariant: 2.2.4 2766 | prop-types: 15.7.2 2767 | react: 17.0.2 2768 | react-dom: 17.0.2_react@17.0.2 2769 | react-fast-compare: 3.2.0 2770 | shallowequal: 1.1.0 2771 | dev: false 2772 | 2773 | /react-i18next/11.11.4_i18next@20.3.5+react@17.0.2: 2774 | resolution: {integrity: sha512-ayWFlu8Sc7GAxW1PzMaPtzq+yiozWMxs0P1WeITNVzXAVRhC0Httkzw/IiODBta6seJRBCLrtUeFUSXhAIxlRg==} 2775 | peerDependencies: 2776 | i18next: '>= 19.0.0' 2777 | react: '>= 16.8.0' 2778 | dependencies: 2779 | '@babel/runtime': 7.14.8 2780 | html-parse-stringify: 3.0.1 2781 | i18next: 20.3.5 2782 | react: 17.0.2 2783 | dev: false 2784 | 2785 | /react-is/16.13.1: 2786 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 2787 | dev: false 2788 | 2789 | /react-is/17.0.2: 2790 | resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} 2791 | dev: true 2792 | 2793 | /react-refresh/0.10.0: 2794 | resolution: {integrity: sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==} 2795 | engines: {node: '>=0.10.0'} 2796 | dev: true 2797 | 2798 | /react-router-config/5.1.1_react-router@5.2.0+react@17.0.2: 2799 | resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} 2800 | peerDependencies: 2801 | react: '>=15' 2802 | react-router: '>=5' 2803 | dependencies: 2804 | '@babel/runtime': 7.14.8 2805 | react: 17.0.2 2806 | react-router: 5.2.0_react@17.0.2 2807 | dev: false 2808 | 2809 | /react-router-dom/5.2.0_react@17.0.2: 2810 | resolution: {integrity: sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==} 2811 | peerDependencies: 2812 | react: '>=15' 2813 | dependencies: 2814 | '@babel/runtime': 7.14.0 2815 | history: 4.10.1 2816 | loose-envify: 1.4.0 2817 | prop-types: 15.7.2 2818 | react: 17.0.2 2819 | react-router: 5.2.0_react@17.0.2 2820 | tiny-invariant: 1.1.0 2821 | tiny-warning: 1.0.3 2822 | dev: false 2823 | 2824 | /react-router/5.2.0_react@17.0.2: 2825 | resolution: {integrity: sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==} 2826 | peerDependencies: 2827 | react: '>=15' 2828 | dependencies: 2829 | '@babel/runtime': 7.14.0 2830 | history: 4.10.1 2831 | hoist-non-react-statics: 3.3.2 2832 | loose-envify: 1.4.0 2833 | mini-create-react-context: 0.4.1_prop-types@15.7.2+react@17.0.2 2834 | path-to-regexp: 1.8.0 2835 | prop-types: 15.7.2 2836 | react: 17.0.2 2837 | react-is: 16.13.1 2838 | tiny-invariant: 1.1.0 2839 | tiny-warning: 1.0.3 2840 | dev: false 2841 | 2842 | /react-ssr-prepass/1.4.0_react@17.0.2: 2843 | resolution: {integrity: sha512-0SzdmiQUtHvhxCabHg9BI/pkJfijGkQ0jQL6fC4YFy7idaDOuaiQLsajIkkNxffFXtJFHIWFITlve2WB88e0Jw==} 2844 | peerDependencies: 2845 | react: ^16.8.0 || ^17.0.0 2846 | dependencies: 2847 | react: 17.0.2 2848 | dev: false 2849 | 2850 | /react/17.0.2: 2851 | resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} 2852 | engines: {node: '>=0.10.0'} 2853 | dependencies: 2854 | loose-envify: 1.4.0 2855 | object-assign: 4.1.1 2856 | dev: false 2857 | 2858 | /regenerator-runtime/0.13.7: 2859 | resolution: {integrity: sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==} 2860 | dev: false 2861 | 2862 | /regenerator-runtime/0.13.9: 2863 | resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} 2864 | dev: false 2865 | 2866 | /regexp.prototype.flags/1.3.1: 2867 | resolution: {integrity: sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==} 2868 | engines: {node: '>= 0.4'} 2869 | dependencies: 2870 | call-bind: 1.0.2 2871 | define-properties: 1.1.3 2872 | dev: true 2873 | 2874 | /regexpp/3.1.0: 2875 | resolution: {integrity: sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==} 2876 | engines: {node: '>=8'} 2877 | dev: true 2878 | 2879 | /remark-footnotes/2.0.0: 2880 | resolution: {integrity: sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==} 2881 | dev: true 2882 | 2883 | /remark-mdx/1.6.22: 2884 | resolution: {integrity: sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==} 2885 | dependencies: 2886 | '@babel/core': 7.12.9 2887 | '@babel/helper-plugin-utils': 7.10.4 2888 | '@babel/plugin-proposal-object-rest-spread': 7.12.1_@babel+core@7.12.9 2889 | '@babel/plugin-syntax-jsx': 7.12.1_@babel+core@7.12.9 2890 | '@mdx-js/util': 1.6.22 2891 | is-alphabetical: 1.0.4 2892 | remark-parse: 8.0.3 2893 | unified: 9.2.0 2894 | transitivePeerDependencies: 2895 | - supports-color 2896 | dev: true 2897 | 2898 | /remark-parse/8.0.3: 2899 | resolution: {integrity: sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==} 2900 | dependencies: 2901 | ccount: 1.1.0 2902 | collapse-white-space: 1.0.6 2903 | is-alphabetical: 1.0.4 2904 | is-decimal: 1.0.4 2905 | is-whitespace-character: 1.0.4 2906 | is-word-character: 1.0.4 2907 | markdown-escapes: 1.0.4 2908 | parse-entities: 2.0.0 2909 | repeat-string: 1.6.1 2910 | state-toggle: 1.0.3 2911 | trim: 0.0.1 2912 | trim-trailing-lines: 1.1.4 2913 | unherit: 1.1.3 2914 | unist-util-remove-position: 2.0.1 2915 | vfile-location: 3.2.0 2916 | xtend: 4.0.2 2917 | dev: true 2918 | 2919 | /remark-prism/1.3.6: 2920 | resolution: {integrity: sha512-yYSXJ2MEK2DeD9UKDKFkQPcVqRx6aX2FYD1kE27ScogpZ/BBO8MoOO6gf/AKqfXvKGnP51wqvDEBmPseypgaug==} 2921 | dependencies: 2922 | classnames: 2.3.1 2923 | css-selector-parser: 1.4.1 2924 | escape-html: 1.0.3 2925 | jsdom: 16.7.0 2926 | parse-numeric-range: 1.2.0 2927 | parse5: 6.0.1 2928 | parse5-htmlparser2-tree-adapter: 6.0.1 2929 | prismjs: 1.24.1 2930 | unist-util-map: 2.0.1 2931 | transitivePeerDependencies: 2932 | - bufferutil 2933 | - canvas 2934 | - supports-color 2935 | - utf-8-validate 2936 | dev: true 2937 | 2938 | /remark-squeeze-paragraphs/4.0.0: 2939 | resolution: {integrity: sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==} 2940 | dependencies: 2941 | mdast-squeeze-paragraphs: 4.0.0 2942 | dev: true 2943 | 2944 | /repeat-string/1.6.1: 2945 | resolution: {integrity: sha1-jcrkcOHIirwtYA//Sndihtp15jc=} 2946 | engines: {node: '>=0.10'} 2947 | dev: true 2948 | 2949 | /require-from-string/2.0.2: 2950 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 2951 | engines: {node: '>=0.10.0'} 2952 | dev: true 2953 | 2954 | /resolve-from/4.0.0: 2955 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2956 | engines: {node: '>=4'} 2957 | dev: true 2958 | 2959 | /resolve-pathname/3.0.0: 2960 | resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} 2961 | dev: false 2962 | 2963 | /resolve/1.20.0: 2964 | resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} 2965 | dependencies: 2966 | is-core-module: 2.5.0 2967 | path-parse: 1.0.7 2968 | dev: true 2969 | 2970 | /reusify/1.0.4: 2971 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2972 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2973 | dev: true 2974 | 2975 | /rimraf/3.0.2: 2976 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2977 | hasBin: true 2978 | dependencies: 2979 | glob: 7.1.7 2980 | dev: true 2981 | 2982 | /rollup/2.51.1: 2983 | resolution: {integrity: sha512-8xfDbAtBleXotb6qKEHWuo/jkn94a9dVqGc7Rwl3sqspCVlnCfbRek7ldhCARSi7h32H0xR4QThm1t9zHN+3uw==} 2984 | engines: {node: '>=10.0.0'} 2985 | hasBin: true 2986 | optionalDependencies: 2987 | fsevents: 2.3.2 2988 | dev: true 2989 | 2990 | /run-parallel/1.2.0: 2991 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2992 | dependencies: 2993 | queue-microtask: 1.2.3 2994 | dev: true 2995 | 2996 | /safe-buffer/5.1.2: 2997 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 2998 | dev: true 2999 | 3000 | /safer-buffer/2.1.2: 3001 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 3002 | dev: true 3003 | 3004 | /saxes/5.0.1: 3005 | resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} 3006 | engines: {node: '>=10'} 3007 | dependencies: 3008 | xmlchars: 2.2.0 3009 | dev: true 3010 | 3011 | /scheduler/0.20.2: 3012 | resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} 3013 | dependencies: 3014 | loose-envify: 1.4.0 3015 | object-assign: 4.1.1 3016 | dev: false 3017 | 3018 | /semver/5.7.1: 3019 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} 3020 | hasBin: true 3021 | dev: true 3022 | 3023 | /semver/6.3.0: 3024 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 3025 | hasBin: true 3026 | dev: true 3027 | 3028 | /semver/7.3.5: 3029 | resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} 3030 | engines: {node: '>=10'} 3031 | hasBin: true 3032 | dependencies: 3033 | lru-cache: 6.0.0 3034 | dev: true 3035 | 3036 | /shallowequal/1.1.0: 3037 | resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} 3038 | dev: false 3039 | 3040 | /shebang-command/2.0.0: 3041 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 3042 | engines: {node: '>=8'} 3043 | dependencies: 3044 | shebang-regex: 3.0.0 3045 | dev: true 3046 | 3047 | /shebang-regex/3.0.0: 3048 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 3049 | engines: {node: '>=8'} 3050 | dev: true 3051 | 3052 | /side-channel/1.0.4: 3053 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 3054 | dependencies: 3055 | call-bind: 1.0.2 3056 | get-intrinsic: 1.1.1 3057 | object-inspect: 1.10.3 3058 | dev: true 3059 | 3060 | /slash/3.0.0: 3061 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 3062 | engines: {node: '>=8'} 3063 | dev: true 3064 | 3065 | /slice-ansi/4.0.0: 3066 | resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} 3067 | engines: {node: '>=10'} 3068 | dependencies: 3069 | ansi-styles: 4.3.0 3070 | astral-regex: 2.0.0 3071 | is-fullwidth-code-point: 3.0.0 3072 | dev: true 3073 | 3074 | /source-map-js/0.6.2: 3075 | resolution: {integrity: sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==} 3076 | engines: {node: '>=0.10.0'} 3077 | dev: true 3078 | 3079 | /source-map/0.5.7: 3080 | resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} 3081 | engines: {node: '>=0.10.0'} 3082 | dev: true 3083 | 3084 | /source-map/0.6.1: 3085 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 3086 | engines: {node: '>=0.10.0'} 3087 | 3088 | /sourcemap-codec/1.4.8: 3089 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 3090 | 3091 | /space-separated-tokens/1.1.5: 3092 | resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} 3093 | dev: true 3094 | 3095 | /sprintf-js/1.0.3: 3096 | resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} 3097 | dev: true 3098 | 3099 | /state-toggle/1.0.3: 3100 | resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==} 3101 | dev: true 3102 | 3103 | /statuses/1.5.0: 3104 | resolution: {integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=} 3105 | engines: {node: '>= 0.6'} 3106 | dev: false 3107 | 3108 | /string-hash/1.1.3: 3109 | resolution: {integrity: sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=} 3110 | dev: true 3111 | 3112 | /string-width/4.2.2: 3113 | resolution: {integrity: sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==} 3114 | engines: {node: '>=8'} 3115 | dependencies: 3116 | emoji-regex: 8.0.0 3117 | is-fullwidth-code-point: 3.0.0 3118 | strip-ansi: 6.0.0 3119 | dev: true 3120 | 3121 | /string.prototype.trimend/1.0.4: 3122 | resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==} 3123 | dependencies: 3124 | call-bind: 1.0.2 3125 | define-properties: 1.1.3 3126 | dev: true 3127 | 3128 | /string.prototype.trimstart/1.0.4: 3129 | resolution: {integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==} 3130 | dependencies: 3131 | call-bind: 1.0.2 3132 | define-properties: 1.1.3 3133 | dev: true 3134 | 3135 | /strip-ansi/6.0.0: 3136 | resolution: {integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==} 3137 | engines: {node: '>=8'} 3138 | dependencies: 3139 | ansi-regex: 5.0.0 3140 | dev: true 3141 | 3142 | /strip-json-comments/3.1.1: 3143 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 3144 | engines: {node: '>=8'} 3145 | dev: true 3146 | 3147 | /style-to-object/0.3.0: 3148 | resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} 3149 | dependencies: 3150 | inline-style-parser: 0.1.1 3151 | dev: true 3152 | 3153 | /supports-color/5.5.0: 3154 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 3155 | engines: {node: '>=4'} 3156 | dependencies: 3157 | has-flag: 3.0.0 3158 | dev: true 3159 | 3160 | /supports-color/7.2.0: 3161 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 3162 | engines: {node: '>=8'} 3163 | dependencies: 3164 | has-flag: 4.0.0 3165 | dev: true 3166 | 3167 | /symbol-tree/3.2.4: 3168 | resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} 3169 | dev: true 3170 | 3171 | /table/6.7.1: 3172 | resolution: {integrity: sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==} 3173 | engines: {node: '>=10.0.0'} 3174 | dependencies: 3175 | ajv: 8.6.0 3176 | lodash.clonedeep: 4.5.0 3177 | lodash.truncate: 4.4.2 3178 | slice-ansi: 4.0.0 3179 | string-width: 4.2.2 3180 | strip-ansi: 6.0.0 3181 | dev: true 3182 | 3183 | /text-table/0.2.0: 3184 | resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} 3185 | dev: true 3186 | 3187 | /tiny-invariant/1.1.0: 3188 | resolution: {integrity: sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==} 3189 | dev: false 3190 | 3191 | /tiny-warning/1.0.3: 3192 | resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} 3193 | dev: false 3194 | 3195 | /to-fast-properties/2.0.0: 3196 | resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} 3197 | engines: {node: '>=4'} 3198 | 3199 | /to-regex-range/5.0.1: 3200 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3201 | engines: {node: '>=8.0'} 3202 | dependencies: 3203 | is-number: 7.0.0 3204 | dev: true 3205 | 3206 | /tough-cookie/4.0.0: 3207 | resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} 3208 | engines: {node: '>=6'} 3209 | dependencies: 3210 | psl: 1.8.0 3211 | punycode: 2.1.1 3212 | universalify: 0.1.2 3213 | dev: true 3214 | 3215 | /tr46/2.1.0: 3216 | resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} 3217 | engines: {node: '>=8'} 3218 | dependencies: 3219 | punycode: 2.1.1 3220 | dev: true 3221 | 3222 | /trim-trailing-lines/1.1.4: 3223 | resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} 3224 | dev: true 3225 | 3226 | /trim/0.0.1: 3227 | resolution: {integrity: sha1-WFhUf2spB1fulczMZm+1AITEYN0=} 3228 | dev: true 3229 | 3230 | /trough/1.0.5: 3231 | resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} 3232 | dev: true 3233 | 3234 | /tslib/1.14.1: 3235 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 3236 | dev: true 3237 | 3238 | /tsutils/3.21.0_typescript@4.3.5: 3239 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 3240 | engines: {node: '>= 6'} 3241 | peerDependencies: 3242 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' 3243 | dependencies: 3244 | tslib: 1.14.1 3245 | typescript: 4.3.5 3246 | dev: true 3247 | 3248 | /type-check/0.3.2: 3249 | resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} 3250 | engines: {node: '>= 0.8.0'} 3251 | dependencies: 3252 | prelude-ls: 1.1.2 3253 | dev: true 3254 | 3255 | /type-check/0.4.0: 3256 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 3257 | engines: {node: '>= 0.8.0'} 3258 | dependencies: 3259 | prelude-ls: 1.2.1 3260 | dev: true 3261 | 3262 | /type-fest/0.20.2: 3263 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 3264 | engines: {node: '>=10'} 3265 | dev: true 3266 | 3267 | /typescript/4.3.5: 3268 | resolution: {integrity: sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==} 3269 | engines: {node: '>=4.2.0'} 3270 | hasBin: true 3271 | dev: true 3272 | 3273 | /unbox-primitive/1.0.1: 3274 | resolution: {integrity: sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==} 3275 | dependencies: 3276 | function-bind: 1.1.1 3277 | has-bigints: 1.0.1 3278 | has-symbols: 1.0.2 3279 | which-boxed-primitive: 1.0.2 3280 | dev: true 3281 | 3282 | /unherit/1.1.3: 3283 | resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} 3284 | dependencies: 3285 | inherits: 2.0.4 3286 | xtend: 4.0.2 3287 | dev: true 3288 | 3289 | /unified/9.2.0: 3290 | resolution: {integrity: sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==} 3291 | dependencies: 3292 | bail: 1.0.5 3293 | extend: 3.0.2 3294 | is-buffer: 2.0.5 3295 | is-plain-obj: 2.1.0 3296 | trough: 1.0.5 3297 | vfile: 4.2.1 3298 | dev: true 3299 | 3300 | /unified/9.2.2: 3301 | resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} 3302 | dependencies: 3303 | bail: 1.0.5 3304 | extend: 3.0.2 3305 | is-buffer: 2.0.5 3306 | is-plain-obj: 2.1.0 3307 | trough: 1.0.5 3308 | vfile: 4.2.1 3309 | dev: true 3310 | 3311 | /unist-builder/2.0.3: 3312 | resolution: {integrity: sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==} 3313 | dev: true 3314 | 3315 | /unist-util-generated/1.1.6: 3316 | resolution: {integrity: sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==} 3317 | dev: true 3318 | 3319 | /unist-util-is/4.1.0: 3320 | resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} 3321 | dev: true 3322 | 3323 | /unist-util-map/2.0.1: 3324 | resolution: {integrity: sha512-VdNvk4BQUUU9Rgr8iUOvclHa/iN9O+6Dt66FKij8l9OVezGG37gGWCPU5KSax1R2degqXFvl3kWTkvzL79e9tQ==} 3325 | dependencies: 3326 | '@types/mdast': 3.0.7 3327 | object-assign: 4.1.1 3328 | dev: true 3329 | 3330 | /unist-util-position/3.1.0: 3331 | resolution: {integrity: sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==} 3332 | dev: true 3333 | 3334 | /unist-util-remove-position/2.0.1: 3335 | resolution: {integrity: sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==} 3336 | dependencies: 3337 | unist-util-visit: 2.0.3 3338 | dev: true 3339 | 3340 | /unist-util-remove/2.1.0: 3341 | resolution: {integrity: sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==} 3342 | dependencies: 3343 | unist-util-is: 4.1.0 3344 | dev: true 3345 | 3346 | /unist-util-stringify-position/2.0.3: 3347 | resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} 3348 | dependencies: 3349 | '@types/unist': 2.0.6 3350 | dev: true 3351 | 3352 | /unist-util-visit-parents/3.1.1: 3353 | resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} 3354 | dependencies: 3355 | '@types/unist': 2.0.6 3356 | unist-util-is: 4.1.0 3357 | dev: true 3358 | 3359 | /unist-util-visit/2.0.3: 3360 | resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} 3361 | dependencies: 3362 | '@types/unist': 2.0.6 3363 | unist-util-is: 4.1.0 3364 | unist-util-visit-parents: 3.1.1 3365 | dev: true 3366 | 3367 | /universalify/0.1.2: 3368 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 3369 | engines: {node: '>= 4.0.0'} 3370 | dev: true 3371 | 3372 | /unpipe/1.0.0: 3373 | resolution: {integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=} 3374 | engines: {node: '>= 0.8'} 3375 | dev: false 3376 | 3377 | /uri-js/4.4.1: 3378 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3379 | dependencies: 3380 | punycode: 2.1.1 3381 | dev: true 3382 | 3383 | /util-deprecate/1.0.2: 3384 | resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} 3385 | dev: true 3386 | 3387 | /utils-merge/1.0.1: 3388 | resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} 3389 | engines: {node: '>= 0.4.0'} 3390 | dev: false 3391 | 3392 | /v8-compile-cache/2.3.0: 3393 | resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} 3394 | dev: true 3395 | 3396 | /value-equal/1.0.1: 3397 | resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} 3398 | dev: false 3399 | 3400 | /vfile-location/3.2.0: 3401 | resolution: {integrity: sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==} 3402 | dev: true 3403 | 3404 | /vfile-message/2.0.4: 3405 | resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} 3406 | dependencies: 3407 | '@types/unist': 2.0.6 3408 | unist-util-stringify-position: 2.0.3 3409 | dev: true 3410 | 3411 | /vfile/4.2.1: 3412 | resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} 3413 | dependencies: 3414 | '@types/unist': 2.0.6 3415 | is-buffer: 2.0.5 3416 | unist-util-stringify-position: 2.0.3 3417 | vfile-message: 2.0.4 3418 | dev: true 3419 | 3420 | /vite-plugin-mdx/3.5.6_@mdx-js+mdx@1.6.22+vite@2.4.4: 3421 | resolution: {integrity: sha512-KRc6/MN/ZSJEv3PxfPEM3p5NRAnhknK9RO3h86GqOcFCCaaB88WpsLxBWPqg5cWoI3uJm+Fp/ZGfs1Fd7cQnSw==} 3422 | peerDependencies: 3423 | '@mdx-js/mdx': '*' 3424 | vite: '*' 3425 | dependencies: 3426 | '@alloc/quick-lru': 5.2.0 3427 | '@mdx-js/mdx': 1.6.22 3428 | esbuild: 0.8.57 3429 | resolve: 1.20.0 3430 | unified: 9.2.2 3431 | vite: 2.4.4 3432 | dev: true 3433 | 3434 | /vite-plugin-pages/0.12.2_vite@2.4.4: 3435 | resolution: {integrity: sha512-snyTRXPo3I8vgi7E+O0QzADsFARpWx59Vb0n4PhI5ml4qUd3dcFnJTRvrstaMAl9H0j8OlcligsrHobsSD+1og==} 3436 | peerDependencies: 3437 | vite: ^2.0.0 3438 | vue: ^3.0.0 3439 | dependencies: 3440 | '@vue/compiler-sfc': 3.1.5 3441 | chalk: 4.1.1 3442 | debug: 4.3.2 3443 | deep-equal: 2.0.5 3444 | fast-glob: 3.2.7 3445 | json5: 2.2.0 3446 | vite: 2.4.4 3447 | yaml: 2.0.0-7 3448 | transitivePeerDependencies: 3449 | - supports-color 3450 | dev: true 3451 | 3452 | /vite-plugin-windicss/1.2.7_vite@2.4.4: 3453 | resolution: {integrity: sha512-JgIGsH5HPaz3ghDRhhLeF8VZQMUE+R0jD9u8sbne5KdBBa208r0IuTcx73V7CPcmsu7KABG6rfLgST9ffVoiDA==} 3454 | peerDependencies: 3455 | vite: ^2.0.1 3456 | dependencies: 3457 | '@windicss/plugin-utils': 1.2.7 3458 | chalk: 4.1.1 3459 | debug: 4.3.2 3460 | vite: 2.4.4 3461 | windicss: 3.1.6 3462 | transitivePeerDependencies: 3463 | - supports-color 3464 | dev: true 3465 | 3466 | /vite-ssr/0.12.0_f45c38ab9d74c0c9f98540462cb1bd4c: 3467 | resolution: {integrity: sha512-vmoyR9WR045BPJitXIU93GFT+NxfNDilf90nVeHq5NUnfbh10KgYZ4lZcwx1QcQ3gY5G6L4Da6zl3OccZqAfvg==} 3468 | hasBin: true 3469 | peerDependencies: 3470 | '@vueuse/head': ^0.5.0 3471 | react: ^16.8 || ^17 3472 | react-dom: ^16 || ^17 3473 | react-helmet-async: ^1.0.0 3474 | react-router-dom: ^5.0.0 3475 | vite: ^2.3.2 3476 | vue: ^3.0.0 3477 | vue-router: ^4.0.0 3478 | peerDependenciesMeta: 3479 | '@vueuse/head': 3480 | optional: true 3481 | react: 3482 | optional: true 3483 | react-dom: 3484 | optional: true 3485 | react-helmet-async: 3486 | optional: true 3487 | react-router-dom: 3488 | optional: true 3489 | vue: 3490 | optional: true 3491 | vue-router: 3492 | optional: true 3493 | dependencies: 3494 | '@rollup/plugin-replace': 3.0.0 3495 | '@vue/server-renderer': 3.1.1 3496 | connect: 3.7.0 3497 | node-fetch: 2.6.1 3498 | react: 17.0.2 3499 | react-dom: 17.0.2_react@17.0.2 3500 | react-helmet-async: 1.0.9_react-dom@17.0.2+react@17.0.2 3501 | react-router-dom: 5.2.0_react@17.0.2 3502 | react-ssr-prepass: 1.4.0_react@17.0.2 3503 | vite: 2.4.4 3504 | transitivePeerDependencies: 3505 | - rollup 3506 | dev: false 3507 | 3508 | /vite/2.4.4: 3509 | resolution: {integrity: sha512-m1wK6pFJKmaYA6AeZIUXyiAgUAAJzVXhIMYCdZUpCaFMGps0v0IlNJtbmPvkUhVEyautalajmnW5X6NboUPsnw==} 3510 | engines: {node: '>=12.0.0'} 3511 | hasBin: true 3512 | dependencies: 3513 | esbuild: 0.12.17 3514 | postcss: 8.3.6 3515 | resolve: 1.20.0 3516 | rollup: 2.51.1 3517 | optionalDependencies: 3518 | fsevents: 2.3.2 3519 | dev: true 3520 | 3521 | /void-elements/3.1.0: 3522 | resolution: {integrity: sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=} 3523 | engines: {node: '>=0.10.0'} 3524 | dev: false 3525 | 3526 | /w3c-hr-time/1.0.2: 3527 | resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} 3528 | dependencies: 3529 | browser-process-hrtime: 1.0.0 3530 | dev: true 3531 | 3532 | /w3c-xmlserializer/2.0.0: 3533 | resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} 3534 | engines: {node: '>=10'} 3535 | dependencies: 3536 | xml-name-validator: 3.0.0 3537 | dev: true 3538 | 3539 | /web-namespaces/1.1.4: 3540 | resolution: {integrity: sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==} 3541 | dev: true 3542 | 3543 | /webidl-conversions/5.0.0: 3544 | resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} 3545 | engines: {node: '>=8'} 3546 | dev: true 3547 | 3548 | /webidl-conversions/6.1.0: 3549 | resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} 3550 | engines: {node: '>=10.4'} 3551 | dev: true 3552 | 3553 | /whatwg-encoding/1.0.5: 3554 | resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} 3555 | dependencies: 3556 | iconv-lite: 0.4.24 3557 | dev: true 3558 | 3559 | /whatwg-mimetype/2.3.0: 3560 | resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} 3561 | dev: true 3562 | 3563 | /whatwg-url/8.7.0: 3564 | resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} 3565 | engines: {node: '>=10'} 3566 | dependencies: 3567 | lodash: 4.17.21 3568 | tr46: 2.1.0 3569 | webidl-conversions: 6.1.0 3570 | dev: true 3571 | 3572 | /which-boxed-primitive/1.0.2: 3573 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 3574 | dependencies: 3575 | is-bigint: 1.0.2 3576 | is-boolean-object: 1.1.1 3577 | is-number-object: 1.0.5 3578 | is-string: 1.0.6 3579 | is-symbol: 1.0.4 3580 | dev: true 3581 | 3582 | /which-collection/1.0.1: 3583 | resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} 3584 | dependencies: 3585 | is-map: 2.0.2 3586 | is-set: 2.0.2 3587 | is-weakmap: 2.0.1 3588 | is-weakset: 2.0.1 3589 | dev: true 3590 | 3591 | /which-typed-array/1.1.4: 3592 | resolution: {integrity: sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==} 3593 | engines: {node: '>= 0.4'} 3594 | dependencies: 3595 | available-typed-arrays: 1.0.4 3596 | call-bind: 1.0.2 3597 | es-abstract: 1.18.3 3598 | foreach: 2.0.5 3599 | function-bind: 1.1.1 3600 | has-symbols: 1.0.2 3601 | is-typed-array: 1.1.5 3602 | dev: true 3603 | 3604 | /which/2.0.2: 3605 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3606 | engines: {node: '>= 8'} 3607 | hasBin: true 3608 | dependencies: 3609 | isexe: 2.0.0 3610 | dev: true 3611 | 3612 | /windicss/3.1.6: 3613 | resolution: {integrity: sha512-9/ShTPRs2pg/AJo4PtbgDv9p7BUgR52WqL7Gpr8VSO6LH8z4I/oKamUAlSXqyLsWD6yKS+xtxF3FRiHVJwYcuQ==} 3614 | engines: {node: '>= 12'} 3615 | hasBin: true 3616 | dev: true 3617 | 3618 | /word-wrap/1.2.3: 3619 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 3620 | engines: {node: '>=0.10.0'} 3621 | dev: true 3622 | 3623 | /wrappy/1.0.2: 3624 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} 3625 | dev: true 3626 | 3627 | /ws/7.5.3: 3628 | resolution: {integrity: sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==} 3629 | engines: {node: '>=8.3.0'} 3630 | peerDependencies: 3631 | bufferutil: ^4.0.1 3632 | utf-8-validate: ^5.0.2 3633 | peerDependenciesMeta: 3634 | bufferutil: 3635 | optional: true 3636 | utf-8-validate: 3637 | optional: true 3638 | dev: true 3639 | 3640 | /xml-name-validator/3.0.0: 3641 | resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} 3642 | dev: true 3643 | 3644 | /xmlchars/2.2.0: 3645 | resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} 3646 | dev: true 3647 | 3648 | /xtend/4.0.2: 3649 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 3650 | engines: {node: '>=0.4'} 3651 | dev: true 3652 | 3653 | /yallist/3.1.1: 3654 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 3655 | dev: true 3656 | 3657 | /yallist/4.0.0: 3658 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3659 | dev: true 3660 | 3661 | /yaml/2.0.0-7: 3662 | resolution: {integrity: sha512-RbI2Tm3hl9AoHY4wWyWvGvJfFIbHOzuzaxum6ez1A0vve+uXgNor03Wys4t+2sgjJSVSe+B2xerd1/dnvqHlOA==} 3663 | engines: {node: '>= 12'} 3664 | dev: true 3665 | 3666 | /zwitch/1.0.5: 3667 | resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} 3668 | dev: true 3669 | -------------------------------------------------------------------------------- /public/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /public/pwa-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frandiox/reactesse-ssr-template/9cddd98fb3fcb2450e27b230e5a12f86a8a35726/public/pwa-192x192.png -------------------------------------------------------------------------------- /public/pwa-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frandiox/reactesse-ssr-template/9cddd98fb3fcb2450e27b230e5a12f86a8a35726/public/pwa-512x512.png -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | -------------------------------------------------------------------------------- /public/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.11, written by Peter Selinger 2001-2013 9 | 10 | 12 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /scripts/move-dist.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euo pipefail 3 | 4 | cp -r dist/client serverless/public 5 | mkdir serverless/api/renderer 6 | mv serverless/public/ssr-manifest.json serverless/api/renderer/ 7 | cp dist/server/main.js serverless/api/renderer/ 8 | -------------------------------------------------------------------------------- /serverless/.gitignore: -------------------------------------------------------------------------------- 1 | .vercel 2 | 3 | public/** 4 | api/renderer/** 5 | -------------------------------------------------------------------------------- /serverless/api/get-page-props.js: -------------------------------------------------------------------------------- 1 | export default (req, res) => { 2 | const url = new URL('http://e.g' + req.url) 3 | console.log('-- getPageProps', url.searchParams.toString()) 4 | 5 | const routeName = url.searchParams.get('name') || '' 6 | 7 | res.setHeader( 8 | 'Cache-Control', 9 | 'max-age=0, s-maxage=86400, stale-while-revalidate' 10 | ) 11 | 12 | res.end( 13 | JSON.stringify({ 14 | server: true, 15 | message: `This is page "${routeName.toUpperCase()}"`, 16 | }) 17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /serverless/api/index.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | 3 | const manifest = require(path.join(__dirname, 'renderer', 'ssr-manifest.json')) 4 | const render = require(path.join(__dirname, 'renderer', 'main.js')).default 5 | 6 | // Polyfill 7 | globalThis.fetch = require('node-fetch') 8 | 9 | module.exports = async (req, res) => { 10 | try { 11 | const protocol = 12 | req.protocol || (req.headers.referer || '').split(':')[0] || 'http' 13 | const host = process.env.VERCEL_URL 14 | const url = protocol + '://' + host + req.url 15 | 16 | const { html } = await render(url, { manifest, preload: true }) 17 | 18 | res.statusCode = 200 19 | res.setHeader('Content-Type', 'text/html') 20 | res.setHeader( 21 | 'Cache-Control', 22 | 'max-age=0, s-maxage=86400, stale-while-revalidate' 23 | ) 24 | res.end(html) 25 | } catch (error) { 26 | console.error(error.stack) 27 | res.statusCode = 500 28 | res.end(error.stack) 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /serverless/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "requires": true, 3 | "lockfileVersion": 1, 4 | "dependencies": { 5 | "@babel/runtime": { 6 | "version": "7.14.8", 7 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz", 8 | "integrity": "sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==", 9 | "requires": { 10 | "regenerator-runtime": "^0.13.4" 11 | } 12 | }, 13 | "@mdx-js/react": { 14 | "version": "1.6.22", 15 | "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", 16 | "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==" 17 | }, 18 | "@react-icons/all-files": { 19 | "version": "4.1.0", 20 | "resolved": "https://registry.npmjs.org/@react-icons/all-files/-/all-files-4.1.0.tgz", 21 | "integrity": "sha512-hxBI2UOuVaI3O/BhQfhtb4kcGn9ft12RWAFVMUeNjqqhLsHvFtzIkFaptBJpFDANTKoDfdVoHTKZDlwKCACbMQ==" 22 | }, 23 | "history": { 24 | "version": "4.10.1", 25 | "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", 26 | "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", 27 | "requires": { 28 | "@babel/runtime": "^7.1.2", 29 | "loose-envify": "^1.2.0", 30 | "resolve-pathname": "^3.0.0", 31 | "tiny-invariant": "^1.0.2", 32 | "tiny-warning": "^1.0.0", 33 | "value-equal": "^1.0.1" 34 | } 35 | }, 36 | "hoist-non-react-statics": { 37 | "version": "3.3.2", 38 | "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", 39 | "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", 40 | "requires": { 41 | "react-is": "^16.7.0" 42 | } 43 | }, 44 | "html-parse-stringify": { 45 | "version": "3.0.1", 46 | "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", 47 | "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", 48 | "requires": { 49 | "void-elements": "3.1.0" 50 | } 51 | }, 52 | "i18next": { 53 | "version": "20.3.5", 54 | "resolved": "https://registry.npmjs.org/i18next/-/i18next-20.3.5.tgz", 55 | "integrity": "sha512-//MGeU6n4TencJmCgG+TCrpdgAD/NDEU/KfKQekYbJX6QV7sD/NjWQdVdBi+bkT0snegnSoB7QhjSeatrk3a0w==", 56 | "requires": { 57 | "@babel/runtime": "^7.12.0" 58 | } 59 | }, 60 | "invariant": { 61 | "version": "2.2.4", 62 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", 63 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", 64 | "requires": { 65 | "loose-envify": "^1.0.0" 66 | } 67 | }, 68 | "isarray": { 69 | "version": "0.0.1", 70 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 71 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" 72 | }, 73 | "js-tokens": { 74 | "version": "4.0.0", 75 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 76 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 77 | }, 78 | "loose-envify": { 79 | "version": "1.4.0", 80 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 81 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 82 | "requires": { 83 | "js-tokens": "^3.0.0 || ^4.0.0" 84 | } 85 | }, 86 | "mini-create-react-context": { 87 | "version": "0.4.1", 88 | "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", 89 | "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", 90 | "requires": { 91 | "@babel/runtime": "^7.12.1", 92 | "tiny-warning": "^1.0.3" 93 | } 94 | }, 95 | "node-fetch": { 96 | "version": "2.6.1", 97 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", 98 | "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" 99 | }, 100 | "object-assign": { 101 | "version": "4.1.1", 102 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 103 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 104 | }, 105 | "path-to-regexp": { 106 | "version": "1.8.0", 107 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", 108 | "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", 109 | "requires": { 110 | "isarray": "0.0.1" 111 | } 112 | }, 113 | "prop-types": { 114 | "version": "15.7.2", 115 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", 116 | "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", 117 | "requires": { 118 | "loose-envify": "^1.4.0", 119 | "object-assign": "^4.1.1", 120 | "react-is": "^16.8.1" 121 | } 122 | }, 123 | "react": { 124 | "version": "17.0.2", 125 | "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", 126 | "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", 127 | "requires": { 128 | "loose-envify": "^1.1.0", 129 | "object-assign": "^4.1.1" 130 | } 131 | }, 132 | "react-dom": { 133 | "version": "17.0.2", 134 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", 135 | "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", 136 | "requires": { 137 | "loose-envify": "^1.1.0", 138 | "object-assign": "^4.1.1", 139 | "scheduler": "^0.20.2" 140 | } 141 | }, 142 | "react-fast-compare": { 143 | "version": "3.2.0", 144 | "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", 145 | "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" 146 | }, 147 | "react-helmet-async": { 148 | "version": "1.0.9", 149 | "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.0.9.tgz", 150 | "integrity": "sha512-N+iUlo9WR3/u9qGMmP4jiYfaD6pe9IvDTapZLFJz2D3xlTlCM1Bzy4Ab3g72Nbajo/0ZyW+W9hdz8Hbe4l97pQ==", 151 | "requires": { 152 | "@babel/runtime": "^7.12.5", 153 | "invariant": "^2.2.4", 154 | "prop-types": "^15.7.2", 155 | "react-fast-compare": "^3.2.0", 156 | "shallowequal": "^1.1.0" 157 | } 158 | }, 159 | "react-i18next": { 160 | "version": "11.11.4", 161 | "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.11.4.tgz", 162 | "integrity": "sha512-ayWFlu8Sc7GAxW1PzMaPtzq+yiozWMxs0P1WeITNVzXAVRhC0Httkzw/IiODBta6seJRBCLrtUeFUSXhAIxlRg==", 163 | "requires": { 164 | "@babel/runtime": "^7.14.5", 165 | "html-parse-stringify": "^3.0.1" 166 | } 167 | }, 168 | "react-is": { 169 | "version": "16.13.1", 170 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 171 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 172 | }, 173 | "react-router": { 174 | "version": "5.2.0", 175 | "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", 176 | "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", 177 | "requires": { 178 | "@babel/runtime": "^7.1.2", 179 | "history": "^4.9.0", 180 | "hoist-non-react-statics": "^3.1.0", 181 | "loose-envify": "^1.3.1", 182 | "mini-create-react-context": "^0.4.0", 183 | "path-to-regexp": "^1.7.0", 184 | "prop-types": "^15.6.2", 185 | "react-is": "^16.6.0", 186 | "tiny-invariant": "^1.0.2", 187 | "tiny-warning": "^1.0.0" 188 | } 189 | }, 190 | "react-router-config": { 191 | "version": "5.1.1", 192 | "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", 193 | "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", 194 | "requires": { 195 | "@babel/runtime": "^7.1.2" 196 | } 197 | }, 198 | "react-router-dom": { 199 | "version": "5.2.0", 200 | "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", 201 | "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", 202 | "requires": { 203 | "@babel/runtime": "^7.1.2", 204 | "history": "^4.9.0", 205 | "loose-envify": "^1.3.1", 206 | "prop-types": "^15.6.2", 207 | "react-router": "5.2.0", 208 | "tiny-invariant": "^1.0.2", 209 | "tiny-warning": "^1.0.0" 210 | } 211 | }, 212 | "regenerator-runtime": { 213 | "version": "0.13.9", 214 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", 215 | "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" 216 | }, 217 | "resolve-pathname": { 218 | "version": "3.0.0", 219 | "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", 220 | "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" 221 | }, 222 | "scheduler": { 223 | "version": "0.20.2", 224 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", 225 | "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", 226 | "requires": { 227 | "loose-envify": "^1.1.0", 228 | "object-assign": "^4.1.1" 229 | } 230 | }, 231 | "shallowequal": { 232 | "version": "1.1.0", 233 | "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", 234 | "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" 235 | }, 236 | "tiny-invariant": { 237 | "version": "1.1.0", 238 | "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", 239 | "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" 240 | }, 241 | "tiny-warning": { 242 | "version": "1.0.3", 243 | "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", 244 | "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" 245 | }, 246 | "value-equal": { 247 | "version": "1.0.1", 248 | "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", 249 | "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" 250 | }, 251 | "void-elements": { 252 | "version": "3.1.0", 253 | "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", 254 | "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=" 255 | } 256 | } 257 | } 258 | -------------------------------------------------------------------------------- /serverless/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "dependencies": { 4 | "@mdx-js/react": "^1.6.22", 5 | "@react-icons/all-files": "^4.1.0", 6 | "i18next": "^20.3.5", 7 | "node-fetch": "*", 8 | "react": "^17.0.2", 9 | "react-dom": "^17.0.2", 10 | "react-helmet-async": "^1.0.9", 11 | "react-i18next": "^11.11.4", 12 | "react-router-config": "^5.1.1", 13 | "react-router-dom": "^5.2.0" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /serverless/vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "public": true, 3 | "functions": { 4 | "api/index.js": { 5 | "includeFiles": "renderer/**" 6 | } 7 | }, 8 | "rewrites": [ 9 | { 10 | "source": "/(.*)", 11 | "destination": "/api/index.js" 12 | } 13 | ] 14 | } -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Helmet } from 'react-helmet-async' 3 | import Footer from './components/Footer' 4 | import { renderRoutes } from 'react-router-config' 5 | import { Context } from 'vite-ssr/react' 6 | 7 | export default function App({ router }: Context) { 8 | const title = 'Reactesse SSR' 9 | const description = 'Opinionated SSR Vite Starter Template for React' 10 | 11 | return ( 12 |
13 | 14 | {title} 15 | 16 | 17 | 18 | 22 | 23 | 24 |
25 | {renderRoutes(router.routes)} 26 | 27 |
29 |
30 | ) 31 | } 32 | -------------------------------------------------------------------------------- /src/api.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { useContext } from 'vite-ssr/react' 3 | 4 | function getPageProps({ baseUrl, name, path }: any = {}) { 5 | // Get our page props from our custom API: 6 | return fetch( 7 | `${baseUrl}/api/get-page-props?path=${encodeURIComponent( 8 | path 9 | )}&name=${name}&client=${typeof window !== 'undefined'}`, 10 | { 11 | method: 'GET', 12 | headers: { 13 | 'Content-Type': 'application/json', 14 | }, 15 | } 16 | ).then((res) => res.json()) 17 | } 18 | 19 | export function PropsProvider({ to: route, children: Page }: any) { 20 | const { url, isClient } = useContext() 21 | const baseUrl = isClient ? '' : url.origin 22 | 23 | if (!route.meta.state) { 24 | const promise = getPageProps({ baseUrl, ...route }).then((state) => { 25 | // This will be merged in `initialState` automatically 26 | route.meta.state = state 27 | }) 28 | 29 | // Will be suspended until resolved 30 | throw promise 31 | } 32 | 33 | return 34 | } 35 | -------------------------------------------------------------------------------- /src/components/Footer.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Link, useLocation } from 'react-router-dom' 3 | import { FaCampground } from '@react-icons/all-files/fa/FaCampground' 4 | import { FiStar } from '@react-icons/all-files/fi/FiStar' 5 | import { FiMoon } from '@react-icons/all-files/fi/FiMoon' 6 | import { FiSun } from '@react-icons/all-files/fi/FiSun' 7 | import { IoLanguage } from '@react-icons/all-files/io5/IoLanguage' 8 | import { AiOutlineFileText } from '@react-icons/all-files/ai/AiOutlineFileText' 9 | import { AiFillGithub } from '@react-icons/all-files/ai/AiFillGithub' 10 | import { useDarkTheme } from '~/utils/dark-theme' 11 | import { DEFAULT_LOCALE, SUPPORTED_LOCALES as locales } from '~/i18n' 12 | import { useTranslation } from 'react-i18next' 13 | 14 | export default function Footer() { 15 | const [isDark, toggleDark] = useDarkTheme() 16 | 17 | const { t, i18n } = useTranslation() 18 | const route = useLocation() 19 | 20 | const toggleLocales = () => { 21 | const nextLocale = 22 | locales[(locales.indexOf(i18n.language) + 1) % locales.length] 23 | const base = nextLocale === DEFAULT_LOCALE ? '' : `/${nextLocale}` 24 | window.location.pathname = base + route.pathname 25 | } 26 | 27 | return ( 28 | 72 | ) 73 | } 74 | -------------------------------------------------------------------------------- /src/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { DEFAULT_LOCALE, SUPPORTED_LOCALES } from './locales' 2 | import i18n from 'i18next' 3 | import { initReactI18next } from 'react-i18next' 4 | 5 | export { 6 | DEFAULT_LOCALE, 7 | SUPPORTED_LOCALES, 8 | SUPPORTED_LANGUAGES, 9 | extractLocaleFromPath, 10 | } from './locales' 11 | 12 | // This is a dynamic import so not all languages are bundled in frontend. 13 | // For YAML format, install `@rollup/plugin-yaml`. 14 | const messageImports = import.meta.glob('./translations/*.json') 15 | 16 | function importLocale(locale: string) { 17 | const [, importLocale] = 18 | Object.entries(messageImports).find(([key]) => 19 | key.includes(`/${locale}.`) 20 | ) || [] 21 | 22 | return importLocale && importLocale() 23 | } 24 | 25 | export async function loadAsyncLanguage(i18n: any, locale = DEFAULT_LOCALE) { 26 | try { 27 | const result = await importLocale(locale) 28 | if (result) { 29 | i18n.addResourceBundle(locale, 'translation', result.default || result) 30 | i18n.changeLanguage(locale) 31 | } 32 | } catch (error) { 33 | console.error(error) 34 | } 35 | } 36 | 37 | export async function installI18n(locale = '') { 38 | locale = SUPPORTED_LOCALES.includes(locale) ? locale : DEFAULT_LOCALE 39 | const messages = await importLocale(locale) 40 | 41 | i18n 42 | .use(initReactI18next) // passes i18n down to react-i18next 43 | .init({ 44 | // debug: true, 45 | resources: { 46 | // @ts-ignore 47 | [locale]: { translation: messages.default || messages }, 48 | }, 49 | lng: locale, 50 | fallbackLng: DEFAULT_LOCALE, 51 | interpolation: { 52 | escapeValue: false, // react already safes from xss 53 | }, 54 | }) 55 | } 56 | 57 | export default i18n 58 | -------------------------------------------------------------------------------- /src/i18n/locales.ts: -------------------------------------------------------------------------------- 1 | export const SUPPORTED_LANGUAGES = [ 2 | { 3 | locale: 'en', 4 | name: 'English', 5 | default: true, 6 | }, 7 | { 8 | locale: 'es', 9 | name: 'Spanish', 10 | }, 11 | { 12 | locale: 'fr', 13 | name: 'French', 14 | }, 15 | { 16 | locale: 'it', 17 | name: 'Italian', 18 | }, 19 | { 20 | locale: 'ja', 21 | name: 'Japanese', 22 | }, 23 | { 24 | locale: 'ko', 25 | name: 'Korean', 26 | }, 27 | { 28 | locale: 'tr', 29 | name: 'Turkish', 30 | }, 31 | { 32 | locale: 'vi', 33 | name: 'Vietnamese', 34 | }, 35 | { 36 | locale: 'zh-CN', 37 | name: 'Chinese', 38 | }, 39 | ] 40 | 41 | export const SUPPORTED_LOCALES = SUPPORTED_LANGUAGES.map((l) => l.locale) 42 | 43 | export const DEFAULT_LANGUAGE = SUPPORTED_LANGUAGES.find((l) => l.default) 44 | 45 | export const DEFAULT_LOCALE = DEFAULT_LANGUAGE?.locale as string 46 | 47 | export function extractLocaleFromPath(path = '') { 48 | const [_, maybeLocale] = path.split('/') 49 | return SUPPORTED_LOCALES.includes(maybeLocale) ? maybeLocale : DEFAULT_LOCALE 50 | } 51 | -------------------------------------------------------------------------------- /src/i18n/translations/README.md: -------------------------------------------------------------------------------- 1 | ## i18n 2 | 3 | This directory is to serve your locale translation files. JSON under this folder would be loaded automatically and register with their filenames as locale code. If you prefer YAML format, install `@rollup/plugin-yaml` and add it to `vite.config.ts`. 4 | 5 | Check out [`vue-i18n`](https://github.com/intlify/vue-i18n-next) for more details. 6 | 7 | If you are using VS Code, [`i18n Ally`](https://github.com/lokalise/i18n-ally) is recommended to make the i18n experience better. 8 | -------------------------------------------------------------------------------- /src/i18n/translations/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "button": { 3 | "about": "About", 4 | "back": "Back", 5 | "go": "GO", 6 | "home": "Home", 7 | "toggle_dark": "Toggle dark mode", 8 | "toggle_langs": "Change languages" 9 | }, 10 | "intro": { 11 | "desc": "Opinionated Vite Starter Template", 12 | "dynamic-route": "Demo of dynamic route", 13 | "hi": "Hi, {{name}}!", 14 | "whats-your-name": "What's your name?" 15 | }, 16 | "not-found": "Not found" 17 | } -------------------------------------------------------------------------------- /src/i18n/translations/es.json: -------------------------------------------------------------------------------- 1 | { 2 | "button": { 3 | "about": "Acerca de", 4 | "back": "Atrás", 5 | "go": "Ir", 6 | "home": "Inicio", 7 | "toggle_dark": "Alternar modo oscuro", 8 | "toggle_langs": "Cambiar idiomas" 9 | }, 10 | "intro": { 11 | "desc": "Plantilla de Inicio de Vite Dogmática", 12 | "dynamic-route": "Demo de ruta dinámica", 13 | "hi": "¡Hola, {{name}}!", 14 | "whats-your-name": "¿Cómo te llamas?" 15 | }, 16 | "not-found": "No se ha encontrado" 17 | } -------------------------------------------------------------------------------- /src/i18n/translations/fr.json: -------------------------------------------------------------------------------- 1 | { 2 | "button": { 3 | "about": "À propos de", 4 | "back": "Retour", 5 | "go": "Essayer", 6 | "home": "Maison", 7 | "toggle_dark": "Basculer en mode sombre", 8 | "toggle_langs": "Changer de langue" 9 | }, 10 | "intro": { 11 | "desc": "Example d'application Vite", 12 | "dynamic-route": "Démo de route dynamique", 13 | "hi": "Salut, {{name}} !", 14 | "whats-your-name": "Comment t'appelles-tu ?" 15 | }, 16 | "not-found": "Page non trouvée" 17 | } -------------------------------------------------------------------------------- /src/i18n/translations/it.json: -------------------------------------------------------------------------------- 1 | { 2 | "button": { 3 | "about": "Su di me", 4 | "back": "Indietro", 5 | "go": "Vai", 6 | "home": "Home", 7 | "toggle_dark": "Attiva/disattiva modalità scura", 8 | "toggle_langs": "Cambia lingua" 9 | }, 10 | "intro": { 11 | "desc": "Modello per una Applicazione Vite", 12 | "dynamic-route": "Demo di rotta dinamica", 13 | "hi": "Ciao, {{name}}!", 14 | "whats-your-name": "Come ti chiami?" 15 | }, 16 | "not-found": "Non trovato" 17 | } -------------------------------------------------------------------------------- /src/i18n/translations/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "button": { 3 | "about": "これは?", 4 | "back": "戻る", 5 | "go": "進む", 6 | "home": "ホーム", 7 | "toggle_dark": "ダークモード切り替え", 8 | "toggle_langs": "言語切り替え" 9 | }, 10 | "intro": { 11 | "desc": "固執された Vite スターターテンプレート", 12 | "dynamic-route": "動的ルートのデモ", 13 | "hi": "こんにちは、{{name}}!", 14 | "whats-your-name": "あなたの名前は?" 15 | }, 16 | "not-found": "見つかりませんでした" 17 | } -------------------------------------------------------------------------------- /src/i18n/translations/ko.json: -------------------------------------------------------------------------------- 1 | { 2 | "button": { 3 | "about": "소개", 4 | "back": "뒤로가기", 5 | "go": "이동", 6 | "home": "홈", 7 | "toggle_dark": "다크모드 토글", 8 | "toggle_langs": "언어 변경" 9 | }, 10 | "intro": { 11 | "desc": "Vite 애플리케이션 템플릿", 12 | "dynamic-route": "다이나믹 라우트 데모", 13 | "hi": "안녕, {{name}}!", 14 | "whats-your-name": "이름이 뭐예요?" 15 | }, 16 | "not-found": "찾을 수 없습니다" 17 | } -------------------------------------------------------------------------------- /src/i18n/translations/tr.json: -------------------------------------------------------------------------------- 1 | { 2 | "button": { 3 | "about": "Hakkımda", 4 | "back": "Geri", 5 | "go": "İLERİ", 6 | "home": "Anasayfa", 7 | "toggle_dark": "Karanlık modu değiştir", 8 | "toggle_langs": "Dilleri değiştir" 9 | }, 10 | "intro": { 11 | "desc": "Görüşlü Vite Başlangıç Şablonu", 12 | "dynamic-route": "Dinamik rota demosu", 13 | "hi": "Merhaba, {{name}}!", 14 | "whats-your-name": "Adınız nedir ?" 15 | }, 16 | "not-found": "Bulunamadı" 17 | } -------------------------------------------------------------------------------- /src/i18n/translations/vi.json: -------------------------------------------------------------------------------- 1 | { 2 | "button": { 3 | "back": "Quay lại", 4 | "go": "Đi" 5 | }, 6 | "intro": { 7 | "desc": "Ý kiến cá nhân Vite Template để bắt đầu", 8 | "dynamic-route": "Bản giới thiệu về dynamic route", 9 | "hi": "Hi, {{name}}!", 10 | "whats-your-name": "Tên bạn là gì?" 11 | }, 12 | "not-found": "Không tìm thấy" 13 | } -------------------------------------------------------------------------------- /src/i18n/translations/zh-CN.json: -------------------------------------------------------------------------------- 1 | { 2 | "button": { 3 | "about": "关于", 4 | "back": "返回", 5 | "go": "确定", 6 | "home": "首页", 7 | "toggle_dark": "切换深色模式", 8 | "toggle_langs": "切换语言" 9 | }, 10 | "intro": { 11 | "desc": "固执己见的 Vite 项目模板", 12 | "dynamic-route": "动态路由演示", 13 | "hi": "你好,{{name}}!", 14 | "whats-your-name": "输入你的名字" 15 | }, 16 | "not-found": "未找到页面" 17 | } -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import 'windi.css' 2 | import './styles/main.css' 3 | import viteSSR from 'vite-ssr/react' 4 | import routes from 'virtual:generated-pages' 5 | import App from './App' 6 | import { PropsProvider } from './api' 7 | 8 | import { installI18n, extractLocaleFromPath, DEFAULT_LOCALE } from './i18n' 9 | 10 | routes.forEach((route) => { 11 | const { path } = route 12 | route.name = 13 | path 14 | .replace(/^\//, '') 15 | .replace(/:/, '') 16 | .replace(/\//, '-') 17 | .replace('all(.*)', 'not-found') || 'home' 18 | 19 | route.path = route.path.includes('*') ? '*' : route.path 20 | }) 21 | 22 | // https://github.com/frandiox/vite-ssr 23 | export default viteSSR( 24 | App, 25 | { 26 | routes, 27 | PropsProvider, 28 | // Use Router's base for i18n routes 29 | base: ({ url }) => { 30 | const locale = extractLocaleFromPath(url.pathname) 31 | return locale === DEFAULT_LOCALE ? '/' : `/${locale}/` 32 | }, 33 | }, 34 | async (ctx) => { 35 | const { url, initialState } = ctx 36 | 37 | // Load language asyncrhonously to avoid bundling all languages 38 | await installI18n(extractLocaleFromPath(url.pathname)) 39 | 40 | // Freely modify initialState and it will be serialized later 41 | if (import.meta.env.SSR) { 42 | initialState.test = 'This should appear in page-view-source' 43 | // This object can be passed to a store 44 | } else { 45 | // In browser, initialState will be hydrated with data from SSR 46 | console.log('Initial state:', initialState) 47 | } 48 | } 49 | ) 50 | -------------------------------------------------------------------------------- /src/pages/README.md: -------------------------------------------------------------------------------- 1 | ## File-based Routing 2 | 3 | Routes will auto-generated for Vue files in this dir with the same file structure. 4 | Check out [`vite-plugin-pages`](https://github.com/hannoeru/vite-plugin-pages) for more details. 5 | 6 | ### Path Aliasing 7 | 8 | `~/` is aliased to `./src/` folder. 9 | 10 | For example, instead of having 11 | 12 | ```ts 13 | import utils from '../../../../utils' 14 | ``` 15 | 16 | now you can use 17 | 18 | ```ts 19 | import utils from '~/utils' 20 | ``` 21 | -------------------------------------------------------------------------------- /src/pages/[...all].tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default function NotFound() { 4 | return
Not Found
5 | } 6 | -------------------------------------------------------------------------------- /src/pages/about.mdx: -------------------------------------------------------------------------------- 1 | 2 | 3 | import { AiOutlineFileText } from '@react-icons/all-files/ai/AiOutlineFileText' 4 | 5 |
6 | 7 |
8 | 9 |

About

10 |
11 | 12 | [Reactesse SSR](https://github.com/frandiox/reactesse-ssr-template) is an opinionated [Vite](https://github.com/vitejs/vite) starter template made by [@frandiox](https://github.com/frandiox) (insriped by [@antfu](https://github.com/antfu)'s Vitesse) for mocking apps swiftly. With **file-based routing**, **markdown support**, I18n, PWA and uses **Tailwind** v2 for UI. The SSR capability is added via [Vite SSR](https://github.com/frandiox/vite-ssr). 13 | 14 | ```js 15 | // syntax highlighting example 16 | function reactesse() { 17 | const foo = 'bar' 18 | console.log(foo) 19 | } 20 | ``` 21 | 22 |
23 | -------------------------------------------------------------------------------- /src/pages/hi/[name].tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { useHistory, useParams } from 'react-router-dom' 3 | import { FaRegHandSpock } from '@react-icons/all-files/fa/FaRegHandSpock' 4 | import { useTranslation } from 'react-i18next' 5 | 6 | export default function Hi({ message }: any) { 7 | const { name } = useParams() as any 8 | 9 | const history = useHistory() 10 | 11 | const { t } = useTranslation() 12 | 13 | return ( 14 |
15 |

16 | 17 |

18 |

{t('intro.hi', { name })}

19 |

20 | {t('intro.dynamic-route')} 21 |

22 |
23 | 29 |
30 | Message from API: {message} 31 |
32 | ) 33 | } 34 | -------------------------------------------------------------------------------- /src/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react' 2 | import { useHistory } from 'react-router-dom' 3 | import { FaCampground } from '@react-icons/all-files/fa/FaCampground' 4 | import { useTranslation } from 'react-i18next' 5 | 6 | export default function Home({ message }: any) { 7 | const [name = '', setName] = useState() 8 | 9 | const history = useHistory() 10 | const go = () => { 11 | history.push(`/hi/${encodeURIComponent(name)}`) 12 | } 13 | 14 | const { t } = useTranslation() 15 | 16 | return ( 17 |
18 |

19 | 20 |

21 |

22 | 27 | Reactesse SSR 28 | 29 |

30 |

31 | {t('intro.desc')} 32 |

33 |
34 | setName(e.target.value)} 38 | placeholder={t('intro.whats-your-name')} 39 | aria-label={t('intro.whats-your-name')} 40 | type="text" 41 | autoComplete="false" 42 | className="px-4 py-2 text-sm text-center bg-transparent border border-gray-200 rounded outline-none active:outline-none dark:border-gray-700" 43 | style={{ width: '250px' }} 44 | /> 45 | 48 |
49 | 52 |
53 | Message from API: {message} 54 |
55 | ) 56 | } 57 | -------------------------------------------------------------------------------- /src/shims.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable import/no-duplicates */ 2 | 3 | declare interface Window { 4 | // extend the window 5 | } 6 | -------------------------------------------------------------------------------- /src/styles/main.css: -------------------------------------------------------------------------------- 1 | @import './markdown.css'; 2 | 3 | html, 4 | body, 5 | #app { 6 | height: 100vh; 7 | margin: 0; 8 | padding: 0; 9 | } 10 | 11 | html.dark { 12 | background: #222; 13 | } 14 | 15 | .btn { 16 | @apply px-4 py-1 rounded inline-block 17 | bg-teal-600 text-white cursor-pointer 18 | hover:bg-teal-700 19 | disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50; 20 | } 21 | 22 | .icon-btn { 23 | @apply inline-block cursor-pointer select-none 24 | opacity-75 transition duration-200 ease-in-out 25 | hover:opacity-100 hover:text-teal-600; 26 | font-size: 0.9em; 27 | } 28 | -------------------------------------------------------------------------------- /src/styles/markdown.css: -------------------------------------------------------------------------------- 1 | /* https://github.com/antfu/prism-theme-vars */ 2 | @import 'prism-theme-vars/base.css'; 3 | 4 | :root { 5 | --prism-font-family: 'Input Mono', monospace; 6 | } 7 | 8 | html:not(.dark) { 9 | --prism-foreground: #393a34; 10 | --prism-background: #fbfbfb; 11 | --prism-comment: #8e8f8e; 12 | --prism-string: #a1644c; 13 | --prism-literal: #3a9c9b; 14 | --prism-keyword: #248358; 15 | --prism-function: #7e8a42; 16 | --prism-deleted: #a14f55; 17 | --prism-class: #2b91af; 18 | --prism-builtin: #a52727; 19 | --prism-property: #ad502b; 20 | --prism-namespace: #c96880; 21 | --prism-punctuation: #8e8f8b; 22 | --prism-decorator: #bd8f8f; 23 | --prism-json-property: #698c96; 24 | } 25 | 26 | html.dark { 27 | --prism-scheme: dark; 28 | --prism-foreground: #d4cfbf; 29 | --prism-background: #1e1e1e; 30 | --prism-comment: #758575; 31 | --prism-string: #ce9178; 32 | --prism-literal: #4fb09d; 33 | --prism-keyword: #4d9375; 34 | --prism-function: #c2c275; 35 | --prism-deleted: #a14f55; 36 | --prism-class: #5ebaa8; 37 | --prism-builtin: #cb7676; 38 | --prism-property: #dd8e6e; 39 | --prism-namespace: #c96880; 40 | --prism-punctuation: #d4d4d4; 41 | --prism-decorator: #bd8f8f; 42 | --prism-regex: #ab5e3f; 43 | --prism-json-property: #6b8b9e; 44 | --prism-line-number: #888888; 45 | --prism-line-number-gutter: #eeeeee; 46 | --prism-line-highlight-background: #444444; 47 | --prism-selection-background: #444444; 48 | } 49 | -------------------------------------------------------------------------------- /src/utils/dark-theme.ts: -------------------------------------------------------------------------------- 1 | import { useEffect } from 'react' 2 | import { useStorage } from './local-storage' 3 | 4 | export function useDarkTheme() { 5 | const [colorSchema, setColorSchema] = useStorage('color-schema', 'auto') 6 | const isDark = colorSchema === 'dark' 7 | const toggleDark = () => setColorSchema(isDark ? 'light' : 'dark') 8 | 9 | if (typeof document !== 'undefined') { 10 | useEffect(() => { 11 | document.documentElement.classList.toggle('dark', isDark) 12 | }) 13 | } 14 | 15 | return [isDark, toggleDark] as [boolean, () => void] 16 | } 17 | -------------------------------------------------------------------------------- /src/utils/local-storage.ts: -------------------------------------------------------------------------------- 1 | import { useState } from 'react' 2 | 3 | export function useStorage(key: string, defaultValue?: any) { 4 | if (import.meta.env.SSR) { 5 | return [defaultValue] 6 | } 7 | 8 | const [value, setValue] = useState( 9 | window.localStorage.getItem(key) || defaultValue 10 | ) 11 | 12 | return [ 13 | value, 14 | (newValue: any) => { 15 | window.localStorage.setItem(key, newValue) 16 | return setValue(newValue) 17 | }, 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite-plugin-windicss' 2 | import colors from 'windicss/colors' 3 | import typography from 'windicss/plugin/typography' 4 | 5 | export default defineConfig({ 6 | darkMode: 'class', 7 | plugins: [ 8 | typography(), 9 | ], 10 | theme: { 11 | extend: { 12 | typography: { 13 | DEFAULT: { 14 | css: { 15 | maxWidth: '65ch', 16 | color: 'inherit', 17 | a: { 18 | color: 'inherit', 19 | opacity: 0.75, 20 | fontWeight: '500', 21 | textDecoration: 'underline', 22 | '&:hover': { 23 | opacity: 1, 24 | color: colors.teal[600], 25 | }, 26 | }, 27 | b: { color: 'inherit' }, 28 | strong: { color: 'inherit' }, 29 | em: { color: 'inherit' }, 30 | h1: { color: 'inherit' }, 31 | h2: { color: 'inherit' }, 32 | h3: { color: 'inherit' }, 33 | h4: { color: 'inherit' }, 34 | code: { color: 'inherit' }, 35 | }, 36 | }, 37 | }, 38 | }, 39 | }, 40 | }) 41 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "module": "ESNext", 5 | "target": "es2016", 6 | "lib": ["DOM", "ESNext"], 7 | "strict": true, 8 | "jsx": "react", 9 | "esModuleInterop": true, 10 | "incremental": true, 11 | "skipLibCheck": true, 12 | "moduleResolution": "node", 13 | "resolveJsonModule": true, 14 | "noUnusedLocals": true, 15 | "strictNullChecks": true, 16 | "forceConsistentCasingInFileNames": true, 17 | "allowSyntheticDefaultImports": true, 18 | "types": [ 19 | "vite/client", 20 | "vite-plugin-pages/client", 21 | ], 22 | "paths": { 23 | "~/*": ["src/*"] 24 | } 25 | }, 26 | "exclude": ["dist", "node_modules"] 27 | } 28 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import path from 'path' 2 | import { defineConfig } from 'vite' 3 | import Pages from 'vite-plugin-pages' 4 | import WindiCSS from 'vite-plugin-windicss' 5 | import viteSSR from 'vite-ssr/plugin' 6 | import mdx from 'vite-plugin-mdx' 7 | // @ts-ignore 8 | import remarkPrism from 'remark-prism' 9 | import reactRefresh from '@vitejs/plugin-react-refresh' 10 | // @ts-ignore 11 | import getPageProps from './serverless/api/get-page-props' 12 | 13 | export default defineConfig({ 14 | resolve: { 15 | alias: { 16 | '~/': `${path.resolve(__dirname, 'src')}/`, 17 | }, 18 | }, 19 | plugins: [ 20 | reactRefresh(), 21 | viteSSR(), 22 | mdx({ 23 | remarkPlugins: [remarkPrism], 24 | }), 25 | { 26 | name: 'API-mock', 27 | configureServer({ middlewares }) { 28 | middlewares.use('/api/get-page-props', getPageProps) 29 | }, 30 | }, 31 | 32 | // https://github.com/hannoeru/vite-plugin-pages 33 | Pages({ 34 | react: true, 35 | extensions: ['jsx', 'tsx', 'mdx'], 36 | }), 37 | 38 | // https://github.com/antfu/vite-plugin-windicss 39 | WindiCSS({ 40 | safelist: 'prose prose-sm m-auto', 41 | }), 42 | ], 43 | 44 | optimizeDeps: { 45 | include: ['@mdx-js/react'], 46 | exclude: [], 47 | }, 48 | }) 49 | --------------------------------------------------------------------------------