From b4c3f736bf7213eb1548a910c8af35fb1943f57c Mon Sep 17 00:00:00 2001 From: DevSavante <151789625+DevSavante@users.noreply.github.com> Date: Sat, 16 Dec 2023 00:06:27 +0000 Subject: [PATCH] Add files via upload --- README.md | 87 +- package-lock.json | 17977 ++++++++++++++++ package.json | 43 + public/favicon.ico | Bin 0 -> 3870 bytes public/index.html | 43 + public/logo192.png | Bin 0 -> 5347 bytes public/logo512.png | Bin 0 -> 9664 bytes public/manifest.json | 25 + public/robots.txt | 3 + src/App.js | 27 + src/Assets/OIP (1).jpeg | Bin 0 -> 47973 bytes src/Assets/OIP.jpeg | Bin 0 -> 8273 bytes src/Assets/download.jpeg | Bin 0 -> 4695 bytes src/Assets/laptop.jpg | Bin 0 -> 285246 bytes src/Assets/th.jpeg | Bin 0 -> 3933 bytes src/Components/Cards.jsx | 47 + src/Components/Footer.jsx | 76 + src/Components/Hero.jsx | 22 + src/Components/Navbar.jsx | 50 + src/Components/Overview.jsx | 21 + src/Components/Sidebar.jsx | 54 + src/Pages/Dashboard.jsx | 113 + src/Pages/FAQ.jsx | 55 + src/Pages/Gradeform.jsx | 31 + src/Pages/Gradereport.jsx | 118 + src/Pages/Instructors.jsx | 115 + src/Pages/Landingpage.jsx | 21 + src/Pages/Login.jsx | 35 + src/index.css | 7 + src/index.js | 14 + tailwind.config.js | 11 + wrappy/LICENSE | 15 + wrappy/README.md | 36 + wrappy/package.json | 29 + wrappy/wrappy.js | 33 + xml-name-validator/lib/generated-parser.js | 504 + y18n/CHANGELOG.md | 100 + y18n/LICENSE | 13 + y18n/README.md | 127 + y18n/build/index.cjs | 203 + y18n/build/lib/cjs.js | 6 + y18n/build/lib/index.js | 174 + y18n/build/lib/platform-shims/node.js | 19 + y18n/index.mjs | 8 + y18n/package.json | 70 + yallist/LICENSE | 15 + yallist/README.md | 204 + yallist/iterator.js | 8 + yallist/package.json | 29 + yallist/yallist.js | 426 + yaml/browser/dist/PlainValue-b8036b75.js | 1275 ++ yaml/browser/dist/Schema-e94716c8.js | 682 + yaml/browser/dist/index.js | 1002 + yaml/browser/dist/legacy-exports.js | 3 + yaml/browser/dist/package.json | 1 + yaml/browser/dist/parse-cst.js | 1904 ++ yaml/browser/dist/resolveSeq-492ab440.js | 2419 +++ yaml/browser/dist/types.js | 4 + yaml/browser/dist/util.js | 2 + yaml/browser/dist/warnings-df54cb69.js | 499 + yaml/browser/index.js | 1 + yaml/browser/map.js | 2 + yaml/browser/pair.js | 2 + yaml/browser/parse-cst.js | 1 + yaml/browser/scalar.js | 2 + yargs-parser/CHANGELOG.md | 263 + yargs-parser/LICENSE.txt | 14 + yargs-parser/README.md | 518 + yargs-parser/browser.js | 29 + yargs-parser/build/index.cjs | 1042 + yargs-parser/build/lib/index.js | 59 + yargs-parser/build/lib/string-utils.js | 65 + yargs-parser/build/lib/tokenize-arg-string.js | 40 + yargs-parser/build/lib/yargs-parser-types.js | 12 + yargs-parser/build/lib/yargs-parser.js | 1037 + yargs-parser/package.json | 87 + yargs/browser.mjs | 7 + yargs/build/index.cjs | 2920 +++ yargs/build/lib/argsert.js | 62 + yargs/build/lib/command.js | 382 + yargs/build/lib/completion-templates.js | 47 + yargs/build/lib/completion.js | 128 + yargs/build/lib/middleware.js | 53 + yargs/build/lib/parse-command.js | 32 + yargs/build/lib/typings/common-types.js | 9 + yargs/build/lib/typings/yargs-parser-types.js | 1 + yargs/build/lib/usage.js | 548 + yargs/build/lib/utils/apply-extends.js | 59 + yargs/build/lib/utils/is-promise.js | 5 + yargs/build/lib/utils/levenshtein.js | 26 + yargs/build/lib/utils/obj-filter.js | 10 + yargs/build/lib/utils/process-argv.js | 17 + yargs/build/lib/utils/set-blocking.js | 12 + yargs/build/lib/utils/which-module.js | 10 + yocto-queue/index.d.ts | 56 + yocto-queue/index.js | 68 + yocto-queue/license | 9 + yocto-queue/package.json | 43 + yocto-queue/readme.md | 64 + 99 files changed, 36513 insertions(+), 34 deletions(-) create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 public/logo192.png create mode 100644 public/logo512.png create mode 100644 public/manifest.json create mode 100644 public/robots.txt create mode 100644 src/App.js create mode 100644 src/Assets/OIP (1).jpeg create mode 100644 src/Assets/OIP.jpeg create mode 100644 src/Assets/download.jpeg create mode 100644 src/Assets/laptop.jpg create mode 100644 src/Assets/th.jpeg create mode 100644 src/Components/Cards.jsx create mode 100644 src/Components/Footer.jsx create mode 100644 src/Components/Hero.jsx create mode 100644 src/Components/Navbar.jsx create mode 100644 src/Components/Overview.jsx create mode 100644 src/Components/Sidebar.jsx create mode 100644 src/Pages/Dashboard.jsx create mode 100644 src/Pages/FAQ.jsx create mode 100644 src/Pages/Gradeform.jsx create mode 100644 src/Pages/Gradereport.jsx create mode 100644 src/Pages/Instructors.jsx create mode 100644 src/Pages/Landingpage.jsx create mode 100644 src/Pages/Login.jsx create mode 100644 src/index.css create mode 100644 src/index.js create mode 100644 tailwind.config.js create mode 100644 wrappy/LICENSE create mode 100644 wrappy/README.md create mode 100644 wrappy/package.json create mode 100644 wrappy/wrappy.js create mode 100644 xml-name-validator/lib/generated-parser.js create mode 100644 y18n/CHANGELOG.md create mode 100644 y18n/LICENSE create mode 100644 y18n/README.md create mode 100644 y18n/build/index.cjs create mode 100644 y18n/build/lib/cjs.js create mode 100644 y18n/build/lib/index.js create mode 100644 y18n/build/lib/platform-shims/node.js create mode 100644 y18n/index.mjs create mode 100644 y18n/package.json create mode 100644 yallist/LICENSE create mode 100644 yallist/README.md create mode 100644 yallist/iterator.js create mode 100644 yallist/package.json create mode 100644 yallist/yallist.js create mode 100644 yaml/browser/dist/PlainValue-b8036b75.js create mode 100644 yaml/browser/dist/Schema-e94716c8.js create mode 100644 yaml/browser/dist/index.js create mode 100644 yaml/browser/dist/legacy-exports.js create mode 100644 yaml/browser/dist/package.json create mode 100644 yaml/browser/dist/parse-cst.js create mode 100644 yaml/browser/dist/resolveSeq-492ab440.js create mode 100644 yaml/browser/dist/types.js create mode 100644 yaml/browser/dist/util.js create mode 100644 yaml/browser/dist/warnings-df54cb69.js create mode 100644 yaml/browser/index.js create mode 100644 yaml/browser/map.js create mode 100644 yaml/browser/pair.js create mode 100644 yaml/browser/parse-cst.js create mode 100644 yaml/browser/scalar.js create mode 100644 yargs-parser/CHANGELOG.md create mode 100644 yargs-parser/LICENSE.txt create mode 100644 yargs-parser/README.md create mode 100644 yargs-parser/browser.js create mode 100644 yargs-parser/build/index.cjs create mode 100644 yargs-parser/build/lib/index.js create mode 100644 yargs-parser/build/lib/string-utils.js create mode 100644 yargs-parser/build/lib/tokenize-arg-string.js create mode 100644 yargs-parser/build/lib/yargs-parser-types.js create mode 100644 yargs-parser/build/lib/yargs-parser.js create mode 100644 yargs-parser/package.json create mode 100644 yargs/browser.mjs create mode 100644 yargs/build/index.cjs create mode 100644 yargs/build/lib/argsert.js create mode 100644 yargs/build/lib/command.js create mode 100644 yargs/build/lib/completion-templates.js create mode 100644 yargs/build/lib/completion.js create mode 100644 yargs/build/lib/middleware.js create mode 100644 yargs/build/lib/parse-command.js create mode 100644 yargs/build/lib/typings/common-types.js create mode 100644 yargs/build/lib/typings/yargs-parser-types.js create mode 100644 yargs/build/lib/usage.js create mode 100644 yargs/build/lib/utils/apply-extends.js create mode 100644 yargs/build/lib/utils/is-promise.js create mode 100644 yargs/build/lib/utils/levenshtein.js create mode 100644 yargs/build/lib/utils/obj-filter.js create mode 100644 yargs/build/lib/utils/process-argv.js create mode 100644 yargs/build/lib/utils/set-blocking.js create mode 100644 yargs/build/lib/utils/which-module.js create mode 100644 yocto-queue/index.d.ts create mode 100644 yocto-queue/index.js create mode 100644 yocto-queue/license create mode 100644 yocto-queue/package.json create mode 100644 yocto-queue/readme.md diff --git a/README.md b/README.md index cce66cb7d4..58beeaccd8 100644 --- a/README.md +++ b/README.md @@ -1,51 +1,70 @@ -# Student Grade Reporting System Frontend +# Getting Started with Create React App -## Project Overview +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). -This project is a front-end web application for a Student Grade Reporting System. It simulates a real-world application where students can view, report, and manage their academic grades. This system addresses the issue of missing or unrecorded grades in a student's profile. +## Available Scripts -## Application Structure +In the project directory, you can run: -The application consists of 7 main pages: +### `npm start` -- **Homepage:** Introduction to the system and its purpose. -- **Login Page:** Mock login interface for student authentication. -- **Dashboard:** Displays an overview of the studentโ€™s current grades and alerts for missing grades. -- **Grade Report:** Shows a detailed view of the student's grades filtered by semester or academic year. -- **Missing Grade Form:** Enables students to report missing grades. -- **Instructor Contact Page:** Lists instructors' contact information with a simulated email feature. -- **Help and Support:** Provides FAQs and a mock support contact form. +Runs the app in the development mode.\ +Open [http://localhost:3000](http://localhost:3000) to view it in your browser. -## Technical Details +The page will reload when you make changes.\ +You may also see any lint errors in the console. -- **Framework/Technology Used:** [React] -- **Responsive Design:** Implemented using [CSS Flexbox/Grid, Bootstrap, Tailwind CSS]. -- **JavaScript Functionality:** Used for form validations, dynamic content rendering, and simulating interactions. +### `npm test` -## Setup and Installation +Launches the test runner in the interactive watch mode.\ +See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. -To set up the project locally, follow these steps: +### `npm run build` -```bash -git clone https://github.com/your-github-username/DCIT_205_ASSIGNGMENT1.git -cd repo-name -npm install -npm start -``` +Builds the app for production to the `build` folder.\ +It correctly bundles React in production mode and optimizes the build for the best performance. -This will start the application on `localhost` at the default port. +The build is minified and the filenames include the hashes.\ +Your app is ready to be deployed! -## Usage +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. -Describe how to use the application, highlighting key functionalities such as logging in, viewing grades, reporting missing grades, and contacting instructors. +### `npm run eject` -## Contribution +**Note: this is a one-way operation. Once you `eject`, you can't go back!** -To contribute to this project, please follow these guidelines: +If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. -1. Fork the repository. -2. Create a new branch for your feature. -3. Commit your changes and push them to your branch. -4. Submit a pull request for review. +Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own. -Please adhere to the project's coding standards and provide clear and detailed pull request descriptions. +You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). + +### Code Splitting + +This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting) + +### Analyzing the Bundle Size + +This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size) + +### Making a Progressive Web App + +This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app) + +### Advanced Configuration + +This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration) + +### Deployment + +This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment) + +### `npm run build` fails to minify + +This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify) diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000..d516fad37e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,17977 @@ +{ + "name": "missinggrade2", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "missinggrade2", + "version": "0.1.0", + "dependencies": { + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^13.5.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-icons": "^4.12.0", + "react-router-dom": "^6.20.1", + "react-scripts": "5.0.1", + "web-vitals": "^2.1.4" + }, + "devDependencies": { + "tailwindcss": "^3.3.6" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", + "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==" + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz", + "integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.5", + "@babel/parser": "^7.23.5", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.5", + "@babel/types": "^7.23.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz", + "integrity": "sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==", + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@babel/eslint-parser/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", + "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", + "dependencies": { + "@babel/types": "^7.23.5", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz", + "integrity": "sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", + "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", + "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.5", + "@babel/types": "^7.23.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", + "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", + "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.5.tgz", + "integrity": "sha512-6IsY8jOeWibsengGlWIezp7cuZEFzNlAghFpzh9wiZwhQ42/hRcPnY/QV9HJoKTlujupinSlnQPiEy/u2C1ZfQ==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.23.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/plugin-syntax-decorators": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.23.3.tgz", + "integrity": "sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz", + "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", + "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", + "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz", + "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-flow": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", + "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", + "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "dependencies": { + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.23.3.tgz", + "integrity": "sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", + "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", + "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.4.tgz", + "integrity": "sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw==", + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.5.tgz", + "integrity": "sha512-2fMkXEJkrmwgu2Bsv1Saxgj30IXZdJ+84lQcKKI7sm719oXs0BBw2ZENKdJdR1PjWndgLCEBNXJOri0fk7RYQA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.23.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.5.tgz", + "integrity": "sha512-0d/uxVD6tFGWXGDSfyMD1p2otoaKmu6+GD+NfAx0tMaH+dxORnp7T9TaVQ6mKyya7iBtCIVxHjWT7MuzzM9z+A==", + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.4", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.5", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.3", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.3", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", + "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.23.3", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", + "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + }, + "node_modules/@babel/runtime": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.5.tgz", + "integrity": "sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", + "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.5", + "@babel/types": "^7.23.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", + "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" + }, + "node_modules/@csstools/normalize.css": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz", + "integrity": "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==" + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", + "dependencies": { + "@csstools/selector-specificity": "^2.0.2", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", + "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", + "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", + "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", + "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", + "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", + "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", + "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", + "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", + "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", + "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", + "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.10" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", + "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==" + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dependencies": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils/node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dependencies": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/source-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "dependencies": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", + "integrity": "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==", + "dependencies": { + "ansi-html-community": "^0.0.8", + "common-path-prefix": "^3.0.0", + "core-js-pure": "^3.23.3", + "error-stack-parser": "^2.0.6", + "find-up": "^5.0.0", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.4", + "schema-utils": "^3.0.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "@types/webpack": "4.x || 5.x", + "react-refresh": ">=0.10.0 <1.0.0", + "sockjs-client": "^1.4.0", + "type-fest": ">=0.17.0 <5.0.0", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x || 4.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { + "optional": true + } + } + }, + "node_modules/@remix-run/router": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.13.1.tgz", + "integrity": "sha512-so+DHzZKsoOcoXrILB4rqDkMDy7NLMErRdOxvzvOKb507YINKUP4Di+shbTZDhSE/pBZ+vr7XGIpcOO0VLSA+Q==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.6.0.tgz", + "integrity": "sha512-2/U3GXA6YiPYQDLGwtGlnNgKYBSwCFIHf8Y9LUY5VATHdtbLlU0Y1R3QoBnT0aB4qv/BEiVVsj7LJXoQCgJ2vA==" + }, + "node_modules/@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", + "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", + "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", + "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", + "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", + "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", + "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", + "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/core": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", + "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "dependencies": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", + "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "dependencies": { + "@babel/types": "^7.12.6" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", + "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "dependencies": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", + "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "dependencies": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/webpack": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", + "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@testing-library/dom": { + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz", + "integrity": "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@testing-library/dom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "peer": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/@testing-library/dom/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "peer": true + }, + "node_modules/@testing-library/dom/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/dom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", + "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", + "dependencies": { + "@adobe/css-tools": "^4.0.1", + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=8", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@testing-library/jest-dom/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/react": { + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz", + "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^8.5.0", + "@types/react-dom": "^18.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@testing-library/react/node_modules/@testing-library/dom": { + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@testing-library/react/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/react/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/@testing-library/react/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@testing-library/react/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/react/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@testing-library/react/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/react/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/user-event": { + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz", + "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.7", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", + "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", + "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.44.8", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.8.tgz", + "integrity": "sha512-4K8GavROwhrYl2QXDXm0Rv9epkA8GBFu0EI+XrrnnuCl7u8CWBRusX7fXJfanhZTDWSAL24gDI/UqXyUM0Injw==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.41", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", + "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.11", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz", + "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jest/node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "node_modules/@types/jest/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@types/jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@types/jest/node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/jest/node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/@types/jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + }, + "node_modules/@types/node": { + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.10", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.10.tgz", + "integrity": "sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" + }, + "node_modules/@types/q": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz", + "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==" + }, + "node_modules/@types/qs": { + "version": "6.9.10", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", + "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + }, + "node_modules/@types/react": { + "version": "18.2.43", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.43.tgz", + "integrity": "sha512-nvOV01ZdBdd/KW6FahSbcNplt2jCJfyWdTos61RYHV+FVv5L/g9AOX1bmbVcWcLFL8+KHQfh1zVIQrud6ihyQA==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.17", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.17.tgz", + "integrity": "sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" + }, + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==" + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==" + }, + "node_modules/@types/testing-library__jest-dom": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", + "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", + "dependencies": { + "@types/jest": "*" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", + "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", + "dependencies": { + "@typescript-eslint/utils": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.reduce": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz", + "integrity": "sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==" + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dependencies": { + "has-symbols": "^1.0.3" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.16", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-named-asset-import": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", + "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", + "peerDependencies": { + "@babel/core": "^7.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", + "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.3", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", + "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.3", + "core-js-compat": "^3.33.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", + "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.3" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-react-app": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz", + "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-decorators": "^7.16.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-transform-flow-strip-types": "^7.16.0", + "@babel/plugin-transform-react-display-name": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/preset-env": "^7.16.4", + "@babel/preset-react": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "@babel/runtime": "^7.16.3", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + }, + "node_modules/bfj": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz", + "integrity": "sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==", + "dependencies": { + "bluebird": "^3.7.2", + "check-types": "^11.2.3", + "hoopy": "^0.1.4", + "jsonpath": "^1.1.1", + "tryer": "^1.0.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "node_modules/browserslist": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001568", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001568.tgz", + "integrity": "sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/check-types": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz", + "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==" + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==" + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/core-js": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.34.0.tgz", + "integrity": "sha512-aDdvlDder8QmY91H88GzNi9EtQi2TjvQhpCX6B1v/dAZHU1AuLgHvRh54RiOerpEhEW46Tkf+vgAViB/CWC0ag==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.34.0.tgz", + "integrity": "sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==", + "dependencies": { + "browserslist": "^4.22.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.34.0.tgz", + "integrity": "sha512-pmhivkYXkymswFfbXsANmBAewXx86UBfmagP+w0wkK06kLsLlTK5oQmsURPivzMkIBQiYq2cjamcZExIwlFQIg==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-blank-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-has-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "dependencies": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "bin": { + "css-prefers-color-scheme": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + }, + "node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-tree/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" + }, + "node_modules/cssdb": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.9.0.tgz", + "integrity": "sha512-WPMT9seTQq6fPAa1yN4zjgZZeoTriSN2LqW9C+otjar12DQIWA4LuSfFrvFJiKp4oD0xIk1vumDLw8K9ur4NBw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ] + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "node_modules/csso/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" + }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "node_modules/detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "node_modules/detect-port-alt/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/detect-port-alt/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==" + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "deprecated": "Use your platform's native DOMException instead", + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.609", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.609.tgz", + "integrity": "sha512-ihiCP7PJmjoGNuLpl7TjNA8pCQWu09vGyjlPYw1Rqww4gvNuCcmvl+44G+2QyJ6S2K4o+wbTS++Xz0YN8Q9ERw==" + }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-abstract": { + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==" + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", + "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.55.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-react-app": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", + "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/eslint-parser": "^7.16.3", + "@rushstack/eslint-patch": "^1.1.0", + "@typescript-eslint/eslint-plugin": "^5.5.0", + "@typescript-eslint/parser": "^5.5.0", + "babel-preset-react-app": "^10.0.1", + "confusing-browser-globals": "^1.0.11", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jest": "^25.3.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.27.1", + "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-testing-library": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-flowtype": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", + "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", + "dependencies": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@babel/plugin-syntax-flow": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.9", + "eslint": "^8.1.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", + "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", + "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", + "dependencies": { + "@typescript-eslint/experimental-utils": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "dependencies": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-testing-library": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", + "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", + "dependencies": { + "@typescript-eslint/utils": "^5.58.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", + "dependencies": { + "@types/eslint": "^7.29.0 || ^8.4.1", + "jest-worker": "^28.0.2", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/eslint-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==" + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", + "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "node_modules/harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==" + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-entities": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.4.tgz", + "integrity": "sha512-3wNSaVVxdxcu0jd4FpQFoICdqgxs4zIQQvj+2yQKFfBOnLETQ6X5CDWdeasuGlSsooFlMkEioWDTqBv1wvw5Iw==", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + }, + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "dependencies": { + "harmony-reflect": "^1.4.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "dependencies": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jake/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dependencies": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-jasmine2/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-jasmine2/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "dependencies": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz", + "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==", + "dependencies": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "jest-regex-util": "^28.0.0", + "jest-watcher": "^28.0.0", + "slash": "^4.0.0", + "string-length": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "jest": "^27.0.0 || ^28.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/console": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/console/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/test-result": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-watch-typeahead/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-watch-typeahead/node_modules/emittery": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-regex-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", + "dependencies": { + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/jest-watch-typeahead/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/string-length": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", + "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", + "dependencies": { + "char-regex": "^2.0.0", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/string-length/node_modules/char-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz", + "integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpath": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", + "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", + "dependencies": { + "esprima": "1.2.2", + "static-eval": "2.0.2", + "underscore": "1.12.1" + } + }, + "node_modules/jsonpath/node_modules/esprima": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", + "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nwsapi": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz", + "integrity": "sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==", + "dependencies": { + "array.prototype.reduce": "^1.0.6", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "safe-array-concat": "^1.0.0" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "dependencies": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss": { + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", + "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-browser-comments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", + "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "browserslist": ">=4", + "postcss": ">=8" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", + "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", + "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", + "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-custom-media": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", + "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-custom-properties": { + "version": "12.1.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", + "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", + "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", + "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-env-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-flexbugs-fixes": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", + "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", + "peerDependencies": { + "postcss": "^8.1.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", + "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-image-set-function": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", + "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-lab-function": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", + "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", + "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", + "engines": { + "node": ">=14" + } + }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-logical": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-media-minmax": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nesting": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-normalize": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", + "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", + "dependencies": { + "@csstools/normalize.css": "*", + "postcss-browser-comments": "^4", + "sanitize.css": "*" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "browserslist": ">= 4", + "postcss": ">= 8" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", + "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", + "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", + "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-preset-env": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", + "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==", + "dependencies": { + "@csstools/postcss-cascade-layers": "^1.1.1", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", + "@csstools/postcss-progressive-custom-properties": "^1.3.0", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.13", + "browserslist": "^4.21.4", + "css-blank-pseudo": "^3.0.3", + "css-has-pseudo": "^3.0.4", + "css-prefers-color-scheme": "^6.0.3", + "cssdb": "^7.1.0", + "postcss-attribute-case-insensitive": "^5.0.2", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^4.2.4", + "postcss-color-hex-alpha": "^8.0.4", + "postcss-color-rebeccapurple": "^7.1.1", + "postcss-custom-media": "^8.0.2", + "postcss-custom-properties": "^12.1.10", + "postcss-custom-selectors": "^6.0.3", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", + "postcss-env-function": "^4.0.6", + "postcss-focus-visible": "^6.0.4", + "postcss-focus-within": "^5.0.4", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.2.1", + "postcss-logical": "^5.0.4", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.2.0", + "postcss-opacity-percentage": "^1.1.2", + "postcss-overflow-shorthand": "^3.0.4", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", + "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", + "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/postcss-svgo/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/postcss-svgo/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "node_modules/postcss-svgo/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-svgo/node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "dependencies": { + "performance-now": "^2.1.0" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-app-polyfill": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz", + "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==", + "dependencies": { + "core-js": "^3.19.2", + "object-assign": "^4.1.1", + "promise": "^8.1.0", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.9", + "whatwg-fetch": "^3.6.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-app-polyfill/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/react-dev-utils": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", + "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "dependencies": { + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.11", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/react-dev-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/react-dev-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/react-dev-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/react-dev-utils/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/react-dev-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-error-overlay": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", + "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" + }, + "node_modules/react-icons": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.12.0.tgz", + "integrity": "sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==", + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, + "node_modules/react-refresh": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", + "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.20.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.20.1.tgz", + "integrity": "sha512-ccvLrB4QeT5DlaxSFFYi/KR8UMQ4fcD8zBcR71Zp1kaYTC5oJKYAp1cbavzGrogwxca+ubjkd7XjFZKBW8CxPA==", + "dependencies": { + "@remix-run/router": "1.13.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.20.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.20.1.tgz", + "integrity": "sha512-npzfPWcxfQN35psS7rJgi/EW0Gx6EsNjfdJSAk73U/HqMEJZ2k/8puxfwHFgDQhBGmS3+sjnGbMdMSV45axPQw==", + "dependencies": { + "@remix-run/router": "1.13.1", + "react-router": "6.20.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-scripts": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", + "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==", + "dependencies": { + "@babel/core": "^7.16.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", + "@svgr/webpack": "^5.5.0", + "babel-jest": "^27.4.2", + "babel-loader": "^8.2.3", + "babel-plugin-named-asset-import": "^0.3.8", + "babel-preset-react-app": "^10.0.1", + "bfj": "^7.0.2", + "browserslist": "^4.18.1", + "camelcase": "^6.2.1", + "case-sensitive-paths-webpack-plugin": "^2.4.0", + "css-loader": "^6.5.1", + "css-minimizer-webpack-plugin": "^3.2.0", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "eslint": "^8.3.0", + "eslint-config-react-app": "^7.0.1", + "eslint-webpack-plugin": "^3.1.1", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "html-webpack-plugin": "^5.5.0", + "identity-obj-proxy": "^3.0.0", + "jest": "^27.4.3", + "jest-resolve": "^27.4.2", + "jest-watch-typeahead": "^1.0.0", + "mini-css-extract-plugin": "^2.4.5", + "postcss": "^8.4.4", + "postcss-flexbugs-fixes": "^5.0.2", + "postcss-loader": "^6.2.1", + "postcss-normalize": "^10.0.1", + "postcss-preset-env": "^7.0.1", + "prompts": "^2.4.2", + "react-app-polyfill": "^3.0.0", + "react-dev-utils": "^12.0.1", + "react-refresh": "^0.11.0", + "resolve": "^1.20.0", + "resolve-url-loader": "^4.0.0", + "sass-loader": "^12.3.0", + "semver": "^7.3.5", + "source-map-loader": "^3.0.0", + "style-loader": "^3.3.1", + "tailwindcss": "^3.0.2", + "terser-webpack-plugin": "^5.2.5", + "webpack": "^5.64.4", + "webpack-dev-server": "^4.6.0", + "webpack-manifest-plugin": "^4.0.2", + "workbox-webpack-plugin": "^6.4.1" + }, + "bin": { + "react-scripts": "bin/react-scripts.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + }, + "peerDependencies": { + "react": ">= 16", + "typescript": "^3.2.1 || ^4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", + "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^7.0.35", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=8.9" + }, + "peerDependencies": { + "rework": "1.0.1", + "rework-visit": "1.0.0" + }, + "peerDependenciesMeta": { + "rework": { + "optional": true + }, + "rework-visit": { + "optional": true + } + } + }, + "node_modules/resolve-url-loader/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/resolve-url-loader/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" + }, + "node_modules/resolve-url-loader/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/rollup-plugin-terser/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sanitize.css": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", + "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==" + }, + "node_modules/sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz", + "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==", + "dependencies": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead" + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + }, + "node_modules/static-eval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", + "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", + "dependencies": { + "escodegen": "^1.8.1" + } + }, + "node_modules/static-eval/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/static-eval/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/static-eval/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-eval/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-loader": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz", + "integrity": "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==", + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + }, + "node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/svgo/node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "node_modules/svgo/node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "node_modules/tailwindcss": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.6.tgz", + "integrity": "sha512-AKjF7qbbLvLaPieoKeTjG1+FyNZT6KaJMJPFeQyLfIp7l82ggH1fbHJSsYIvnbTFQOlkh+gBYpyby5GT1LIdLw==", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.19.1", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz", + "integrity": "sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throat": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "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" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/underscore": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/web-vitals": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz", + "integrity": "sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg==" + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "engines": { + "node": ">=10.4" + } + }, + "node_modules/webpack": { + "version": "5.89.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", + "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.15.0.tgz", + "integrity": "sha512-H/Z3H55mrcrgjFwI+5jKavgXvwQLtfPCUEp6pi35VhoB0pfcHnSoyuTzkBEZpzq49g1193CUEwIvmsjcotenYw==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-manifest-plugin": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz", + "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==", + "dependencies": { + "tapable": "^2.0.0", + "webpack-sources": "^2.2.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "webpack": "^4.44.2 || ^5.47.0" + } + }, + "node_modules/webpack-manifest-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", + "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.19", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", + "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==" + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-background-sync": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz", + "integrity": "sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.0.tgz", + "integrity": "sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-build": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.0.tgz", + "integrity": "sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==", + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.6.0", + "workbox-broadcast-update": "6.6.0", + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-google-analytics": "6.6.0", + "workbox-navigation-preload": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-range-requests": "6.6.0", + "workbox-recipes": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0", + "workbox-streams": "6.6.0", + "workbox-sw": "6.6.0", + "workbox-window": "6.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/workbox-build/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/workbox-build/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/workbox-build/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "node_modules/workbox-build/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.0.tgz", + "integrity": "sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==", + "deprecated": "workbox-background-sync@6.6.0", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-core": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.0.tgz", + "integrity": "sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==" + }, + "node_modules/workbox-expiration": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.0.tgz", + "integrity": "sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-google-analytics": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.0.tgz", + "integrity": "sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==", + "dependencies": { + "workbox-background-sync": "6.6.0", + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.0.tgz", + "integrity": "sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-precaching": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.0.tgz", + "integrity": "sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==", + "dependencies": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-range-requests": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.0.tgz", + "integrity": "sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-recipes": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.0.tgz", + "integrity": "sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==", + "dependencies": { + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-routing": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.0.tgz", + "integrity": "sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-strategies": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.0.tgz", + "integrity": "sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-streams": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.0.tgz", + "integrity": "sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==", + "dependencies": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0" + } + }, + "node_modules/workbox-sw": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.0.tgz", + "integrity": "sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==" + }, + "node_modules/workbox-webpack-plugin": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.0.tgz", + "integrity": "sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==", + "dependencies": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "6.6.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.9.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/workbox-window": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.0.tgz", + "integrity": "sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==", + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.6.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000000..adad46844e --- /dev/null +++ b/package.json @@ -0,0 +1,43 @@ +{ + "name": "missinggrade2", + "version": "0.1.0", + "private": true, + "dependencies": { + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^13.5.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-icons": "^4.12.0", + "react-router-dom": "^6.20.1", + "react-scripts": "5.0.1", + "web-vitals": "^2.1.4" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": { + "tailwindcss": "^3.3.6" + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000000..aa069f27cb --- /dev/null +++ b/public/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + React App + + + +
+ + + diff --git a/public/logo192.png b/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000000..080d6c77ac --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000000..e9e57dc4d4 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/src/App.js b/src/App.js new file mode 100644 index 0000000000..d1cd2efc77 --- /dev/null +++ b/src/App.js @@ -0,0 +1,27 @@ +import {BrowserRouter, Routes, Route, Navigate} from "react-router-dom" +import Landingpage from "./Pages/Landingpage"; +import Login from "./Pages/Login"; +import FAQ from "./Pages/FAQ"; +import Dashboard from "./Pages/Dashboard"; +import Gradereport from "./Pages/Gradereport"; +import Gradeform from "./Pages/Gradeform"; +import Instructors from "./Pages/Instructors"; +function App() { + return ( + + + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + + + ); +} + +export default App; diff --git a/src/Assets/OIP (1).jpeg b/src/Assets/OIP (1).jpeg new file mode 100644 index 0000000000000000000000000000000000000000..8ca1a2ceb114b7f2688a0274f1e1051c61cf7d05 GIT binary patch literal 47973 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 >2Oz@PXK8 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 literal 0 HcmV?d00001 diff --git a/src/Assets/OIP.jpeg b/src/Assets/OIP.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..99eba5cec9f31dbe712262093a8777d5435cd7d7 GIT binary patch literal 8273 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 literal 0 HcmV?d00001 diff --git a/src/Assets/laptop.jpg b/src/Assets/laptop.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fccf6ede7e5a2a879d1161198f5c5e923e1f1a08 GIT binary patch literal 285246 zcmeFZWn5L;-Zs3DR6#&O8U&F>ViA%erBWi@u~@Jc9g8jnr9)8ZTu65}NF&|dDBVa% zJ`>#goU`|N?&tTO5ATP)?=wEY9CM91=9pvrM_t$TAD3g7b0EAIQqQG8C@7#C>NnIu zpvz5E{g*H+gq0o4%9@6oodd-G^tl`w8VCre;uI*FAXIXCX$lk&=mrRl;s!eCm8^lK z5!}**#@fIHN&~U7gg~tkG{)uz2pYJZl?4=G3y09a&CTuY5Vi&gxRoV4kjTQ?9s#wb zF)~0H&=^=6m^<4cXsm6mOl%D-ETFa&H%LLZe~$uLU&XPmlOf=cs|cnM+yss=Fu%V3 z?UmPw;FdtPmQci1RS*4bBI0gbyn9uV*Yx`uV<_*&Eb~UmzZ`?TL(Dg z`udgyP;?Wh1=RAoSeWL&>g)O~)=(>J^IxeDPzcP@%G}E2x-94rn1StedMrbGJ0Mp( zyXyxWppf6*j0Oij{OaD#e^m2T?AAX@`|AN)sI}E^8U3ng`1SppzgOpV4AmNbT?n+R z2D!=w#{q6 zS8=T2zg;{1|6|qHeFk(n2@(gP-na@^e^G&ehJkh!urM&tF>Yerx^)xl=FMB!xY)OD z-?@GBCJsK%9b7y-e7sxOcM0y|5dhbCSDBz(J&B5j1w4p%`{r%n?td6Azku+uFrHw( zMn%B~-M~jd#Yeep22p`fKq%-aK)CAj*Wm^#ItC^d8p_RE!0&o^AQaRaXsGC@Kv~gm zVuEf1V+Sf4kOKeyT~0A90!0HGLfSWUTu%)Pi-~w&+1iH{HS|B=<`ak5A(C$r^EB?z zgC&%VypT=v42+V{@RX8!$|?`N2X;xMJ`Msepa9-{Re;~$4*W;Cag{$R7Vzr}eBf8$ zeHiGs&@h1d17TiA(eW|vbBf(nw0Tq5fJs1WU`xjZ=6MyCT+}~L_|$Ia0XMIqS0fR9 z`0hh-V&uR*C1uFv1PB`yC^|kWK1dXFuJq);;lDNT-x~OD4g9wT{#yh8t%3j6!2hcT z#BLe~V09Hg8{w>u zyk6t|FZe^uDjBq)4o%#9r$*RpI!1f+S@cdKQAnF{g?XKbs^ft)F*Uf?+F91ER&)3e z;&w5;UP~`)U-EuL0?TN(OlrMX8b^8}KUX`jM6$z4*6gUrfql?pm=8X$EOCB1{K-ls zU^|eJZR+JPgo3ypMHJ%$^vrE+>5huMjWGamq?aV?IOrA*0fwrm#46aB??cQcDXgO~Fu7vhKCDPLOv)UBX@P8xAkcg@~*7jRe0&eS(jh zf%U&4&^-uiB2SHwDhwv8>=6J7bp&JuKs3{zDXA#;%ML5A;*E}_^THVUS9VUx)%eG{ zwwGeu>RC24TMbGga@MVGZ>o%T9>E{ijgL32o1sz)RQ;4*pKINW61)egN=DQT%b*LE z-<9Q~YY18qeW@NKq88G_axfN?#8)mvLP7 zp;l^V-L$)1qafXZEBkRzM5H=fEWzM zxMIlVvRY8W-sI4@?mu%pcgLqtHLK$R#kh*|PdRLB^B&*Hh^LZqAg!EEx3Hg4D}3uq z#l2nO1n;|_%?oV)zwt`k7up$=FwXc?SXeW)m?Rc3ZIcqWC}$EB4m|$&1Wi6DV#-uU z95tI~J4nA?F>S>+^$NfETL<)_pMD$1E^$LTETqIU>loXf?g}gW%!QBDY~PDkTjM}< zNgUWD_V?_b%7yk=dg4S5f}0QARyPy$W)5btp%jV{qlW&jtGKlrU5-__BaV7rb)AQ% zbl*8YYQwT1{a^%%%6r9}%iQ%=80vqAIMs-JwvE>CKCej#@ zU_Yy}oPJ}!a!Xp;$Kn+3l9wQ&E{K0>0qVX~fBDdXO05$YxfDTCISP;bCxYMu>m#id ze6l*7T?_Q;05S_^26EWoR>{xAIiDa80kaF1sOKz!`k2dO9t8FN8BqVQ{lWi=UH~dV= zVnA@2-lj)3;FdhoXzkyYViL$rrlt^|H=}D7 zEG5k{cC{v)n!78v?Y38;S4y&RypTz0KL@ELIa~SK&JdhB=&++n&wr~t+C5v8+6b|p;XCyD#C z-lQXO5>z)+JRlyT4Os7dm{~5EqvQmq#(2hi#=ZBYmE~7V2oYT=sR0pOGKTsvhCIJi zjlcCUhuQdq>_ZU+i7`{xDNkrf#Ehi7{-l)Pw=s|6suT45B|$OYhIPq&)BHw3Xy($X z*4xg5a>!)pzSE!OY|aOs{a zWeh_B{|W_0zGJ!tRoFX@%$JX4mKQh+J|$ST5my- zLcK+D%J>|$4DOKYQu@!)*OmHLocRF zth%f+FR)0b}ZgugNJr{~S>T!btjZi`}k9<=n37d$5iiI45(6xB;qQU1l+-00k5tA+3m!Q`r zr$0kP1@edH7hkxf^l0xB#Ti#Wx3xZgVa&J|dMd-*_*2oM%z8vGVPfJU({hEM}2c6j2$O1JNmOzKcuI7(W%sJ z2d!pSB$a^`7}$5t8qQw!!#@}4?h-cU&9f}}o%0>Lt0L|DBPLlRPG!JpZ*5k$pKVTg zFs5$0juT*q3-RQVh0DLDX|+5az;a3|Es+6o2}QU#Aq|N;1ksoAUa+t$iSSR?6Z{N2 zke1--{~#^{ZBm||XZ3^Egidc=fxHRS%Iwf(LLS|9_6RpY(3|978rOnW;l=f{7gyFiac#|tm0?uo27T~@IRCj?O%4ls z2JE97%=F|t=NOkDLa7`-5XNiRjr#|G=Rp*M$gR`KhWKIlfo+A*KxGi@jkmOGiX4B{ zooc6C&wF7?A+7SX2f96*{aZ(+tWD62uKk-W3oM7=P-FhBqk~5ZSxv_;f=dv6ZCJ1) z13%Zcu1nC}VpWdAf+3e`+i#1#%ZUqqw17{eHsxl1`Wu5w6dwb_hzXlWab(fD z+`U*SoX?-bhVFjx-KkasGAwJbDf2-(^Aye3(H`OQ4N+2Hy=5<;}@(eSO@mP(Jw8LyE5$l)dinG zD5cN7A3aedQzC`sY=FGcwP}A4lZG}STAykVPqy!8PhWzlPzZO`*`4Z&Dz7%K8+XP8 z<#e~j`U#M#Ipo6P?^Kr5?y#K}*xMX1ns&l7;VTPxuNue31i-XJFaK%_zyGYfh82-` zYE9}E#I5)YSPOPic@KVIMfoO-dYfc8mg++7oI=t#fNB9|ulKzwz{HoF$NA-p@Cewo z=h$9?(`7@(zE);KHA9b_vMgwNi^>GaAV;+>e+%*~qq@GvQDimU%74u#2g!)^;w0oO z4TAOYqySJ4TgSGTX=q5E{>`5`GsDk(bSz^w4$vkXS{|!x|K& zKOd;T$m9Q2kk@ejJi<51N+nl|BGHtTVT`peJa! zGM+NPcryQCJZMt+^s{7Q7zLUW4?jdYdBA?`ic98&G`Tc$-|7tN4dJtDz5r||IWMSe z(m1J<+b06QC2dd8kvic1*8dAi{yY38wjA|xpz>hQFU287Kn-*!A%iov49xy8rkC`= z=1hf0yTr=A)=qB6`lB+PB{vI?WxsX0dM~n~333afGWMkqi~@UMg-i+NA?1eW_%Ug! zt*!fZA%2`PdEjt0GBdD=Qn`!N=L?v`N{VHp{SlLJ(JuF*SvgI-k>ifIs`!ILZJrmT zTTj8`xzpR{-|w)Rmg7%v7sUu_KMLWqXzY!Xj$ZMJVJ8kEB6Lx3@N~LxA5^FkR#1MZ zdzwI3Iu1F6p&ETk5hHW~UD*N;Bm^*q57s5bUvTelT@58dq?9SQ`m~&&A8+}$p2?G= ze#0lrQyC>=G1oaT+6+QaDkMp83UsO2Rt}Yg_YxrQIJ|z7J$-hAK?*kQBz;eqPeLS# z=I9#SNDd_VhsxEVWH z+WgUdGV_tGql-OXVjdm8t)s7UlzIO)NVI)EGC2zUZIF!^xc9;E-9hts~s~{Wu6{*{KRnp2$`RXxhUr zWXmyALfG$bk4UpcYKvQzl$5~*zq&|t_qH|QkbFKOKV*y=9B5q<&)YEWMqQ`M$oBdP zZzNO(DQIgcGR}HN&HCyE(7oCWT**N3ddrJcESu%5r>aK-tIw6s7D^zIS<+mT4t9qy zYUOJxN8F@%{#Z`D6E#M7HI+`!*SCRitr$Q7XMRTk`9x#z1sJso;v1J4%5)#PSvY*- z|80z6ai^@JS_;Q#ok`C;V0>4!9k9YyqxeKpV$qWLnms~5f_?D}D=TJX^f9B4AXZ6h zK$jOz!JgdIeBLxGFPh`@eMNwlM;HI^4?1Hj-JNBZ%j0#`(xz*@Q=dE_v_Up z2pF~cfu#1mYAHNq@(q{034f^*>R&CdHd)4=oP?3^ho(;knqIaMnI_Fk>EL?Z^y1#k zr3UNvsmcA)GjbzpTOL$crrCD2TAQp3Sy47&TdmVm9#}r~YHqcLOmdWU_uBAJ@b?GT z9}~fmo3IAN&>8pC)WZ*n4kG#o0L1c@thF#X2xcbr1tkgV?fd_1ne&%S?aacQJJPq- zQ7%c~Hy9|^y#45|H({mW#A#4Mo5{OfUvn(7_U$?Ue$8R8Z=V{|_U{kHyC&H)><5tL z^OU=aP`y?v;CP%e?Q_4rt!crRm|M8x+aLmXv662Op8| ztoaSQWoD%&zwK0Fp$)EmK6pS&5lryY=99-K$4H{Szhu4tr-g>_x$$T@)sTMAFh?Zk;>@bq zPNA&%k4m;Oy8<)Vqa#`}%OlI9#1bTb;d%sHUd7i92PZvpodRp1`4rIP14eR4S@Vea zqUF==NCZBty&V1|j?P1PgP+cblf#xAbcK5ZR87EbYl05m#S_$HBtnzP{HW_WM|R$) zF26n3HifJq1q=^7?;4@TP2bN*<|{!=W%3-0{-hk{gYfe(~_W39@N4@CUMNnR_vKa#wU2 z|C<2q6(nLoNStxZbRVT{S!iq7O;M)Xp*iC8C9B=(_=!|g#ep!s0H-sv)o~t#kd4h- zXJR^PR%w`^iWEKN=F7=ra9Orf1PO z64=OlJ>{{h#gvc_jmWvLrpB04)3M~`6nOI&HXRKjL)8R>{vAxi;PK}a8d>eG^5HP< zyC)RvWd9AcE78pMkwkaZF>;c9P=vSIuC01{XT>L{%4=NGJg_R|O%A0_ch3Q%Z{`&+ zhrtu&NSeV>s;vC^RK?i>hac1SrvmQS^JAKt3ATPsHbg`PMo{XzFx=Pun1z2YBoE_} z|2{^WPg4??tBO9k82+gELFoO%91(+fg95U_{1?trMcN`-$xlA@3Xjm)e}8oGA*h{ul{dqK{Hhd$A9diL{gn#ZAR8|c`4|7IijLEz}i*!mwxG#QnWo(fnU}%G^ z3rD&3O(5NSk`Rj`-=3V=Gjjhqhrf25xO0iFcz(hYR;9|tCSBD~J-Z^1EvqZgiV+gO zR&r#Quq4XS%~1)Z6q0jst?V`8dAH6{_>eV|H;(%`82|a!8{)kh=jxSEg^`jCRmZ@t z>;n=3V_KJrUQY(0woP8q$CYQida{EA!~5xF&YrHLZk!)&ILfLCWoDnbZyQ5urvb9; zjOb9WSdp43DBdLdAVPs@tO_1g8`V>M2=R5>-!kSIt>&eAtvJ})!`K?+g$J_Ae^OTM zuv#jsC;`Wtwa`Fz<6BNiNZ9)D(W_i>^#<=!3(TsuipkepvSw=jefE+tt=k);rGEK8 ztc2X`V*0cfK;+>rG%YN<8%io7!*5~Ku6gkOR=QLnhV`$Vb9`c}jTJ7-mRb3=vsrTq z%XX~WXl%6nQ4J~T(~fi=FfQ<4+bI4}dP38zRhYiJ3RJ?nxgk5@2zCSceS&q6XDXhS zN-bZjsh^L17+=;dqP%&$f-(L`(A2A6P-7KH*E@1?#>3(N7eOe5>!k4!ojZ2{5SBP|6c}r z3~r}3hY7M2cu51>!fNL@9P=K^$=0`qHSfkL7C#&Dx5pFTrv~CD&61tXU7VgX@SWhi zha!mAZmX~`=9YvhJ!wdR1Scoa{P-K;b;r+8Upa{R7{>J$t5>XAd@nulwj};1fle;w z+i3Rxg+Lb+o+~59&6@q}xu}xY58>#|UL6%sI+AdZ=1sJ^9lNR0tKoo1$#Ybq4C_6e z8H;j7ou8t|EsZGC^uf_l5{U`zrieYvEq?U1U<_+j!c0y3r#;_Px(SD~vZQj`i~3R# zofnSgrYPV;ADapQGq%{FRMjYe?e-a5E#WMxWq~E!fycIE6QBz8gKv^}e5^$BlVEJy z9L4W0DPr5M2AP^BZj`~|X6TaM2VYY&$>t3QDxrtfUHSSpL%;7Zq4bp3J4~(X9VYTt z)r2Ni(6C(@FD^mvU<(GlUCY6z-a{F%g1$|k=x-E{LmZ{h-mT8Ax28_jwf1)P{K?rI zfG~{=rQrXD>=x)1=0>!zz~X+gu-~8t3-qXG&L6$pvOBfAwrLkIz>N$MYM( zC%trT4bu08h4WGV6)Kpr zQn_Bj-yEBg_E{)Hx;cKjx#euHg|JGQB$Vv0LoOP1nVSD$*4p>eGNBX*;K5rRe7LrDp?fVyxBt<2*&yJYd5Xx0wO}gsFNM3T91ZlY*`bXyGNM&}-IQ z%?Du3;Z8~AV1-BQ-20fjPw&H0i}g4kAoJ?fxahtD>L}IZh6v3Khbz+Dj}$y3ZMk@c zk83y6KA}hFt%>pZLlPEeb{#m~JK#1%V!(DAw~H!)F`l?ehG-qHi-n!5j=y)%lM7gO z39NigN-3JJf-td$T6}XJ?)gQT7pg7Z>i9Y-1ASZW{{@qHZQ13HAFPXRacgqMZ4>ie z*8K;6n03(5h+QvO3g;^tDplTaUxH%OgKWC*@0ekHM-TL+fZ!(R_~a_AfbETP557}R zcwK@F8b^fq@S%DBIbo+?1$!xqsP74Fz0`UCS2W1~q0G+gYFh5d=;27_iq!?H0p~$I z8i7xXp7_5h=gV3ktopg#Q<93Zt`lwe#<{JlOl1ZFa5`KeT1!f(=Tdq4=1tZ&C_oiqiJ)4i(g;0s0MIkA?b0g1X!SsoA z)Z$31-n`bHn7w7;qPToWzG2n{9d{N)=ftee)g&@d#9fNI5n&h}Ly}}BU5zb1W3wyT zoLkpQH9{7uW*UFLub@JZM9{_zS5`@(GGu7RDk>cET#O(Zf2kEv(LaKY#IPR*k;=$4 z2{-$HUvBt;2>_!ALL$f@#}LwF@^rWFbcVAj3UJn!Z`LReX_Y2|wd`*f4rQs+-+D#koLzA6 z^nMw(`Yr}XvBAI?Gt}*%XcLE0(DmzQ5jhIqXtB48kPvo$)4T&j=Gkp&YD{~pbcdpv zdvEsgDawSraAIZqCY)k;`Z!bUGQW9c{Sm+TE5@*DH~d4wr2!UxsIu+J4gaV#o&>C{ z45WaH{QEDQQs$GJX9x!j-l8OPsAxC%r-#~DX;2fKO?_nM-b8kOn&fKeOnldF<3iZlOn6Q*`O$xHcbo1)w1TY(HNs$raMd*a+^(gssOtmf zC#BQ?_dGixlhY%%av=j1^-GXZvBaS-CF-@zj#wvCB;a!K$r zZ8y#+F*tcSN;0QU&Y3df*c2^c10gz2SapgV%jKx!6|^9&o(4242v@diG--R$X0{4G zx!{tV&E!Lpxri@DuHL#q)}Mss8?)$;T-r9H(nIFLVY%#rMiT7spjwaqkVW}XaLA;T z+Yv5zKS5gHyA*V3st?nNGopYVwctSb<*;?7A&W}5sPS8#Jur+m@CiB4FN5F%v%A_; ztmuG3#h5AyC) zp3=kZkH$Q)Gz#VrCGV?DD;;Bs9D!+R-{usfoozhzIMn(eaGT7V(fg<0C5Xe_kNIyv ztq(;dNA;2}yy&FFw&U^&S0X+sV#6G;Inmr-D+y}k#vZ+=OEo2{D7!jLSv<0&QTw>e zHMG*Zn1FaSULbQbdg<#`?y z<{DC8=ef?=br09CqUXBnb=+xb7*}fzoQhsxt-&HPNlP3fL%)sR#k_U5jz8qgYUdVct?gFEv5P^t$gDzJO4~*(1B^&dqY?L~@>BU$-I)1mX;gAl`)45NV+pGa;i7if9^5SnPXyH_^FlDgsfXghI_*r za$)=Q81%e6m3p7;sZdK#^)cU#lD*e>(JP-X;>R*sK*YTk?a-o9q`QSPoo4eHpL%2Q zn}|SC$7>vvTo6hDD)N`R8sN;;*e1g=(F!(Q=3fEr(qr6L30{9hgj=RB<5bZx*hG(r zDGMj~IV<}Ujc8My7-P6>-+x`tr80Q(LDMq>5&X7xmwhoAHr`Sl&?V@w+iHfUv(M1^ z@7YaCW;iL)Q`Dzi$A64gTWt&D`5E^9i)Qe8M3mG@4%6gFt(!m_1}V$)E&OsFNpWl$ z;ypJ=9Y7kC1&ge^E9{6%dR=K@qvW`MX<_*Qr_miKZ`@<6QqUoHZEQ{``5C5!RCY2A z&htLBrwxuRKa_=D_OB{&Oulq)P2?V(^Y>FXNUArCetW?6xWKG9zWB)r;5*{|FsW#Q z6)(m&Vi!=X$fVWdqDd1WH-jk_;5obD^3&@+%ll8suFTw~O6E^yKA`cNnd|ep_D)<| zIsLy{`S0>Lsap`NjB3$8$m4vj<#Cn`xnv+exqsR%n(m=g(}PePGpW?(6_A+!2&7-@ z)u}OdxyZiiVB=3sC%A#Aro40?%{yN7jB5E#pU0K4pSy)*Q$kf=Nw`J-sMYpn4P)2Q%;HcJ#3$sv^V+#4On83u3#Y$a0*A`ssr+FD z_?L``g~rjz3HP|ZL$n&V?;W=CqPBmO&$n=27&d$>u`m(=Xe_>r9v~z*HDhb{?{>jq zhIX_Ib+^rxGYMuNb<52Nsgcqoo+J=22qD2Xs&!sBFu?F3L^q7v z(ajC7KR{V~yCMN1_nbT$SCwO>Poy|Z4Sj9UdnMyZLQTLgjm9FdEBG{d@8x8}wK}J~ zdY^oE9q2LvWaNiTQ3@}Q0EvcOnf_Tn;BEEcrG^DDmV5H|8Vjl)17Z114fuK4a+73_ zn+G)(A6&aa+)wGYY%C}LoG|Vby<0l@ei4wz;SEQ=oXp5AbOc-Tate=bY_T8<9#`D)~4w-I_x`BL9u5-}e7;3&2m`mE6L`$sTm zb+yq3e6Z$y@YKywu{m!(WO7Qm5?8oa1hW$z8880?S^o|e%P(xNbheNu5@*nVYdF`h z9=2dr`@pv$mpt5?a=ul4)G^xnd;F{f%#6V*@ma$;jAc4Fl67aORMpi@F099lyw%>V zmmzk#Yco@`Zp?zvyj4wAfc7CELh)bbJ~d-aQ;3v@2LuubNd1gn^9^KX@6%qj;@;)_ zpgi?Gn`75>sq_SYXNl0fY-Fx18)w~mzdujJo}g7!eeL5?rQ})Gw$##z$=idAja>`Y zm)5eV6 z+Ga!B}t2 z%vRZUNwb#CEmkw9PVQuIvP7`wRXo2ER*=~A@#7d>JI`pTVn?Xmifw*tR*$&z`N9V9 z5-Zy@Y3jowBN+t)-UfWf$8Nwd-7VR3dL@jx_MI{4PjWY*&AUB(C5(X!H#8y@>k`H4 zTkx|S&2_}AFmBOI_-g@^(Bf}CUgQ_QdKAu8kGj&k?LbxI1T9NmuPkmqTxV%bpPvh` zSFN0Zu_^AV$nuAF2Uk~|;Tft#u8+`s?4LAnv#GWuwxe4YL^Ag~6wYI<7(t&`k3N_)Onom7jQ7&}jCFm|^3I_Qwgk|ttB;(xl} zWZ#;vosO?-6EV}c;GT)(@n7y$sL~pCl=5q3KVAxt$r;Zf4A-@+sSdE)l3b?y3HFS^ zmI2Kj8Zv8koGB6vC4IN=tx7_BOxnoH7d(6D+7aS9q^!y#+B~vG^kF!BuH~+mAm?LR z{=(DWx*kmT%VLr>AP-BxiYH=I=hBE{&gTkisdu=OCmQ!MS~r`$%uV=rM;|_s`sU=8 zpdlTriWrETGyyP~aT}zM*fRWbu5{y83sZa~^2^!8JtOlxHprQh6e82#~~6_ce4FN@t8+QA1Lze!&2puoXBXE#APBu?ZoJ<)H(K-zJai z9cPM~3OWw!@TXT;^KSr9gi0*Q^aZxsjaR*P5yceRDQp?lRAj1xap3Eo&VTZj)C+)o zaNh!s$VMc&gOtr{(uno4*r5_Wto|#;yHoQo+}0Ty z1e%PCJIQ7AQ$J`1M1*zso`8;VMxS@=Dh7WUZ*JQkls(_QJ5s2c)^f7h%M^8*8lkb_ z5Q|QeT=KF-4sVHs&t{h)S_G;mM2roT8mc2IJ955&U5UXEqvv;ot6sO8!R03!6}pc( z=7sz#f^2^*^KIc}0!7W6zRp?T3yWG|1qt~e2(Saj*5Lcy(+O}-D8|uZ-8c;J8i&G$ zzFtAAD}JMDA=|X(TQ;^UK-knGNKKRYyyYp-3Yc=nrqcm>#(}-AAToW5@~q!Plu{E?WrVzg9e{O(kp?ru@u_;h2Jn#~n&&JbR4azp<& zIr=zePsUK%uY_T@sc2e>%>}d+6zSGjpc7;Q4o4rJxy3xjr55k)k^YIeMY%YMd8B5=55(K8MM9H=&+$E-uHze7K_6I) zU#I_M3U=RbHQ65a>awv5X;JfV?w#-4f$SQryFbKj8Mc#R&Yr96M9GOlW%1UX{<@m^ zAYMonbwHSKw3t63lF|PX^fTGB*p4%LVsLhzE$sD_j(0A7o6^RdXS7;1j`DDE#q-2M zDl3XZaF-Q)q&_#--|#W~qNBifG02X%tE}HN~=(Pw)!^ok-3S!u$!Vls$Fwg zr=V~G2-?K5t<6~Nc;lPOAu5v30i55n6X*Gw3&6@vQ{RBra4kq@ni*gU&lxwbtcs{VO zJOiOV@%sZ2BDPqg!(<-O5u0mvY>*n%zAgM1Wl6rBRsGhe3K8LPz*aZAWBIAdvaz=5sZ%NE3)Vkxf5Y zuMmunWat%spyF}~y5KX;Jy{>DPE9LmGqT%^rzUd7W@QM@gtO!Np!`Esp^3|-+Ny7nm+DlMcp-$M(8I}_)BObnld63O*Po*LDHLC1uJgno0t=odEzC4T8?bRkw#;}OvrcvdueLV z(o_+)Sn5b9p`lsxqLmqsd@V`hpvI2TPq=^Hy%?8ui!H;`ci3$~6(FbQ-;;J|LWjz& zqy?V`_OQ-2EZLj+l`602tq!;fq&*Z_B7k#E@(XOvG`2>p2T#}6u&Jxvo8Z_iT9kXa z%FL2hqk05Z-dv1P__)&F?)+&WrelTGDVro=pKz#Z(A;5R@;O7tGttub?r$)=zLaX^ zjJs-yn;`>YFdQ|xcvnQ@ESH;qCUwnS7>agL8{YE!>&uThI=?S$+f;O$lyT07RTNH9 zKb{dtctemf3~R7%X%Zf8RNLQ*aqnLPSe)8)AVE`%K4B&c-Ist}tXR zDWdX8aD-HVf7_t-mzT=L> z%7Lb}>Stx$2kZOoR7b73iT$#K$}vPSy>d_KHR zN9*~`v+XoDFI>s=8-s1ClRfmg?rTeY<{v`CeLMJn@{PveM&P!^DgG?cb9f1ThQ+DP zc03#?+M;ycE~Z4dc#1)cadQn_(lVwjf-d`9=O^8;e%S}n!eR|~r!xsN{Ld27q|x)Y z&&nTFMlaCeS|Uahl{rZ)oO-!FLvDx|?ccc~W&N!{XC|?R1=fxo@b3YutfH{QG)ncUH)th93-0cf^$4%xYKeh!vdv z)cv`R3Eg;CwTbyj9C}4a<)ZRo?-7m+WwfCk*@;s?>5*+nyKyIfA)X-#deDb+BcmX* z7^_k(e$&VA0z9pS+p;R)o|IXho_{Adf!Q^Vnxnv#oWVKYrNWOfY>bp4swP z;k@;^E|ue`nVYi*Srd1MD-SwR)%REJTJ-9b!%x=IUqf9r&oS~YK_O;kB|c8x1l^CC zU43)(oQ6mxsJokYMU9=nr)snPK2Ac6LI={qV_H!aK6 z+$IF{oXWeem4)QVWivKD^f_ga%o3jf5>s-^)c1bE=ZL#hR&)xKc;*6{nx>4TGSUhZ z9Iapo9n4Hq=(U&%28;fga|?B>^br(8*=yRhnb=JbU;|uMR>vG*f|bhv7WrYtTUXt4 zL{`VM8MjoW6H-2;{B+G%M3}jK3vgiD=$1O!pT-QtH>iHzd{~1IN$a!mUr)DLjCkru zzaWB~nX0SFZe^t@P8)9gE{dBhE6$ z39?o&PZ9z(d}CyD(A2M70*+56Z3OPfidiyE;A$!O=Xy9-hDGcqG=yZDb$};Gf4Ik{ z4`ty6j?TM6qBSJ)+^UhdY`6}&t;kp2vB_iz@#|aTbDq?>ft}a?h6$Ntv5Y?=a)2QB zH=$<0{b;iX1CE*`w0jDi6r!tD4{OJ}_UAFk0_0(pZ zT0ms;yxZ5*+{;@Rw`v#|nzrOa|sju!JK z>!KB`?C@2{!-lTO21&K7BdM?>KwwpMZ%ik=btdG~Y5?7AoyW?#uC}6oMxm;P>J(fW zwZXqwLOzY}D0uRisKUH;z@RJ_m(XB-k9? zG{h_yeBuK9TPMJ$xgt=46e^>802k{_2b|w#=n!1z4KQd7CG*+#88=Y{SKAIkDFBZX ziJt5#nm-deV!4Iv4~ta|m$=r|`^}nqa5=#?0$C-Y_Q9~}DOAr_Udz*qtnjnd$UBR*(QQik5qDEQ7-G{G2+C0Khldw%Y^DV3L_df_>xHfO*vcS|9e)>Rtc-u~ z!7zAmYgxcS>iy(l%y)hv;kcsNz1HII%WUtfxn&KbxX+6N>R)(%FGV+7dR(q$T8}nK z6R`q?NtciIYpbM+L+^9>`r|X{pRItg$6EMxMk`T zOQEQ{rrrvMk@Ytvpy@viM7-a5@7i z4@!p*_J&9@w}=S4-sH_wuzI}y&}}PAjl?dRUduDw8rBi$YT?{yma0aYxb@CW=3DqM zXVJ!jo8@Dd19>t+(dJ$}f<+{R_`kI-pIV3zpL<-{f)FY<;mScKgxmqnnE5f{y5v|o zB@Yd3l`qeeJ=!{r3A{VGHS~UXYV)wFQzc@XPIGK&(C@XlPwokwuI5&yyg?*Hn0on# zF)5Tlm-y_5DUxrMyMt~wy^h?Nn!p6cLEzh>g6}Y8Mx+q>@qF{>894Rr-NikN>8YRg zI(5;j5;D?J0|?bu|HRS%x>ND0Yf?$EX0*LCSsCxvg7@95THRfW)^IO|BDx>H9dYLX z9C2rANxCIZ@U{21BkolHam3xfJ9wd>px^44ka6c;XUT%3dvRue12{U=p`>QL0ITEN z)>t$}M{vwe-KKgY-6iN)c4>dfLCm7z`02DS=O*+KLAEjRp>h?{!E2x8n`i{{qJ8ia`{K54k-x zHrA#nELv1MRKOo#A#>9T@5GG;r9K8HmQYcQ+`x;sjT|G`OzJf*2u}_pzV%*Yzsf?a z9OpyivW^@cZ21c<*+p^Eah}1d5??mv$HB<)OAy!D55y(N+~#!o*|r5alXu`)WwYA8 zMQiO@y=r&kp|LtE*rDt-B_X6nnsn9N1s)Cz)`BaG6Nu8(BZ7`nTZ?v$<~8~|GnJOMNmp|S6w zT@X5bBMSh$e~ki+q>rAT(~n;G`EF}_Gd~f_U+3h>#({JWjozeMeVFpu2v4H%r?F%0 zR%uEMuG-v&UeNh^*MPbO`*&&7OVB6T*-h#nnD50tYHUPgiXn z;M`!p57-`-P{ltc9}Lyk-uRu{@qkWGe%L)3U8_zY)hBnv zO;DPCZH1R(F!6)m@mGe2q5ERXX$>kzU&n3QJ}p#s3n@;{50`{db9OIxC7njF8mYQ| zv?<^Ts!`?1h4q1`3$VD+ND|;4bW_5Hr>#jHG=CpN;@>e9R&{TZ@q+zWIib+Zyhs=< zGj>Mq{uzMZd?Yq7YEf@KibAH2#6rr6C!UL_ip{fnZ(z||T!A<5DADsmm|>(w<6-4u zXGh!%ZhgjnSe%*)tL*hZBt%`lk)n4jTa~;Lsan<`0^^4|?+J=sf-?8S0?02IThUtH zuF4fnZ3YkIiMlVIGWJfqbhh@ON-0{*?h@W8{ZJGVy_A+ZWm~zmupp42x!O+C+lOaZ z_6s!d1VDoauWvFu!P7s^=guu_XNKq4)GaFE&4sI%`^3fj68t2{e^NlM7^f5l<=Y)> zjXLyTnx+oC|7mWSIuO~$6n`Gp67XG@xO8?ouVNM+uSCyUSjGQY^r1|QPV3S+-F()N zJ28|<-`2lP_j;gCb6)M-o)zAx8-~zcaIq=^!*u-FB}i%>LQXDD(l=591CfF5$(h~! z1G0~uiyn(-ILS_Krls>zPl>&6pmFALst68jcJV6)s`tidm*#qZc116|RK`AjzrSf~ zNO<|F`q2+mgYp=h53nN59B}Y8D|H)?_FnnyxOL##VoS4$j;kpQ^3*$dvy1r~r;K&s zT0e5KOrzlu@Khfnl@s*NT(EmaQ}`Kw)ab7}nnE1UzIL9mF{U>=4Rl+6>S5hl14Nyr zpu1QMiiKEgHp@N=a&-3txpvkQ0kr^nqwrS&l*)pu>6COW`Tjod{xo|&@Z&eLXZ_c@))lCl z_6<|)t4m|W$AjP4`zo zaM~VI4^W3jBcVt%<7!Jm@Y$b*zme2(pVcaDdqMYN>K1*`&>{`iU656K;Fv)(AIW+3 zIY=6+=IyZNLSfMC4;Nfw#`rau`2Y-Tg+}8?RPG~Fxp2UfvJd=uTyPhsVI|hGt<Ue(Lbi}Ld+k)T^D2#tF|iBV&l#pzm*;P&QD!;Z52B6F^$LpJd&N*k z7g{F>R4FVhWjystoo*fN#<;mf(n5^33u580_fMKMu)`Jz7DvPcs&qUZ-8UXEs`okc zyNXlsf;udi+(lI;>qmQqL~T=eCEpsq9eAgjHD{ zS=`j$)8eK31M~-OwtQ6cPy2}2fYdcSyeaZ{%AP1ggq?P~rItbccl4L}ub`E>+r{QC z!zDl!fzAQt;bzA5SWHIjJ!P9f>$#3z+;|=s@aC_&Qv=<8x7=mo5b#0MJvdI%#GuwR zWIxs#t*wg}zwG#Wgw8hQeOyevIbB#r)AJSAgw*DB+1z8H2Ob5ZzmaYv@T-=y2DGll zaMSqX&ytC&!-kWQmo5dpP&YWeTt4OX6X!QB<<;&HqhFU2sBU%JcpD9hla6kVrcM+5 zdgA^83F#*i)qgDueBv@KS=ak}S=wau_Pn;t@Vm<4kMt7p?v;il{Nz<17vb1!eaWNM zU*dRiGAgxt0`mJ{wKaOA23^nXYTZhZ^TPbT4%&I7jwm~4dPMB8J6BhCsJ&+rqsf!k z))uF;NQcKKOH~PoF-GG`{n`@xL@xa3EWTd>zlD&2HGWlY;fi+OVLE z4U?MBSfVX4(^aeyHr^WM!Kx%R%z9*YJ#5}XeJG_3rC)FKxO6YLrTeeiAbd+A)9M_R zQ9katA7Yae{C`B;5ZTIyyqw4RVQ%-lR#KASlYfk_>`2^DY7&}yr;93gIwZPx!7GdF`OB?~i2vu$frR?@)qb^(M+>q{(F~uynU@Dk%1EQwT>4 zYz*FVzZ`=CGKReVJuxI_#!i~H-$;*5ZY=k7X(L;#-Grur%~)LHRME}Qnu-a*xs3wa zmqHDq7mpE9rLiVKx&~%GB-Z;F;oN!Qw7;s8M?9rUqn2LuIQ6K*@bR-E@H3S|25Q94 z`l4-D-SZs3v}qFPFYm`588N?PU~C)1sy0pd9wAu`S$O%cnbUFonZr<#eCEwgb z42`~�#q`J;jZ5H<^2W^iZegV*1wnD$DZvSMj2Kd%o`7iSq>0m-LhA7m#G-9Po3pUjkW5_d_d!BjCIIfu_x)pC!k=f&iD zb7lLOe%Dg+1W%Tn2bt2{Uc++rb&Ha>%KLy-JL`8L(=B)=3WBO>WL$`d6}PgI%~~q4 zmd?;Y3#R{hy7TPW=sGHP;A>9rOvuB+=*v66LCEAOnu<8&wU=l^W@f@_$788TNaqUk3u1$SKD@THj*63l_2#9 zn1d=4C3S&0h#y}A=UXtab-Sk=hGn^LGXH>o-RRU=uN}nF_Gh>i(C1w!{LINMIs~uP zTHAG$6tRGUMUo?8Sbm&sbCYeZz$ja#mILdOUiF-^OK)Ug2z0eux@G7gv@?~Lg}e{X z`EK)Tw@ms`zsxDVDs$%x+JW$Z5Y~t0lmSF0Hd5*u+7n}%pq-QNy-To@z=yIcgE(9& z2D+aQQCS>v+Q*Uyq?Gc@hU)ySZ}ZysPsnL{a&oM8M|(3;vx1V*+e5?n{L64&`;j-L z>?UensRMp4Ib3BZBveEVKzBSDU9)dU$n)k}GtFbJ1M=Zs_N9N|&(Z#VH=dc5D8^@m z(efxa;Wk0+!?AE`!{QC2d5f)M8#o**WHQVZs7kgVF z$y#(G34{&5tFv=4gM4$z4?7Q$UnRewr6H!B(k+Yw8bTq%)%tuSad45mCg9DG^aN{Q zsz+pB_g(B+ZIWcu(t^m)h;~`y=hD|oVK^Jmi9r0$a1HAGLs^QU601atjxs?6MW9F! z&NmH7WcMHLREBam$aeP0aDgRzWQ;PQV-8D5*~+a4=)^vZ6;ykI@8iE@{qn zUy3%&Xo(I`JbJxW;8I?6t+OApdL+wwP4MZ>|*WaId6vf%!aabOVTkynX z{}3&=KNwm~G4ToNW!I*71`XTooxcpszi^G2-aF0zm~FwIumTLMvni65FL&(g+jT~) z$k{1M8?QRB0P(`tRgzZ)C{A}hAhU)gn-@$2n7p_=V$zNx+qjI{l>M2JegdySL4PHZ zN{mP<<7XvnNs|MSFJT{Wp2}gq$sn8MC>2}yP_R@~cF^URNHpB)6)uSL6=c=p#SG$w zEbYTg*@=a~`3L6%_Ei+FppUn@v2Vs2BO}}HW_Hf|+@sdm7t8$*)xN`{t)d6S zi3XFDO6hBt0@7+QiM9jT-Liipy-4sEi{Q4v0laf@kl*0AAjX{P#-;7b1~s(C6rg4= zrHsx!AJqKQIVd(T%;~t+buNgZwp>EOIjJwoVP`B+tJW+=_n_7+jOn^V`jLi{9BO=u z1EnnGYaK95I(oL6Xld;?l9z(?e3RaEB4W3*l9(rM`%B>U^vH*@=qg;$px=-sISyfW zi%I>GaDiw7_VgBlm@LNnktnN_ES1#tgNE7D4ZkyL4i5J$gNBxM5`9vT&kZGp9WELg z`Wn{IY{lp%BJraT6yy{w-MzG4RRt{7k{*v&Q1^o(?u*u6t^=)w{OIXvc}VlFtfIET z-V-bOxPnMacizmc_mANw3~nv+fp6X61CRy_Hvgb)x#_@1gc3m1=^UY%Fo`0^qzA8Fe?!zmLB*`Go&y2a-jPG%6qv%*EpBxe)g4aWDh4Vh6@{Bb z*LSGjZdXXvuq+dzA~a@MD;_hNIm&W)3n%U(>lb2Yp3Ho4ER;Qe(R+-EDs6wcH4a

+!8d)~DYu$fTv3T{q}FN)cF9}wiP+u2Wd^Tvde*~eDg*6Hbd5F+&e&`X>+<>H+eNuZfpgLp`n?Wl*XGXTJ_)5bSp5U znFouL_8n0jf79cqM=J~`H8o6sy4WM!5J%nf&jN)OL-sC#o%|;;2^$Y2q^{L0YW^fL z`LGuFSXC^)`fyUO;S@iT_@8L}|MGhhBQuLLlK|f0JrA`bR$^l2{gF-g=E3=_$bhmhrWbb3i}nuDrVwlA zL?{xLtk?qq`$$X0qq%DBDHzGJn9yH3&NIqcrR;~qu2tm^HzYF@cxHT(c4j8quH=2!7UrB3Tx=xJYujEw zzn^bG()`WP#w_T~pbcYSeOrC6;e#1BE1ubhwd}gQN>3(~!=*$hCz#{2A6RC0WGGX0 zyj^vbTb)dN*7tg$e^@40BGb|6dC)Ctc9JzXc-5lHsj$q1?ES6BKry1}bA z6=>*_xlO#WRal+_c!ZL;xVR8ja#HI$z=4K&$E-${f^6t$p8gU4l9yyKh4q0Zb;%HZ z^LDwJ8Bh35teacz)T7}R-vTY&zIID_$Lg-Ss4?lVH}4Cj!fE{a{PbhWHMPmC9-PHkq@n(j4?G;! zK0jVhU%K?UyB@~cktTaNx=C3~NlhAOR~3FhE-KmJ#%SE=^GTeiB|;jTw{=Jyu(aR` z1fqSAgiDJs%6PJLfS#&(AylXIM)TF|Ct~?KW}uu(#K;v*J)dSG5m^0x!JFaaM}6jH z9?DO7$rrMr!T3+=L_jcwd78 zSI_%feX?yD2K|`f@T~MdL3IBTpAD@6ZHa=uXX}yBw}*q_mJ^@P^(yc%d}{6Q+rf%e z3z7;xvgiCK!3fXtfu5pF2k-Lg^so6+f zqT(%jyelGI8>p*j^lST&czBw+Nw+7zI(J~ZJt5npJ+kAVXQG3if;0P_1Qg{S^>c@W z-Qc#Xb#(_sj)>Z*hK$j93YVulcA$t1(4{ktjSUa}+=}m-!c<&ar+kR{;yhN#(VI6? zlsqeW@UZcAXk;|CWi8$_*HBcUFj_iEKGB8#K^m%0^b||jv5nVZo{938J5SP7tO)jDhgNALhc`emy+Z8qhsy!J{xEmgS%U zK1nXm)Q?Ow%R`U!J;rPBPMa~4{$6SDgO28Bf*pD3hbyM+ZSka<)YY5XG*w9U7@Bby zIuI+zbaRtW(@k|f)eT0-#96b-XRP21@Qlh45U=b~yv!2VkoM3KS^ZEgLpLTDx0Std z*d_SHMSFUb)RE>P;7CC7ql2=-vvTU-Ge#jlDgc`Y$hqSLudE)Br*`BN)l0sAC*@c! z!LRqx_AI)cZqb+6tp>HcQ3mVsl!?z&Z=8oS^q$%3o?7=eV!j3w2?i@`_FfT_!wquC9YyBT@I8dN-8SbLq`0 z(99imALUKvH|HdrXX}-%wnO9Ag?f88t05_C6{Sx$$^$}ygwb%%0>8s`g7*;Wxv0VT z?H8bRL}7Y`T0_O6CZPyksNwT4tOuy2#fFEdbgcrPel@H;k*f(zybcvtDlU^kt0tZO zR*kab$5Zq+Pch8W;5oGXT#!GqCg-qQIp)3+)BJsI(tC(y9N-Avc(H$$KnaHxbi?`- zLc&DTO&=qP9yuYK5nmbL>3Sr^u(~-AKh|^4NDI~)e&fTxnZo7A5hk!0S}X}vS1dBX zfSL-4ruAs#HVS&nt$!ZKwesJ-=>`l=+Q@%I?V6HcB>sbsz8>;xH~3SLepc}>nersf+I1X{u4sfDWw3+PuD!A%7wWeOcE=O>a2mI7e zs0vDty}OX+*IJb}15;7IoOdR(LQJ4iF$_w$WQIeky2v`Ee>$y|8I0H<7RKkXg?LVn zZ|e;9`De%{Lm_WXGn9>w-CW#jh@zvTgOY{hURdS+`jS@MhL240QxFODCz});j_}k} zDj5bN;9K$VBn!{^Eesb(zoQ~Z;WASgP-?h;8|1L%dwRyTo>#0e#uCDSeJ8XIZyDj$ z+&kW~tPrUKlGSqRL^Qgx(iv{^EaJIMVSG+!wVq>_2LR!Yd1 z(*yGmGl%xcG*g}S&_54cuw8l(WQ1UdOoHErDQk{X5-(Gl$;)vAt^pJ{Wer@QpHk7P zq+UJ1LEr)^q5pC5-f`7+m~@QGtq*IA2@H;QQ1I+5dxg{2AieU$Q7Kvqc`H$c$eCe7 z%<64EKc5$&2lOSVx{&gjU4oFb3e`466jP}ZKwfexX2p5@&pi%TCJKq6~I^~70KBu0NdOz$pBX7}M^(0!p-u6b5 z18{Q7om)Ao{fXcBlhqEK@TqI~syVB*z5%Bi=T|9>7Yxq%jEI}Yy;zjz23tCW{UbF*Yyfq}gB4=Mse*`}3ZnsW45jh` zvUMQImTChmm~8*0k7aykQ<*6Yx1k^{$fV*asz4jcS0o7O^WR9WDsPs<+9dUNE`&bJ zgQwk%&XSl@#W=pj{Iv7s5g?P>iZ(1RZ#k&fS0;d7ISl`NpC=Y^%=F@&RC#O$VRf8y@Q^kWm@0$bds z=6ITQM*+^7B%aZY|0bV2tatIZ>0JBFi%??W57ma%TvHNf4R4|Av=cHNi0jZGY{tI# zLvg_gk4CkH)@E!MXB8?{pLPzMhg}YPxgLS?zTVU2bUCUjMog^DhR??+X+wM$w}1H= z8FNCWFANDH&v{yRF$AsG0Je|+Cn`7@*-WSgRO?C>Zo}Y)=_pPLoAp8>k5Y6Qv5SLO z57SECzd%$E(zf^ch1$`{LUB@ac-1Qge2r;WaK#&M^wuRYHS$aix8$VTZC* za?Y}7y%FnP(1N(_2lc@bE}{or8P03UYL)qXPy4aMwM}9Jp&|?zI3FvC4o)OF_l~!< z=ndGv(xW`y@QwRZycpr=Pkqa)ej{;w@OJQH`5TEG^afEAv_R}*tow+^095BJLo%mK zo4e&7UoE#diSl9>*c^w8Ra%?$ThsXelX8Mp< zHqm(f3BqxYIj)F?`iAXf79m(#%N;T^y*c3OyVI8&w=qPXZo+twUFvmO$=bnP`c>i= z*A+A`$#{YEhBk82+B&CrcPly)RU8va5Nb-og9PiTTr3)QaLp|a$O5E{LwGf`8FRIU zTWhObYPQcaN}OB)j=df`Jpu^RGB0Qq8ppGl%?Fe6@YK! z!5#yKL`R%X=uPIPTJm@9iXpdNqL58sjhomiIye4Cf)AI>+2za>}JtzCiDPhSzueo^D+SkjfBP!4%pb?B&5XQSpf?vPEto}=Pq4f?^ zTOUibyT`xasR06~W~{4S8B2r}8XzqO7-!i5hF?Dm3*hE6WZDV!rpg2k5iRl$t|CrP znZ(wD^=7e*#>pyxhWnN*&0Q#ynmhqR?a*pM_m-j|g8ovx z&JD<<~@8MBQwoOV<8^v1#EBq9|ILH~Ng@MClw_s5cwh=P{!A$nL`6K{7anuZ+jXs8E| z(^L&s^vBq>i~Rn=sJy9FyyjPpu=q8PaSpyb{Zp7oZW!Lxd1+Lzi7u8O%3Ps@!Wo$! zV(KOZSkrwcS!FV3tWi6Wk9TR{nzBUEw6P^sT>pU z_i#_kz2h4(j8yYWDPp$pi0tX@KUU)ya9)Ie&7NM@*iV_McA_^Y1xyJPl5=R} z(D8>*9)ljLyiU$xj`XcB`;F9%d*77h{H-VBselffytod9RA1O7uSz>tc0fwIcy@pJ zBeVr%4vG7r9~{2^;<2(83LPV~sVdKuswurDBCk?k(q%vAnveuRe5dTss}f&77?JV9 zNF)(~TE^!|e;*^W#>|!Tr**memT#N^Zx~PQ8N>zmoH1mVuDx_&dp_|ZTMy>1t`^2f zidnOolTzFB?oJ~F+Xmz?|o)xhooqbkFUUv!D?vFw>qPHwm2S=opfeuib zTwD(=6%?lCBMUeIrPE$d(3Gr=HQPi3k$!mNu#i6IpEqBj_Luty1_8raVr$P5`9S`c z=kPDF=MtOLVRvhbCDF{4{LUDSe1SI}cT}uf6ZZaNc3Bl8p>$baio-?Gct^Q3kAk^ikl(VoZsMaP^*XA%Idvj0>*n!AUZn5}$elw*g}ArT_+0;c&mLy%wIhAynzxJ2PU1&8&C10W zcpgJy*#!=7S5?5!8TL()T~YMre6QtYi-In%#et|nXCaaMvgkUE7@QWF0}p0YVU zo}q(6+oo!AXejOK!PQp_D^8K&8|f;~w)0TXchF6%Ppnw$e+yOBgS`@L9=0GlerWuN zl9C(qn=*F`N&Cm#=ie#H6K*S*n00x>nXTIl`oYWI({QfIWs#5m+_eLubEz{C=z=VG z_oytw$;eT34Y97z(I20sc7*m}V`zm3oh=afnKAc?@C*sre9y*i}V*^5C_SsqX8PL+HOmh>^oFxo*3 z3Ca)qMdEuj?$@DC!gJ7Q0;?L}!eJCv-zdWzuyz#Kg-o9@ojWE^-BQf(P1hN{E2tG~ zquS%15mT9a3%Eqw&jYD?Gg=1u7oNLb-+UM3){7`9X{SO@UsapE6trOE%#$bBru53F zkLWo{G_ur|#*r%S_mGB}>NpU>2gyaPAm%bc0V1%_6Z?G@pB_FimhW)w{M`FHyeaCu zALjbZpMF{!0%JoV!d=?Tqlcc}HZ=F4iaKLD(1xL$-q)`01YH}xD5)PsftQ540e7m| z)CPcODR3tI=W<`LtdNI>ow5CbzmADc2c88N<6Wiu$lb~Fk zX$*P!XR!WIGMn)vkN2tu$`;GNk(TO9S}jiP%T1>;DnEIQ&K+~yDk<8dQH!lz9;PrE zXSc_YpA1y~5_Zp96yY*}KY*|rCya}4-is)}EhHuaho{2|AQcY6lasQeigfpms&z;3 z&-vF_Na%cA4>7fxE&z`XzVN+n%v@Aq@AmN?$=4NXl5G7Oz*8qFBal)UJivg%<%iue zX;DdJLViJ%)#JbHP^k{)N$68&UXE8^TBjVC^gRGXAj)T& zBPV~%Y5$Ai_ltE@-*sFd9?O$vD6V>Xq{~wS#ut`tqw%|t!b_p)5}(1fk~~`{7V_s`<1p_w=-BCcH;<*`rrZ}=^_qwHIW+O8&i(1|Eg#$2Ex?(xgywXk3_~_@s@SJ; zwYs~!C%C4hneli|pLX)QDJG<@SL;ccmq%$IxswcwjUMiWj}4R>mLVFy^(@O=t9R50 zy46@rfh%>bXv(LV-ezQEy$xfceQQcG$b*DbHWR~AuQB1|61UDqv^%{&!OyN#DzfUB zk)Btj!51BrbS!tA3YLQB5wS0UgI%r1Epv^ivD}EA*mSaN;2z>)EmKyVJvN2=I1WNV zuGDUKhua&k^yZH0zXd_7!;&m_I$AXKXu;U}Iz_XJd+6QBaA|CtHzD-iDM z@3@TcCuXOhjq;RBxs>alew=@s5MP6cdnnA)Wyyw*n+KH=rIY3p!^SrU-VN*?Pp*5A-R)P_OGz~fjqBT?M7kaBamHK%NF6P>G`YY{6Z%;sxe;EtE z;@WswhFI-XRqXFLyNz*AXZ&~<7=XUA>?k6ghIAXOGLsLGmCz#Q8x=MURfn=G3Kl+r zS=%Lj?}RBOt3!txV6>Y}q!!)58iejaCDyrco*YPhX2mm^$*!z@A?r$-d~foV#tW~Y z*$Jw-1v}V<^jyY*HD_bH=~iHhMT!NWSY(TNBtlSBk{nMYNnrXp-&9<0=ogayHd6av zrI#oql*ru4unr`{FYz`TCr3ovdQ∾1iqC-T_pAok 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

@+uiMnl^9^o9&oGR|N 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%0AU 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 literal 0 HcmV?d00001 diff --git a/src/Assets/th.jpeg b/src/Assets/th.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..fc83a5444efcce1445f26c7e4f41ae10d2746b66 GIT binary patch literal 3933 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 literal 0 HcmV?d00001 diff --git a/src/Components/Cards.jsx b/src/Components/Cards.jsx new file mode 100644 index 0000000000..79127e453b --- /dev/null +++ b/src/Components/Cards.jsx @@ -0,0 +1,47 @@ +import React from 'react' +import Download from '../Assets/download.jpeg' +import OIP from '../Assets/OIP.jpeg' +import Th from '../Assets/th.jpeg' + +function Cards() { + return ( +
+
+
+ / +

Student reporting

+
+

Log into the system using your credentials

+

Select course and provide details about missing grade

+

Attach relevant documents if available

+
+
+ +
+ / +

Faculty resolution

+
+

Faculty members receive timely notifications of reported missing grades.

+

Review details provided by students and take appropriate action.

+

Communicate resolution to students through the system.

+
+
+ +
+ / +

Notification and Updates

+
+

Users receive notifications on the status of reported missing grades.

+

Regular updates keep you informed throughout the resolution process.

+ +
+
+ + +
+
+ + ) +} + +export default Cards \ No newline at end of file diff --git a/src/Components/Footer.jsx b/src/Components/Footer.jsx new file mode 100644 index 0000000000..a39495e8c1 --- /dev/null +++ b/src/Components/Footer.jsx @@ -0,0 +1,76 @@ +import React from 'react' +import { + FaDribbbleSquare, + FaFacebookSquare, + FaGithubSquare, + FaInstagram, + FaInstagramSquare, + FaTwitterSquare, +} from 'react-icons/fa' + +const Footer= ()=> { + return ( +
+
+

+ UG//MissingGrade. +

+

Your success is our priority. If you have encountered any issues or need assistance with the Missing Grade Reporting System, our dedicated support team is here to help. Reach out to us at JonathanWick@gmail.com or call 0244377369. Thank you for your collaboration in ensuring accurate and timely academic records.

+
+ + + + + +
+
+
+
+
Support
+
    +
  • Contact
  • +
  • Help
  • +
  • FAQ
  • +
  • Dashboard
  • + +
+
+
+
Solutions
+
    +
  • Procedures
  • +
  • Optimization
  • +
  • Notifications
  • +
  • Issues
  • + +
+
+
+
Navigation
+
    +
  • Support
  • +
  • Accessibility
  • +
  • Channels
  • +
  • Improvements
  • + +
+
+
+
Feedback
+
    +
  • Contact
  • +
  • E-mail
  • +
  • Telephone
  • +
  • Landline
  • + +
+
+
+
+ + + + ) +} + +export default Footer \ No newline at end of file diff --git a/src/Components/Hero.jsx b/src/Components/Hero.jsx new file mode 100644 index 0000000000..cfca946a12 --- /dev/null +++ b/src/Components/Hero.jsx @@ -0,0 +1,22 @@ +import React from 'react' +import { NavLink } from 'react-router-dom' + +const Hero = () => { + return ( +
+
+

UNIVERSITY OF GHANA

+

Missing Grade Reporting System

+
+

Track and report all grades that are not recorded.

+
+

View your grades, report missing grades and communicate with your instructors.

+ + + +
+
+ ) +} + +export default Hero \ No newline at end of file diff --git a/src/Components/Navbar.jsx b/src/Components/Navbar.jsx new file mode 100644 index 0000000000..737f15e9fa --- /dev/null +++ b/src/Components/Navbar.jsx @@ -0,0 +1,50 @@ +import React, {useState} from 'react' +import {AiOutlineClose, AiOutlineMenu} from 'react-icons/ai' +import { NavLink } from 'react-router-dom' + +const Navbar = () => { + const [nav, setNav] = useState(false) + const handleNav = () => { + setNav(!nav) + } + return ( +
+

+ UG//MissingGrade. +

+
    + +
  • Grades
  • +
    +
  • Home
  • + +
  • Help
  • +
    + +
  • Report
  • +
    + +
  • Contact
  • +
    +
+
+ {nav ? : } + +
+
+

+ UG//MissingGrade. +

+
    +
  • Help
  • +
  • Home
  • +
  • Help
  • +
  • About
  • +
  • Contact
  • +
+
+
+ ) +} + +export default Navbar \ No newline at end of file diff --git a/src/Components/Overview.jsx b/src/Components/Overview.jsx new file mode 100644 index 0000000000..c912e53427 --- /dev/null +++ b/src/Components/Overview.jsx @@ -0,0 +1,21 @@ +import React from 'react' +import Laptop from '../Assets/laptop.jpg' + +function Overview() { + return ( +
+
+ / +
+

SYSTEM OVERVIEW

+

Missing Grade Reporting System

+

Welcome to our Missing Grade Reporting System, designed to streamline the process of addressing and resolving missing grades for students and faculty. This comprehensive overview provides a glimpse into the key features, benefits, and functionalities of our system. The primary goal of the Missing Grade Reporting System is to facilitate a transparent and efficient mechanism for students to report missing grades and for faculty to promptly address and resolve these issues. By centralizing this process, we aim to enhance the overall academic experience for everyone involved.

+ +
+
+ +
+ ) +} + +export default Overview \ No newline at end of file diff --git a/src/Components/Sidebar.jsx b/src/Components/Sidebar.jsx new file mode 100644 index 0000000000..aff1518720 --- /dev/null +++ b/src/Components/Sidebar.jsx @@ -0,0 +1,54 @@ +import React from 'react' +import { NavLink } from 'react-router-dom' + +function Sidebar() { + return ( +
+ + + + + +
+ ) +} + +export default Sidebar diff --git a/src/Pages/Dashboard.jsx b/src/Pages/Dashboard.jsx new file mode 100644 index 0000000000..75db43f6c6 --- /dev/null +++ b/src/Pages/Dashboard.jsx @@ -0,0 +1,113 @@ +import React from 'react' +import Sidebar from '../Components/Sidebar' + +function Dashboard() { + + const notifications = [ + { id: 1, message: 'New message received', timestamp: '2 minutes ago' }, + { id: 2, message: 'Upcoming deadline for Assignment 1', timestamp: '1 hour ago' }, + {id: 3, message: 'Resoursces added in ECONS 211', timestamp: '2 hour ago'}, + {id:4 , message: 'Assignment submitted successfully', timestamp: '3 hour ago'}, + {id:5 , message: 'Missing grade in critical thinking', timestamp: '1 day ago'}, + {id:6 , message: 'Missing grade resolved in Academic writing', timestamp: '2 days ago'}, + + // Add more notifications as needed + ]; + + return ( +
+ ) +} + +export default Dashboard \ No newline at end of file diff --git a/src/Pages/FAQ.jsx b/src/Pages/FAQ.jsx new file mode 100644 index 0000000000..d9e38fcfbd --- /dev/null +++ b/src/Pages/FAQ.jsx @@ -0,0 +1,55 @@ +import React from 'react' +import Navbar from '../Components/Navbar' +import Footer from '../Components/Footer' + +function FAQ() { + return ( +
+ +
+
+

Frequently Asked Questions

+

Below are the answers to some frequently asked questions

+
+
+ What is the purpose of the Missing Grade Reporting System? +

The Missing Grade Reporting System is designed to provide a streamlined process for students to report any missing grades and for faculty to address and resolve these issues promptly.

+
+
+ Who can use the Missing Grade Reporting System? +

The system is available for use by students who have identified missing grades on their academic records. Faculty members can also use the system to address and rectify reported missing grades.

+
+
+ How do I report a missing grade? +

To report a missing grade, log in to the system and follow the simple steps outlined in the reporting interface. Provide the required information and any supporting documentation to expedite the resolution process.

+
+
+ What information do I need to include when reporting a missing grade? +

When reporting a missing grade, please include details such as the course name, instructor's name, and any relevant assignment or exam information. Attach any supporting documents, if available.

+
+
+ Is there a deadline for reporting a missing grade? +

While we encourage timely reporting, there is no strict deadline. However, it's advisable to report missing grades as soon as they are identified to ensure prompt resolution.

+
+
+
+
+
+

Contact

+

//Submit the form below for technical support

+
+ + + + +
+ +
+
+
+
+
+ ) +} + +export default FAQ \ No newline at end of file diff --git a/src/Pages/Gradeform.jsx b/src/Pages/Gradeform.jsx new file mode 100644 index 0000000000..34a8a95ac2 --- /dev/null +++ b/src/Pages/Gradeform.jsx @@ -0,0 +1,31 @@ +import React from 'react' +import Sidebar from '../Components/Sidebar' + +function Gradeform() { + return ( +
+ +
+
+ {/**your */} +
+
+
+

Missing Grade Form

+

Submit the form below to report missing grades

+
+ + + + + +
+ +
+
+
+
+ ) +} + +export default Gradeform \ No newline at end of file diff --git a/src/Pages/Gradereport.jsx b/src/Pages/Gradereport.jsx new file mode 100644 index 0000000000..4a707f2b43 --- /dev/null +++ b/src/Pages/Gradereport.jsx @@ -0,0 +1,118 @@ +import React, { useState } from 'react'; +import Sidebar from '../Components/Sidebar' + +const courses = [ + { id: 1, courseName: 'Introduction to computer science', grade: 'A', semester: 'Level 100 First semester' }, + { id: 2, courseName: 'Office productivity tools', grade: 'B', semester: 'Level 100 First semester' }, + { id: 3, courseName: 'Math for It Professionals', grade: 'C', semester: 'Level 100 First semester' }, + { id: 4, courseName: 'Critical Thinking', grade: 'A', semester: 'Level 100 First semester' }, + { id: 5, courseName: 'Introduction to Economics I', grade: 'B', semester: 'Level 100 First semester' }, + { id: 6, courseName: 'Statistics and Probability I', grade: 'C', semester: 'Level 100 First semester' }, + { id: 7, courseName: 'Academic Writing', grade: 'A', semester: 'Level 100 Second semester' }, + { id: 8, courseName: 'Logic and Circuit design', grade: 'B', semester: 'Level 100 Second semester' }, + { id: 9, courseName: 'Statistics and probability II', grade: 'C', semester: 'Level 100 Second semester' }, + { id: 10, courseName: 'Introduction to Econs II', grade: 'A', semester: 'Level 100 Second semester' }, + { id: 11, courseName: 'Programming Fundamentals', grade: 'B', semester: 'Level 100 Second semester' }, + { id: 12, courseName: 'Calculus I', grade: 'C', semester: 'Level 100 Second semester' }, + + + // ... add more courses + ]; + +function Gradereport() { + const [selectedSemester, setSelectedSemester] = useState('All'); + + const handleSemesterChange = (event) => { + setSelectedSemester(event.target.value); + }; + + const filteredCourses = selectedSemester === 'All' ? courses : courses.filter((course) => course.semester === selectedSemester); + + + return ( +
+ +
+
+ {/**your */} +
+
+ +
+ + + +
+
+
+
+
+
+ + + + + + + + + + + {filteredCourses.map((course) => ( + + + + + + ))} + +
+ Course Name + + Grade + + Year + + +
+
{course.courseName}
+
+
{course.grade}
+
+
{course.semester}
+
+
+
+
+
+
+ + +
+
+
+ ); +} + +export default Gradereport \ No newline at end of file diff --git a/src/Pages/Instructors.jsx b/src/Pages/Instructors.jsx new file mode 100644 index 0000000000..7fe6c61ce4 --- /dev/null +++ b/src/Pages/Instructors.jsx @@ -0,0 +1,115 @@ +import React, { useState } from 'react'; +import Sidebar from '../Components/Sidebar'; + + + + + +function Instructors() { + + const instructors = [ + { + name: 'Owusu Ebenezer', + phoneNumber: '0234567878', + email: 'eben@gmail.com', + }, + { + name: 'Paul Amah', + phoneNumber: '0542456455', + email: 'amuh@hotmail.com', + }, + { + name: 'Michael Soli', + phoneNumber: '0523456788', + email: 'TheTerror@gmail.com', + }, + { + name: 'Myron Winston', + phoneNumber: '0242456776', + email: 'WinstOG@yahoo.com', + }, + { + name: 'Jonathatan Wick', + phoneNumber: '054287452', + email: 'JonathanWick@gmail.com', + }, + { + name: 'Linda Kotei', + phoneNumber: '0273447326', + email: 'LKotei21@yahoo.com', + }, + { + name: 'Alex James', + phoneNumber: '0244377369', + email: 'Cloudysw@hotmail.com', + }, + { + name: 'Emmanuella Martin', + phoneNumber: '032444678', + email: 'eMart987@gmail.com', + }, + + ]; + + const [showModal, setShowModal] = useState(false); + const instructorEmail = 'instructor@example.com'; + + const openModal = () => { + setShowModal(true); + }; + + const closeModal = () => { + setShowModal(false); + }; + + + + + + + return ( +
+ +
+
+ +

Instructor Details

+
+ {instructors.map((instructor, index) => ( +
+ +
+ +
{instructor.name}
+
+
+

Phone Number:

+

{instructor.phoneNumber}

+
+
+

Email:

+

{instructor.email}

+
+ + +
+ +
+ ))} + +
+ +
+ +
+ +
+ ) +} + + + +export default Instructors \ No newline at end of file diff --git a/src/Pages/Landingpage.jsx b/src/Pages/Landingpage.jsx new file mode 100644 index 0000000000..0d446b4eb1 --- /dev/null +++ b/src/Pages/Landingpage.jsx @@ -0,0 +1,21 @@ +import React from 'react' +import Hero from '../Components/Hero'; + +import Overview from '../Components/Overview'; +import Cards from '../Components/Cards'; +import Footer from '../Components/Footer'; +import Navbar from '../Components/Navbar' + +function Landingpage() { + return ( +
+ + + + +
+
+ ) +} + +export default Landingpage \ No newline at end of file diff --git a/src/Pages/Login.jsx b/src/Pages/Login.jsx new file mode 100644 index 0000000000..5c37090d94 --- /dev/null +++ b/src/Pages/Login.jsx @@ -0,0 +1,35 @@ +import React from 'react' +import OIP from '../Assets/OIP (1).jpeg' +import { NavLink } from 'react-router-dom' + +export default function Login() { + return ( +
+
+ +
+ +
+
+

SIGN IN

+
+ + +
+
+ + +
+
+

Remember Me

+

Forgot Password

+
+ + + + +
+
+
+ ) +} diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000000..33c26a28bc --- /dev/null +++ b/src/index.css @@ -0,0 +1,7 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +body{ + background-color: #000300; +} \ No newline at end of file diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000000..26c9380fdb --- /dev/null +++ b/src/index.js @@ -0,0 +1,14 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import './index.css'; +import App from './App'; + + +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render( + + + +); + + diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000000..c0958ec4ac --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,11 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + "./src/**/*.{js,jsx,ts,tsx}", + ], + theme: { + extend: {}, + }, + plugins: [], +} + diff --git a/wrappy/LICENSE b/wrappy/LICENSE new file mode 100644 index 0000000000..19129e315f --- /dev/null +++ b/wrappy/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/wrappy/README.md b/wrappy/README.md new file mode 100644 index 0000000000..98eab2522b --- /dev/null +++ b/wrappy/README.md @@ -0,0 +1,36 @@ +# wrappy + +Callback wrapping utility + +## USAGE + +```javascript +var wrappy = require("wrappy") + +// var wrapper = wrappy(wrapperFunction) + +// make sure a cb is called only once +// See also: http://npm.im/once for this specific use case +var once = wrappy(function (cb) { + var called = false + return function () { + if (called) return + called = true + return cb.apply(this, arguments) + } +}) + +function printBoo () { + console.log('boo') +} +// has some rando property +printBoo.iAmBooPrinter = true + +var onlyPrintOnce = once(printBoo) + +onlyPrintOnce() // prints 'boo' +onlyPrintOnce() // does nothing + +// random property is retained! +assert.equal(onlyPrintOnce.iAmBooPrinter, true) +``` diff --git a/wrappy/package.json b/wrappy/package.json new file mode 100644 index 0000000000..1307520467 --- /dev/null +++ b/wrappy/package.json @@ -0,0 +1,29 @@ +{ + "name": "wrappy", + "version": "1.0.2", + "description": "Callback wrapping utility", + "main": "wrappy.js", + "files": [ + "wrappy.js" + ], + "directories": { + "test": "test" + }, + "dependencies": {}, + "devDependencies": { + "tap": "^2.3.1" + }, + "scripts": { + "test": "tap --coverage test/*.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/npm/wrappy" + }, + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "license": "ISC", + "bugs": { + "url": "https://github.com/npm/wrappy/issues" + }, + "homepage": "https://github.com/npm/wrappy" +} diff --git a/wrappy/wrappy.js b/wrappy/wrappy.js new file mode 100644 index 0000000000..bb7e7d6fcf --- /dev/null +++ b/wrappy/wrappy.js @@ -0,0 +1,33 @@ +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) + + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + + return wrapper + + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} diff --git a/xml-name-validator/lib/generated-parser.js b/xml-name-validator/lib/generated-parser.js new file mode 100644 index 0000000000..a62111ac19 --- /dev/null +++ b/xml-name-validator/lib/generated-parser.js @@ -0,0 +1,504 @@ +module.exports = (function(){function _waka(parser, startRule) { + if(startRule && ! parser.rules[startRule]) + throw new Error('start rule missing: ' + JSON.stringify(startRule)) + + return { + getState: function() { + return parser.state + }, + + getTrace: function(message) { + return (message ? message + '\n' : '') + parser.state.traceLine() + }, + + exec: function(input) { + if(! startRule) + throw new Error('no start rule given') + + parser.state.setInput(input) + + try { + var value = parser.rules[startRule]() + } + catch(err) { + var error = err + } + + if(error == null) { + if(! parser.state.adv || ! parser.state.isEOF()) + var error = new Error('Unexpected syntax in top') + } + + return { + success: error == null, + value: ! error ? value : undefined, + error: error + } + }, + + startWith: function(rule) { + return _waka(parser, rule) + }, + } +}; +return _waka((function(){'use strict'; +var _rules={}; +_rules.NameStartChar = function() { +var _R=_P.match(":"); +if(!_P.adv){ _P.adv=true; +var $0=_P.cur(); +if($0==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("A"<=$0&&$0<="Z"); +} +} +if(!_P.adv){ _P.adv=true; +var _R=_P.match("_"); +} +if(!_P.adv){ _P.adv=true; +var $1=_P.cur(); +if($1==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("a"<=$1&&$1<="z"); +} +} +if(!_P.adv){ _P.adv=true; +var $2=_P.cur(); +if($2==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u00C0"<=$2&&$2<="\u00D6"); +} +} +if(!_P.adv){ _P.adv=true; +var $3=_P.cur(); +if($3==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u00D8"<=$3&&$3<="\u00F6"); +} +} +if(!_P.adv){ _P.adv=true; +var $4=_P.cur(); +if($4==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u00F8"<=$4&&$4<="\u02FF"); +} +} +if(!_P.adv){ _P.adv=true; +var $5=_P.cur(); +if($5==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u0370"<=$5&&$5<="\u037D"); +} +} +if(!_P.adv){ _P.adv=true; +var $6=_P.cur(); +if($6==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u037F"<=$6&&$6<="\u1FFF"); +} +} +if(!_P.adv){ _P.adv=true; +var $7=_P.cur(); +if($7==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u200C"<=$7&&$7<="\u200D"); +} +} +if(!_P.adv){ _P.adv=true; +var $8=_P.cur(); +if($8==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u2070"<=$8&&$8<="\u218F"); +} +} +if(!_P.adv){ _P.adv=true; +var $9=_P.cur(); +if($9==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u2C00"<=$9&&$9<="\u2FEF"); +} +} +if(!_P.adv){ _P.adv=true; +var $a=_P.cur(); +if($a==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u3001"<=$a&&$a<="\uD7FF"); +} +} +if(!_P.adv){ _P.adv=true; +var $b=_P.cur(); +if($b==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\uF900"<=$b&&$b<="\uFDCF"); +} +} +if(!_P.adv){ _P.adv=true; +var $c=_P.cur(); +if($c==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\uFDF0"<=$c&&$c<="\uFFFD"); +} +} +if(!_P.adv){ _P.adv=true; +$d:{var $e=_P.pos; +var $f=_P.cur(); +if($f==null){_P.adv=false; +null; +}else{ +_P.step("\uD800"<=$f&&$f<="\uDB7F"); +} +if(!_P.adv) break $d; +var $g=_P.cur(); +if($g==null){_P.adv=false; +null; +}else{ +_P.step("\uDC00"<=$g&&$g<="\uDFFF"); +} +var _R=_P.doc.substring($e,_P.pos); +} +if(!_P.adv) _P.pos=$e; +} +return _R; +} +_rules.NameChar = function() { +var _R=_rules.NameStartChar(); +if(!_P.adv){ _P.adv=true; +var _R=_P.match("-"); +} +if(!_P.adv){ _P.adv=true; +var _R=_P.match("."); +} +if(!_P.adv){ _P.adv=true; +var $0=_P.cur(); +if($0==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("0"<=$0&&$0<="9"); +} +} +if(!_P.adv){ _P.adv=true; +var _R=_P.match("\u00B7"); +} +if(!_P.adv){ _P.adv=true; +var $1=_P.cur(); +if($1==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u0300"<=$1&&$1<="\u036F"); +} +} +if(!_P.adv){ _P.adv=true; +var $2=_P.cur(); +if($2==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u203F"<=$2&&$2<="\u2040"); +} +} +return _R; +} +_rules.Name = function() { +$0:{var $1=_P.pos; +_rules.NameStartChar(); +if(!_P.adv) break $0; +var $2=false; +for(;;) { +_rules.NameChar(); +if(!_P.adv) break; +$2=true; +}; _P.adv=true; +var _R=_P.doc.substring($1,_P.pos); +} +if(!_P.adv) _P.pos=$1; +return _R; +} +_rules.QName = function() { +var _R=_rules.PrefixedName(); +if(!_P.adv){ _P.adv=true; +var _R=_rules.UnprefixedName(); +} +return _R; +} +_rules.PrefixedName = function() { +$0:{var $1=_P.pos; +_rules.Prefix(); +if(!_P.adv) break $0; +_P.match(":"); +if(!_P.adv) break $0; +_rules.LocalPart(); +var _R=_P.doc.substring($1,_P.pos); +} +if(!_P.adv) _P.pos=$1; +return _R; +} +_rules.UnprefixedName = function() { +var _R=_rules.LocalPart(); +return _R; +} +_rules.Prefix = function() { +var _R=_rules.NCName(); +return _R; +} +_rules.LocalPart = function() { +var _R=_rules.NCName(); +return _R; +} +_rules.NCNameStartChar = function() { +var $0=_P.cur(); +if($0==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("A"<=$0&&$0<="Z"); +} +if(!_P.adv){ _P.adv=true; +var _R=_P.match("_"); +} +if(!_P.adv){ _P.adv=true; +var $1=_P.cur(); +if($1==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("a"<=$1&&$1<="z"); +} +} +if(!_P.adv){ _P.adv=true; +var $2=_P.cur(); +if($2==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u00C0"<=$2&&$2<="\u00D6"); +} +} +if(!_P.adv){ _P.adv=true; +var $3=_P.cur(); +if($3==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u00D8"<=$3&&$3<="\u00F6"); +} +} +if(!_P.adv){ _P.adv=true; +var $4=_P.cur(); +if($4==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u00F8"<=$4&&$4<="\u02FF"); +} +} +if(!_P.adv){ _P.adv=true; +var $5=_P.cur(); +if($5==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u0370"<=$5&&$5<="\u037D"); +} +} +if(!_P.adv){ _P.adv=true; +var $6=_P.cur(); +if($6==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u037F"<=$6&&$6<="\u1FFF"); +} +} +if(!_P.adv){ _P.adv=true; +var $7=_P.cur(); +if($7==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u200C"<=$7&&$7<="\u200D"); +} +} +if(!_P.adv){ _P.adv=true; +var $8=_P.cur(); +if($8==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u2070"<=$8&&$8<="\u218F"); +} +} +if(!_P.adv){ _P.adv=true; +var $9=_P.cur(); +if($9==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u2C00"<=$9&&$9<="\u2FEF"); +} +} +if(!_P.adv){ _P.adv=true; +var $a=_P.cur(); +if($a==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u3001"<=$a&&$a<="\uD7FF"); +} +} +if(!_P.adv){ _P.adv=true; +var $b=_P.cur(); +if($b==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\uF900"<=$b&&$b<="\uFDCF"); +} +} +if(!_P.adv){ _P.adv=true; +var $c=_P.cur(); +if($c==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\uFDF0"<=$c&&$c<="\uFFFD"); +} +} +if(!_P.adv){ _P.adv=true; +$d:{var $e=_P.pos; +var $f=_P.cur(); +if($f==null){_P.adv=false; +null; +}else{ +_P.step("\uD800"<=$f&&$f<="\uDB7F"); +} +if(!_P.adv) break $d; +var $g=_P.cur(); +if($g==null){_P.adv=false; +null; +}else{ +_P.step("\uDC00"<=$g&&$g<="\uDFFF"); +} +var _R=_P.doc.substring($e,_P.pos); +} +if(!_P.adv) _P.pos=$e; +} +return _R; +} +_rules.NCNameChar = function() { +var _R=_rules.NCNameStartChar(); +if(!_P.adv){ _P.adv=true; +var _R=_P.match("-"); +} +if(!_P.adv){ _P.adv=true; +var _R=_P.match("."); +} +if(!_P.adv){ _P.adv=true; +var $0=_P.cur(); +if($0==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("0"<=$0&&$0<="9"); +} +} +if(!_P.adv){ _P.adv=true; +var _R=_P.match("\u00B7"); +} +if(!_P.adv){ _P.adv=true; +var $1=_P.cur(); +if($1==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u0300"<=$1&&$1<="\u036F"); +} +} +if(!_P.adv){ _P.adv=true; +var $2=_P.cur(); +if($2==null){_P.adv=false; +var _R=null; +}else{ +var _R=_P.step("\u203F"<=$2&&$2<="\u2040"); +} +} +return _R; +} +_rules.NCName = function() { +$0:{var $1=_P.pos; +_rules.NCNameStartChar(); +if(!_P.adv) break $0; +var $2=false; +for(;;) { +_rules.NCNameChar(); +if(!_P.adv) break; +$2=true; +}; _P.adv=true; +var _R=_P.doc.substring($1,_P.pos); +} +if(!_P.adv) _P.pos=$1; +return _R; +} +function ParserState() { + this.doc = '' + this.pos = 0 + this.adv = true + + this.setInput = function(doc) { + this.doc = doc + this.pos = 0 + this.adv = true + } + + this.isEOF = function() { + return this.pos == this.doc.length + } + + this.cur = function() { + return _P.doc[_P.pos] + } + + this.match = function(str) { + if(_P.adv = _P.doc.substr(_P.pos, str.length) == str) { + _P.pos += str.length + return str + } + } + + this.step = function(flag) { + if(_P.adv = flag) { + _P.pos++ + return _P.doc[_P.pos - 1] + } + } + + this.unexpected = function(rule) { + throw new Error('Unexpected syntax in ' + rule) + } + + this.traceLine = function(pos) { + if(! pos) pos = _P.pos + + var from = _P.doc.lastIndexOf('\n', pos), to = _P.doc.indexOf('\n', pos) + + if(from == -1) + from = 0 + else + from++ + + if(to == -1) + to = pos.length + + var lineNo = _P.doc.substring(0, from).split('\n').length + var line = _P.doc.substring(from, to) + var pointer = Array(200).join(' ').substr(0, pos - from) + '^^^' + + return ( + 'Line ' + lineNo + ':\n' + + line + '\n' + + pointer + ) + } +} +var _P = new ParserState +return { + state: _P, + rules: _rules, +} +})(),null)})() \ No newline at end of file diff --git a/y18n/CHANGELOG.md b/y18n/CHANGELOG.md new file mode 100644 index 0000000000..244d83850d --- /dev/null +++ b/y18n/CHANGELOG.md @@ -0,0 +1,100 @@ +# Change Log + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +### [5.0.8](https://www.github.com/yargs/y18n/compare/v5.0.7...v5.0.8) (2021-04-07) + + +### Bug Fixes + +* **deno:** force modern release for Deno ([b1c215a](https://www.github.com/yargs/y18n/commit/b1c215aed714bee5830e76de3e335504dc2c4dab)) + +### [5.0.7](https://www.github.com/yargs/y18n/compare/v5.0.6...v5.0.7) (2021-04-07) + + +### Bug Fixes + +* **deno:** force release for deno ([#121](https://www.github.com/yargs/y18n/issues/121)) ([d3f2560](https://www.github.com/yargs/y18n/commit/d3f2560e6cedf2bfa2352e9eec044da53f9a06b2)) + +### [5.0.6](https://www.github.com/yargs/y18n/compare/v5.0.5...v5.0.6) (2021-04-05) + + +### Bug Fixes + +* **webpack:** skip readFileSync if not defined ([#117](https://www.github.com/yargs/y18n/issues/117)) ([6966fa9](https://www.github.com/yargs/y18n/commit/6966fa91d2881cc6a6c531e836099e01f4da1616)) + +### [5.0.5](https://www.github.com/yargs/y18n/compare/v5.0.4...v5.0.5) (2020-10-25) + + +### Bug Fixes + +* address prototype pollution issue ([#108](https://www.github.com/yargs/y18n/issues/108)) ([a9ac604](https://www.github.com/yargs/y18n/commit/a9ac604abf756dec9687be3843e2c93bfe581f25)) + +### [5.0.4](https://www.github.com/yargs/y18n/compare/v5.0.3...v5.0.4) (2020-10-16) + + +### Bug Fixes + +* **exports:** node 13.0 and 13.1 require the dotted object form _with_ a string fallback ([#105](https://www.github.com/yargs/y18n/issues/105)) ([4f85d80](https://www.github.com/yargs/y18n/commit/4f85d80dbaae6d2c7899ae394f7ad97805df4886)) + +### [5.0.3](https://www.github.com/yargs/y18n/compare/v5.0.2...v5.0.3) (2020-10-16) + + +### Bug Fixes + +* **exports:** node 13.0-13.6 require a string fallback ([#103](https://www.github.com/yargs/y18n/issues/103)) ([e39921e](https://www.github.com/yargs/y18n/commit/e39921e1017f88f5d8ea97ddea854ffe92d68e74)) + +### [5.0.2](https://www.github.com/yargs/y18n/compare/v5.0.1...v5.0.2) (2020-10-01) + + +### Bug Fixes + +* **deno:** update types for deno ^1.4.0 ([#100](https://www.github.com/yargs/y18n/issues/100)) ([3834d9a](https://www.github.com/yargs/y18n/commit/3834d9ab1332f2937c935ada5e76623290efae81)) + +### [5.0.1](https://www.github.com/yargs/y18n/compare/v5.0.0...v5.0.1) (2020-09-05) + + +### Bug Fixes + +* main had old index path ([#98](https://www.github.com/yargs/y18n/issues/98)) ([124f7b0](https://www.github.com/yargs/y18n/commit/124f7b047ba9596bdbdf64459988304e77f3de1b)) + +## [5.0.0](https://www.github.com/yargs/y18n/compare/v4.0.0...v5.0.0) (2020-09-05) + + +### โš  BREAKING CHANGES + +* exports maps are now used, which modifies import behavior. +* drops Node 6 and 4. begin following Node.js LTS schedule (#89) + +### Features + +* add support for ESM and Deno [#95](https://www.github.com/yargs/y18n/issues/95)) ([4d7ae94](https://www.github.com/yargs/y18n/commit/4d7ae94bcb42e84164e2180366474b1cd321ed94)) + + +### Build System + +* drops Node 6 and 4. begin following Node.js LTS schedule ([#89](https://www.github.com/yargs/y18n/issues/89)) ([3cc0c28](https://www.github.com/yargs/y18n/commit/3cc0c287240727b84eaf1927f903612ec80f5e43)) + +### 4.0.1 (2020-10-25) + + +### Bug Fixes + +* address prototype pollution issue ([#108](https://www.github.com/yargs/y18n/issues/108)) ([a9ac604](https://www.github.com/yargs/y18n/commit/7de58ca0d315990cdb38234e97fc66254cdbcd71)) + +## [4.0.0](https://github.com/yargs/y18n/compare/v3.2.1...v4.0.0) (2017-10-10) + + +### Bug Fixes + +* allow support for falsy values like 0 in tagged literal ([#45](https://github.com/yargs/y18n/issues/45)) ([c926123](https://github.com/yargs/y18n/commit/c926123)) + + +### Features + +* **__:** added tagged template literal support ([#44](https://github.com/yargs/y18n/issues/44)) ([0598daf](https://github.com/yargs/y18n/commit/0598daf)) + + +### BREAKING CHANGES + +* **__:** dropping Node 0.10/Node 0.12 support diff --git a/y18n/LICENSE b/y18n/LICENSE new file mode 100644 index 0000000000..3c157f0b9d --- /dev/null +++ b/y18n/LICENSE @@ -0,0 +1,13 @@ +Copyright (c) 2015, Contributors + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/y18n/README.md b/y18n/README.md new file mode 100644 index 0000000000..5102bb17db --- /dev/null +++ b/y18n/README.md @@ -0,0 +1,127 @@ +# y18n + +[![NPM version][npm-image]][npm-url] +[![js-standard-style][standard-image]][standard-url] +[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org) + +The bare-bones internationalization library used by yargs. + +Inspired by [i18n](https://www.npmjs.com/package/i18n). + +## Examples + +_simple string translation:_ + +```js +const __ = require('y18n')().__; + +console.log(__('my awesome string %s', 'foo')); +``` + +output: + +`my awesome string foo` + +_using tagged template literals_ + +```js +const __ = require('y18n')().__; + +const str = 'foo'; + +console.log(__`my awesome string ${str}`); +``` + +output: + +`my awesome string foo` + +_pluralization support:_ + +```js +const __n = require('y18n')().__n; + +console.log(__n('one fish %s', '%d fishes %s', 2, 'foo')); +``` + +output: + +`2 fishes foo` + +## Deno Example + +As of `v5` `y18n` supports [Deno](https://github.com/denoland/deno): + +```typescript +import y18n from "https://deno.land/x/y18n/deno.ts"; + +const __ = y18n({ + locale: 'pirate', + directory: './test/locales' +}).__ + +console.info(__`Hi, ${'Ben'} ${'Coe'}!`) +``` + +You will need to run with `--allow-read` to load alternative locales. + +## JSON Language Files + +The JSON language files should be stored in a `./locales` folder. +File names correspond to locales, e.g., `en.json`, `pirate.json`. + +When strings are observed for the first time they will be +added to the JSON file corresponding to the current locale. + +## Methods + +### require('y18n')(config) + +Create an instance of y18n with the config provided, options include: + +* `directory`: the locale directory, default `./locales`. +* `updateFiles`: should newly observed strings be updated in file, default `true`. +* `locale`: what locale should be used. +* `fallbackToLanguage`: should fallback to a language-only file (e.g. `en.json`) + be allowed if a file matching the locale does not exist (e.g. `en_US.json`), + default `true`. + +### y18n.\_\_(str, arg, arg, arg) + +Print a localized string, `%s` will be replaced with `arg`s. + +This function can also be used as a tag for a template literal. You can use it +like this: __`hello ${'world'}`. This will be equivalent to +`__('hello %s', 'world')`. + +### y18n.\_\_n(singularString, pluralString, count, arg, arg, arg) + +Print a localized string with appropriate pluralization. If `%d` is provided +in the string, the `count` will replace this placeholder. + +### y18n.setLocale(str) + +Set the current locale being used. + +### y18n.getLocale() + +What locale is currently being used? + +### y18n.updateLocale(obj) + +Update the current locale with the key value pairs in `obj`. + +## Supported Node.js Versions + +Libraries in this ecosystem make a best effort to track +[Node.js' release schedule](https://nodejs.org/en/about/releases/). Here's [a +post on why we think this is important](https://medium.com/the-node-js-collection/maintainers-should-consider-following-node-js-release-schedule-ab08ed4de71a). + +## License + +ISC + +[npm-url]: https://npmjs.org/package/y18n +[npm-image]: https://img.shields.io/npm/v/y18n.svg +[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg +[standard-url]: https://github.com/feross/standard diff --git a/y18n/build/index.cjs b/y18n/build/index.cjs new file mode 100644 index 0000000000..b2731e1a53 --- /dev/null +++ b/y18n/build/index.cjs @@ -0,0 +1,203 @@ +'use strict'; + +var fs = require('fs'); +var util = require('util'); +var path = require('path'); + +let shim; +class Y18N { + constructor(opts) { + // configurable options. + opts = opts || {}; + this.directory = opts.directory || './locales'; + this.updateFiles = typeof opts.updateFiles === 'boolean' ? opts.updateFiles : true; + this.locale = opts.locale || 'en'; + this.fallbackToLanguage = typeof opts.fallbackToLanguage === 'boolean' ? opts.fallbackToLanguage : true; + // internal stuff. + this.cache = Object.create(null); + this.writeQueue = []; + } + __(...args) { + if (typeof arguments[0] !== 'string') { + return this._taggedLiteral(arguments[0], ...arguments); + } + const str = args.shift(); + let cb = function () { }; // start with noop. + if (typeof args[args.length - 1] === 'function') + cb = args.pop(); + cb = cb || function () { }; // noop. + if (!this.cache[this.locale]) + this._readLocaleFile(); + // we've observed a new string, update the language file. + if (!this.cache[this.locale][str] && this.updateFiles) { + this.cache[this.locale][str] = str; + // include the current directory and locale, + // since these values could change before the + // write is performed. + this._enqueueWrite({ + directory: this.directory, + locale: this.locale, + cb + }); + } + else { + cb(); + } + return shim.format.apply(shim.format, [this.cache[this.locale][str] || str].concat(args)); + } + __n() { + const args = Array.prototype.slice.call(arguments); + const singular = args.shift(); + const plural = args.shift(); + const quantity = args.shift(); + let cb = function () { }; // start with noop. + if (typeof args[args.length - 1] === 'function') + cb = args.pop(); + if (!this.cache[this.locale]) + this._readLocaleFile(); + let str = quantity === 1 ? singular : plural; + if (this.cache[this.locale][singular]) { + const entry = this.cache[this.locale][singular]; + str = entry[quantity === 1 ? 'one' : 'other']; + } + // we've observed a new string, update the language file. + if (!this.cache[this.locale][singular] && this.updateFiles) { + this.cache[this.locale][singular] = { + one: singular, + other: plural + }; + // include the current directory and locale, + // since these values could change before the + // write is performed. + this._enqueueWrite({ + directory: this.directory, + locale: this.locale, + cb + }); + } + else { + cb(); + } + // if a %d placeholder is provided, add quantity + // to the arguments expanded by util.format. + const values = [str]; + if (~str.indexOf('%d')) + values.push(quantity); + return shim.format.apply(shim.format, values.concat(args)); + } + setLocale(locale) { + this.locale = locale; + } + getLocale() { + return this.locale; + } + updateLocale(obj) { + if (!this.cache[this.locale]) + this._readLocaleFile(); + for (const key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + this.cache[this.locale][key] = obj[key]; + } + } + } + _taggedLiteral(parts, ...args) { + let str = ''; + parts.forEach(function (part, i) { + const arg = args[i + 1]; + str += part; + if (typeof arg !== 'undefined') { + str += '%s'; + } + }); + return this.__.apply(this, [str].concat([].slice.call(args, 1))); + } + _enqueueWrite(work) { + this.writeQueue.push(work); + if (this.writeQueue.length === 1) + this._processWriteQueue(); + } + _processWriteQueue() { + const _this = this; + const work = this.writeQueue[0]; + // destructure the enqueued work. + const directory = work.directory; + const locale = work.locale; + const cb = work.cb; + const languageFile = this._resolveLocaleFile(directory, locale); + const serializedLocale = JSON.stringify(this.cache[locale], null, 2); + shim.fs.writeFile(languageFile, serializedLocale, 'utf-8', function (err) { + _this.writeQueue.shift(); + if (_this.writeQueue.length > 0) + _this._processWriteQueue(); + cb(err); + }); + } + _readLocaleFile() { + let localeLookup = {}; + const languageFile = this._resolveLocaleFile(this.directory, this.locale); + try { + // When using a bundler such as webpack, readFileSync may not be defined: + if (shim.fs.readFileSync) { + localeLookup = JSON.parse(shim.fs.readFileSync(languageFile, 'utf-8')); + } + } + catch (err) { + if (err instanceof SyntaxError) { + err.message = 'syntax error in ' + languageFile; + } + if (err.code === 'ENOENT') + localeLookup = {}; + else + throw err; + } + this.cache[this.locale] = localeLookup; + } + _resolveLocaleFile(directory, locale) { + let file = shim.resolve(directory, './', locale + '.json'); + if (this.fallbackToLanguage && !this._fileExistsSync(file) && ~locale.lastIndexOf('_')) { + // attempt fallback to language only + const languageFile = shim.resolve(directory, './', locale.split('_')[0] + '.json'); + if (this._fileExistsSync(languageFile)) + file = languageFile; + } + return file; + } + _fileExistsSync(file) { + return shim.exists(file); + } +} +function y18n$1(opts, _shim) { + shim = _shim; + const y18n = new Y18N(opts); + return { + __: y18n.__.bind(y18n), + __n: y18n.__n.bind(y18n), + setLocale: y18n.setLocale.bind(y18n), + getLocale: y18n.getLocale.bind(y18n), + updateLocale: y18n.updateLocale.bind(y18n), + locale: y18n.locale + }; +} + +var nodePlatformShim = { + fs: { + readFileSync: fs.readFileSync, + writeFile: fs.writeFile + }, + format: util.format, + resolve: path.resolve, + exists: (file) => { + try { + return fs.statSync(file).isFile(); + } + catch (err) { + return false; + } + } +}; + +const y18n = (opts) => { + return y18n$1(opts, nodePlatformShim); +}; + +module.exports = y18n; diff --git a/y18n/build/lib/cjs.js b/y18n/build/lib/cjs.js new file mode 100644 index 0000000000..ff5847093e --- /dev/null +++ b/y18n/build/lib/cjs.js @@ -0,0 +1,6 @@ +import { y18n as _y18n } from './index.js'; +import nodePlatformShim from './platform-shims/node.js'; +const y18n = (opts) => { + return _y18n(opts, nodePlatformShim); +}; +export default y18n; diff --git a/y18n/build/lib/index.js b/y18n/build/lib/index.js new file mode 100644 index 0000000000..e38f33594c --- /dev/null +++ b/y18n/build/lib/index.js @@ -0,0 +1,174 @@ +let shim; +class Y18N { + constructor(opts) { + // configurable options. + opts = opts || {}; + this.directory = opts.directory || './locales'; + this.updateFiles = typeof opts.updateFiles === 'boolean' ? opts.updateFiles : true; + this.locale = opts.locale || 'en'; + this.fallbackToLanguage = typeof opts.fallbackToLanguage === 'boolean' ? opts.fallbackToLanguage : true; + // internal stuff. + this.cache = Object.create(null); + this.writeQueue = []; + } + __(...args) { + if (typeof arguments[0] !== 'string') { + return this._taggedLiteral(arguments[0], ...arguments); + } + const str = args.shift(); + let cb = function () { }; // start with noop. + if (typeof args[args.length - 1] === 'function') + cb = args.pop(); + cb = cb || function () { }; // noop. + if (!this.cache[this.locale]) + this._readLocaleFile(); + // we've observed a new string, update the language file. + if (!this.cache[this.locale][str] && this.updateFiles) { + this.cache[this.locale][str] = str; + // include the current directory and locale, + // since these values could change before the + // write is performed. + this._enqueueWrite({ + directory: this.directory, + locale: this.locale, + cb + }); + } + else { + cb(); + } + return shim.format.apply(shim.format, [this.cache[this.locale][str] || str].concat(args)); + } + __n() { + const args = Array.prototype.slice.call(arguments); + const singular = args.shift(); + const plural = args.shift(); + const quantity = args.shift(); + let cb = function () { }; // start with noop. + if (typeof args[args.length - 1] === 'function') + cb = args.pop(); + if (!this.cache[this.locale]) + this._readLocaleFile(); + let str = quantity === 1 ? singular : plural; + if (this.cache[this.locale][singular]) { + const entry = this.cache[this.locale][singular]; + str = entry[quantity === 1 ? 'one' : 'other']; + } + // we've observed a new string, update the language file. + if (!this.cache[this.locale][singular] && this.updateFiles) { + this.cache[this.locale][singular] = { + one: singular, + other: plural + }; + // include the current directory and locale, + // since these values could change before the + // write is performed. + this._enqueueWrite({ + directory: this.directory, + locale: this.locale, + cb + }); + } + else { + cb(); + } + // if a %d placeholder is provided, add quantity + // to the arguments expanded by util.format. + const values = [str]; + if (~str.indexOf('%d')) + values.push(quantity); + return shim.format.apply(shim.format, values.concat(args)); + } + setLocale(locale) { + this.locale = locale; + } + getLocale() { + return this.locale; + } + updateLocale(obj) { + if (!this.cache[this.locale]) + this._readLocaleFile(); + for (const key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + this.cache[this.locale][key] = obj[key]; + } + } + } + _taggedLiteral(parts, ...args) { + let str = ''; + parts.forEach(function (part, i) { + const arg = args[i + 1]; + str += part; + if (typeof arg !== 'undefined') { + str += '%s'; + } + }); + return this.__.apply(this, [str].concat([].slice.call(args, 1))); + } + _enqueueWrite(work) { + this.writeQueue.push(work); + if (this.writeQueue.length === 1) + this._processWriteQueue(); + } + _processWriteQueue() { + const _this = this; + const work = this.writeQueue[0]; + // destructure the enqueued work. + const directory = work.directory; + const locale = work.locale; + const cb = work.cb; + const languageFile = this._resolveLocaleFile(directory, locale); + const serializedLocale = JSON.stringify(this.cache[locale], null, 2); + shim.fs.writeFile(languageFile, serializedLocale, 'utf-8', function (err) { + _this.writeQueue.shift(); + if (_this.writeQueue.length > 0) + _this._processWriteQueue(); + cb(err); + }); + } + _readLocaleFile() { + let localeLookup = {}; + const languageFile = this._resolveLocaleFile(this.directory, this.locale); + try { + // When using a bundler such as webpack, readFileSync may not be defined: + if (shim.fs.readFileSync) { + localeLookup = JSON.parse(shim.fs.readFileSync(languageFile, 'utf-8')); + } + } + catch (err) { + if (err instanceof SyntaxError) { + err.message = 'syntax error in ' + languageFile; + } + if (err.code === 'ENOENT') + localeLookup = {}; + else + throw err; + } + this.cache[this.locale] = localeLookup; + } + _resolveLocaleFile(directory, locale) { + let file = shim.resolve(directory, './', locale + '.json'); + if (this.fallbackToLanguage && !this._fileExistsSync(file) && ~locale.lastIndexOf('_')) { + // attempt fallback to language only + const languageFile = shim.resolve(directory, './', locale.split('_')[0] + '.json'); + if (this._fileExistsSync(languageFile)) + file = languageFile; + } + return file; + } + _fileExistsSync(file) { + return shim.exists(file); + } +} +export function y18n(opts, _shim) { + shim = _shim; + const y18n = new Y18N(opts); + return { + __: y18n.__.bind(y18n), + __n: y18n.__n.bind(y18n), + setLocale: y18n.setLocale.bind(y18n), + getLocale: y18n.getLocale.bind(y18n), + updateLocale: y18n.updateLocale.bind(y18n), + locale: y18n.locale + }; +} diff --git a/y18n/build/lib/platform-shims/node.js b/y18n/build/lib/platform-shims/node.js new file mode 100644 index 0000000000..181208b81f --- /dev/null +++ b/y18n/build/lib/platform-shims/node.js @@ -0,0 +1,19 @@ +import { readFileSync, statSync, writeFile } from 'fs'; +import { format } from 'util'; +import { resolve } from 'path'; +export default { + fs: { + readFileSync, + writeFile + }, + format, + resolve, + exists: (file) => { + try { + return statSync(file).isFile(); + } + catch (err) { + return false; + } + } +}; diff --git a/y18n/index.mjs b/y18n/index.mjs new file mode 100644 index 0000000000..46c82133c9 --- /dev/null +++ b/y18n/index.mjs @@ -0,0 +1,8 @@ +import shim from './build/lib/platform-shims/node.js' +import { y18n as _y18n } from './build/lib/index.js' + +const y18n = (opts) => { + return _y18n(opts, shim) +} + +export default y18n diff --git a/y18n/package.json b/y18n/package.json new file mode 100644 index 0000000000..4e5c1ca602 --- /dev/null +++ b/y18n/package.json @@ -0,0 +1,70 @@ +{ + "name": "y18n", + "version": "5.0.8", + "description": "the bare-bones internationalization library used by yargs", + "exports": { + ".": [ + { + "import": "./index.mjs", + "require": "./build/index.cjs" + }, + "./build/index.cjs" + ] + }, + "type": "module", + "module": "./build/lib/index.js", + "keywords": [ + "i18n", + "internationalization", + "yargs" + ], + "homepage": "https://github.com/yargs/y18n", + "bugs": { + "url": "https://github.com/yargs/y18n/issues" + }, + "repository": "yargs/y18n", + "license": "ISC", + "author": "Ben Coe ", + "main": "./build/index.cjs", + "scripts": { + "check": "standardx **/*.ts **/*.cjs **/*.mjs", + "fix": "standardx --fix **/*.ts **/*.cjs **/*.mjs", + "pretest": "rimraf build && tsc -p tsconfig.test.json && cross-env NODE_ENV=test npm run build:cjs", + "test": "c8 --reporter=text --reporter=html mocha test/*.cjs", + "test:esm": "c8 --reporter=text --reporter=html mocha test/esm/*.mjs", + "posttest": "npm run check", + "coverage": "c8 report --check-coverage", + "precompile": "rimraf build", + "compile": "tsc", + "postcompile": "npm run build:cjs", + "build:cjs": "rollup -c", + "prepare": "npm run compile" + }, + "devDependencies": { + "@types/node": "^14.6.4", + "@wessberg/rollup-plugin-ts": "^1.3.1", + "c8": "^7.3.0", + "chai": "^4.0.1", + "cross-env": "^7.0.2", + "gts": "^3.0.0", + "mocha": "^8.0.0", + "rimraf": "^3.0.2", + "rollup": "^2.26.10", + "standardx": "^7.0.0", + "ts-transform-default-export": "^1.0.2", + "typescript": "^4.0.0" + }, + "files": [ + "build", + "index.mjs", + "!*.d.ts" + ], + "engines": { + "node": ">=10" + }, + "standardx": { + "ignore": [ + "build" + ] + } +} diff --git a/yallist/LICENSE b/yallist/LICENSE new file mode 100644 index 0000000000..19129e315f --- /dev/null +++ b/yallist/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/yallist/README.md b/yallist/README.md new file mode 100644 index 0000000000..f586101869 --- /dev/null +++ b/yallist/README.md @@ -0,0 +1,204 @@ +# yallist + +Yet Another Linked List + +There are many doubly-linked list implementations like it, but this +one is mine. + +For when an array would be too big, and a Map can't be iterated in +reverse order. + + +[![Build Status](https://travis-ci.org/isaacs/yallist.svg?branch=master)](https://travis-ci.org/isaacs/yallist) [![Coverage Status](https://coveralls.io/repos/isaacs/yallist/badge.svg?service=github)](https://coveralls.io/github/isaacs/yallist) + +## basic usage + +```javascript +var yallist = require('yallist') +var myList = yallist.create([1, 2, 3]) +myList.push('foo') +myList.unshift('bar') +// of course pop() and shift() are there, too +console.log(myList.toArray()) // ['bar', 1, 2, 3, 'foo'] +myList.forEach(function (k) { + // walk the list head to tail +}) +myList.forEachReverse(function (k, index, list) { + // walk the list tail to head +}) +var myDoubledList = myList.map(function (k) { + return k + k +}) +// now myDoubledList contains ['barbar', 2, 4, 6, 'foofoo'] +// mapReverse is also a thing +var myDoubledListReverse = myList.mapReverse(function (k) { + return k + k +}) // ['foofoo', 6, 4, 2, 'barbar'] + +var reduced = myList.reduce(function (set, entry) { + set += entry + return set +}, 'start') +console.log(reduced) // 'startfoo123bar' +``` + +## api + +The whole API is considered "public". + +Functions with the same name as an Array method work more or less the +same way. + +There's reverse versions of most things because that's the point. + +### Yallist + +Default export, the class that holds and manages a list. + +Call it with either a forEach-able (like an array) or a set of +arguments, to initialize the list. + +The Array-ish methods all act like you'd expect. No magic length, +though, so if you change that it won't automatically prune or add +empty spots. + +### Yallist.create(..) + +Alias for Yallist function. Some people like factories. + +#### yallist.head + +The first node in the list + +#### yallist.tail + +The last node in the list + +#### yallist.length + +The number of nodes in the list. (Change this at your peril. It is +not magic like Array length.) + +#### yallist.toArray() + +Convert the list to an array. + +#### yallist.forEach(fn, [thisp]) + +Call a function on each item in the list. + +#### yallist.forEachReverse(fn, [thisp]) + +Call a function on each item in the list, in reverse order. + +#### yallist.get(n) + +Get the data at position `n` in the list. If you use this a lot, +probably better off just using an Array. + +#### yallist.getReverse(n) + +Get the data at position `n`, counting from the tail. + +#### yallist.map(fn, thisp) + +Create a new Yallist with the result of calling the function on each +item. + +#### yallist.mapReverse(fn, thisp) + +Same as `map`, but in reverse. + +#### yallist.pop() + +Get the data from the list tail, and remove the tail from the list. + +#### yallist.push(item, ...) + +Insert one or more items to the tail of the list. + +#### yallist.reduce(fn, initialValue) + +Like Array.reduce. + +#### yallist.reduceReverse + +Like Array.reduce, but in reverse. + +#### yallist.reverse + +Reverse the list in place. + +#### yallist.shift() + +Get the data from the list head, and remove the head from the list. + +#### yallist.slice([from], [to]) + +Just like Array.slice, but returns a new Yallist. + +#### yallist.sliceReverse([from], [to]) + +Just like yallist.slice, but the result is returned in reverse. + +#### yallist.toArray() + +Create an array representation of the list. + +#### yallist.toArrayReverse() + +Create a reversed array representation of the list. + +#### yallist.unshift(item, ...) + +Insert one or more items to the head of the list. + +#### yallist.unshiftNode(node) + +Move a Node object to the front of the list. (That is, pull it out of +wherever it lives, and make it the new head.) + +If the node belongs to a different list, then that list will remove it +first. + +#### yallist.pushNode(node) + +Move a Node object to the end of the list. (That is, pull it out of +wherever it lives, and make it the new tail.) + +If the node belongs to a list already, then that list will remove it +first. + +#### yallist.removeNode(node) + +Remove a node from the list, preserving referential integrity of head +and tail and other nodes. + +Will throw an error if you try to have a list remove a node that +doesn't belong to it. + +### Yallist.Node + +The class that holds the data and is actually the list. + +Call with `var n = new Node(value, previousNode, nextNode)` + +Note that if you do direct operations on Nodes themselves, it's very +easy to get into weird states where the list is broken. Be careful :) + +#### node.next + +The next node in the list. + +#### node.prev + +The previous node in the list. + +#### node.value + +The data the node contains. + +#### node.list + +The list to which this node belongs. (Null if it does not belong to +any list.) diff --git a/yallist/iterator.js b/yallist/iterator.js new file mode 100644 index 0000000000..d41c97a19f --- /dev/null +++ b/yallist/iterator.js @@ -0,0 +1,8 @@ +'use strict' +module.exports = function (Yallist) { + Yallist.prototype[Symbol.iterator] = function* () { + for (let walker = this.head; walker; walker = walker.next) { + yield walker.value + } + } +} diff --git a/yallist/package.json b/yallist/package.json new file mode 100644 index 0000000000..2712809923 --- /dev/null +++ b/yallist/package.json @@ -0,0 +1,29 @@ +{ + "name": "yallist", + "version": "3.1.1", + "description": "Yet Another Linked List", + "main": "yallist.js", + "directories": { + "test": "test" + }, + "files": [ + "yallist.js", + "iterator.js" + ], + "dependencies": {}, + "devDependencies": { + "tap": "^12.1.0" + }, + "scripts": { + "test": "tap test/*.js --100", + "preversion": "npm test", + "postversion": "npm publish", + "postpublish": "git push origin --all; git push origin --tags" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/isaacs/yallist.git" + }, + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "license": "ISC" +} diff --git a/yallist/yallist.js b/yallist/yallist.js new file mode 100644 index 0000000000..ed4e7303aa --- /dev/null +++ b/yallist/yallist.js @@ -0,0 +1,426 @@ +'use strict' +module.exports = Yallist + +Yallist.Node = Node +Yallist.create = Yallist + +function Yallist (list) { + var self = this + if (!(self instanceof Yallist)) { + self = new Yallist() + } + + self.tail = null + self.head = null + self.length = 0 + + if (list && typeof list.forEach === 'function') { + list.forEach(function (item) { + self.push(item) + }) + } else if (arguments.length > 0) { + for (var i = 0, l = arguments.length; i < l; i++) { + self.push(arguments[i]) + } + } + + return self +} + +Yallist.prototype.removeNode = function (node) { + if (node.list !== this) { + throw new Error('removing node which does not belong to this list') + } + + var next = node.next + var prev = node.prev + + if (next) { + next.prev = prev + } + + if (prev) { + prev.next = next + } + + if (node === this.head) { + this.head = next + } + if (node === this.tail) { + this.tail = prev + } + + node.list.length-- + node.next = null + node.prev = null + node.list = null + + return next +} + +Yallist.prototype.unshiftNode = function (node) { + if (node === this.head) { + return + } + + if (node.list) { + node.list.removeNode(node) + } + + var head = this.head + node.list = this + node.next = head + if (head) { + head.prev = node + } + + this.head = node + if (!this.tail) { + this.tail = node + } + this.length++ +} + +Yallist.prototype.pushNode = function (node) { + if (node === this.tail) { + return + } + + if (node.list) { + node.list.removeNode(node) + } + + var tail = this.tail + node.list = this + node.prev = tail + if (tail) { + tail.next = node + } + + this.tail = node + if (!this.head) { + this.head = node + } + this.length++ +} + +Yallist.prototype.push = function () { + for (var i = 0, l = arguments.length; i < l; i++) { + push(this, arguments[i]) + } + return this.length +} + +Yallist.prototype.unshift = function () { + for (var i = 0, l = arguments.length; i < l; i++) { + unshift(this, arguments[i]) + } + return this.length +} + +Yallist.prototype.pop = function () { + if (!this.tail) { + return undefined + } + + var res = this.tail.value + this.tail = this.tail.prev + if (this.tail) { + this.tail.next = null + } else { + this.head = null + } + this.length-- + return res +} + +Yallist.prototype.shift = function () { + if (!this.head) { + return undefined + } + + var res = this.head.value + this.head = this.head.next + if (this.head) { + this.head.prev = null + } else { + this.tail = null + } + this.length-- + return res +} + +Yallist.prototype.forEach = function (fn, thisp) { + thisp = thisp || this + for (var walker = this.head, i = 0; walker !== null; i++) { + fn.call(thisp, walker.value, i, this) + walker = walker.next + } +} + +Yallist.prototype.forEachReverse = function (fn, thisp) { + thisp = thisp || this + for (var walker = this.tail, i = this.length - 1; walker !== null; i--) { + fn.call(thisp, walker.value, i, this) + walker = walker.prev + } +} + +Yallist.prototype.get = function (n) { + for (var i = 0, walker = this.head; walker !== null && i < n; i++) { + // abort out of the list early if we hit a cycle + walker = walker.next + } + if (i === n && walker !== null) { + return walker.value + } +} + +Yallist.prototype.getReverse = function (n) { + for (var i = 0, walker = this.tail; walker !== null && i < n; i++) { + // abort out of the list early if we hit a cycle + walker = walker.prev + } + if (i === n && walker !== null) { + return walker.value + } +} + +Yallist.prototype.map = function (fn, thisp) { + thisp = thisp || this + var res = new Yallist() + for (var walker = this.head; walker !== null;) { + res.push(fn.call(thisp, walker.value, this)) + walker = walker.next + } + return res +} + +Yallist.prototype.mapReverse = function (fn, thisp) { + thisp = thisp || this + var res = new Yallist() + for (var walker = this.tail; walker !== null;) { + res.push(fn.call(thisp, walker.value, this)) + walker = walker.prev + } + return res +} + +Yallist.prototype.reduce = function (fn, initial) { + var acc + var walker = this.head + if (arguments.length > 1) { + acc = initial + } else if (this.head) { + walker = this.head.next + acc = this.head.value + } else { + throw new TypeError('Reduce of empty list with no initial value') + } + + for (var i = 0; walker !== null; i++) { + acc = fn(acc, walker.value, i) + walker = walker.next + } + + return acc +} + +Yallist.prototype.reduceReverse = function (fn, initial) { + var acc + var walker = this.tail + if (arguments.length > 1) { + acc = initial + } else if (this.tail) { + walker = this.tail.prev + acc = this.tail.value + } else { + throw new TypeError('Reduce of empty list with no initial value') + } + + for (var i = this.length - 1; walker !== null; i--) { + acc = fn(acc, walker.value, i) + walker = walker.prev + } + + return acc +} + +Yallist.prototype.toArray = function () { + var arr = new Array(this.length) + for (var i = 0, walker = this.head; walker !== null; i++) { + arr[i] = walker.value + walker = walker.next + } + return arr +} + +Yallist.prototype.toArrayReverse = function () { + var arr = new Array(this.length) + for (var i = 0, walker = this.tail; walker !== null; i++) { + arr[i] = walker.value + walker = walker.prev + } + return arr +} + +Yallist.prototype.slice = function (from, to) { + to = to || this.length + if (to < 0) { + to += this.length + } + from = from || 0 + if (from < 0) { + from += this.length + } + var ret = new Yallist() + if (to < from || to < 0) { + return ret + } + if (from < 0) { + from = 0 + } + if (to > this.length) { + to = this.length + } + for (var i = 0, walker = this.head; walker !== null && i < from; i++) { + walker = walker.next + } + for (; walker !== null && i < to; i++, walker = walker.next) { + ret.push(walker.value) + } + return ret +} + +Yallist.prototype.sliceReverse = function (from, to) { + to = to || this.length + if (to < 0) { + to += this.length + } + from = from || 0 + if (from < 0) { + from += this.length + } + var ret = new Yallist() + if (to < from || to < 0) { + return ret + } + if (from < 0) { + from = 0 + } + if (to > this.length) { + to = this.length + } + for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) { + walker = walker.prev + } + for (; walker !== null && i > from; i--, walker = walker.prev) { + ret.push(walker.value) + } + return ret +} + +Yallist.prototype.splice = function (start, deleteCount /*, ...nodes */) { + if (start > this.length) { + start = this.length - 1 + } + if (start < 0) { + start = this.length + start; + } + + for (var i = 0, walker = this.head; walker !== null && i < start; i++) { + walker = walker.next + } + + var ret = [] + for (var i = 0; walker && i < deleteCount; i++) { + ret.push(walker.value) + walker = this.removeNode(walker) + } + if (walker === null) { + walker = this.tail + } + + if (walker !== this.head && walker !== this.tail) { + walker = walker.prev + } + + for (var i = 2; i < arguments.length; i++) { + walker = insert(this, walker, arguments[i]) + } + return ret; +} + +Yallist.prototype.reverse = function () { + var head = this.head + var tail = this.tail + for (var walker = head; walker !== null; walker = walker.prev) { + var p = walker.prev + walker.prev = walker.next + walker.next = p + } + this.head = tail + this.tail = head + return this +} + +function insert (self, node, value) { + var inserted = node === self.head ? + new Node(value, null, node, self) : + new Node(value, node, node.next, self) + + if (inserted.next === null) { + self.tail = inserted + } + if (inserted.prev === null) { + self.head = inserted + } + + self.length++ + + return inserted +} + +function push (self, item) { + self.tail = new Node(item, self.tail, null, self) + if (!self.head) { + self.head = self.tail + } + self.length++ +} + +function unshift (self, item) { + self.head = new Node(item, null, self.head, self) + if (!self.tail) { + self.tail = self.head + } + self.length++ +} + +function Node (value, prev, next, list) { + if (!(this instanceof Node)) { + return new Node(value, prev, next, list) + } + + this.list = list + this.value = value + + if (prev) { + prev.next = this + this.prev = prev + } else { + this.prev = null + } + + if (next) { + next.prev = this + this.next = next + } else { + this.next = null + } +} + +try { + // add if support for Symbol.iterator is present + require('./iterator.js')(Yallist) +} catch (er) {} diff --git a/yaml/browser/dist/PlainValue-b8036b75.js b/yaml/browser/dist/PlainValue-b8036b75.js new file mode 100644 index 0000000000..2a4255a292 --- /dev/null +++ b/yaml/browser/dist/PlainValue-b8036b75.js @@ -0,0 +1,1275 @@ +function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); +} + +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } +} + +function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; +} + +function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; +} + +function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + if (superClass) _setPrototypeOf(subClass, superClass); +} + +function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); +} + +function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + + return _setPrototypeOf(o, p); +} + +function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + + try { + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); + return true; + } catch (e) { + return false; + } +} + +function _construct(Parent, args, Class) { + if (_isNativeReflectConstruct()) { + _construct = Reflect.construct; + } else { + _construct = function _construct(Parent, args, Class) { + var a = [null]; + a.push.apply(a, args); + var Constructor = Function.bind.apply(Parent, a); + var instance = new Constructor(); + if (Class) _setPrototypeOf(instance, Class.prototype); + return instance; + }; + } + + return _construct.apply(null, arguments); +} + +function _isNativeFunction(fn) { + return Function.toString.call(fn).indexOf("[native code]") !== -1; +} + +function _wrapNativeSuper(Class) { + var _cache = typeof Map === "function" ? new Map() : undefined; + + _wrapNativeSuper = function _wrapNativeSuper(Class) { + if (Class === null || !_isNativeFunction(Class)) return Class; + + if (typeof Class !== "function") { + throw new TypeError("Super expression must either be null or a function"); + } + + if (typeof _cache !== "undefined") { + if (_cache.has(Class)) return _cache.get(Class); + + _cache.set(Class, Wrapper); + } + + function Wrapper() { + return _construct(Class, arguments, _getPrototypeOf(this).constructor); + } + + Wrapper.prototype = Object.create(Class.prototype, { + constructor: { + value: Wrapper, + enumerable: false, + writable: true, + configurable: true + } + }); + return _setPrototypeOf(Wrapper, Class); + }; + + return _wrapNativeSuper(Class); +} + +function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return self; +} + +function _possibleConstructorReturn(self, call) { + if (call && (typeof call === "object" || typeof call === "function")) { + return call; + } + + return _assertThisInitialized(self); +} + +function _createSuper(Derived) { + var hasNativeReflectConstruct = _isNativeReflectConstruct(); + + return function _createSuperInternal() { + var Super = _getPrototypeOf(Derived), + result; + + if (hasNativeReflectConstruct) { + var NewTarget = _getPrototypeOf(this).constructor; + + result = Reflect.construct(Super, arguments, NewTarget); + } else { + result = Super.apply(this, arguments); + } + + return _possibleConstructorReturn(this, result); + }; +} + +function _superPropBase(object, property) { + while (!Object.prototype.hasOwnProperty.call(object, property)) { + object = _getPrototypeOf(object); + if (object === null) break; + } + + return object; +} + +function _get(target, property, receiver) { + if (typeof Reflect !== "undefined" && Reflect.get) { + _get = Reflect.get; + } else { + _get = function _get(target, property, receiver) { + var base = _superPropBase(target, property); + + if (!base) return; + var desc = Object.getOwnPropertyDescriptor(base, property); + + if (desc.get) { + return desc.get.call(receiver); + } + + return desc.value; + }; + } + + return _get(target, property, receiver || target); +} + +function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); +} + +function _toArray(arr) { + return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); +} + +function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; +} + +function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); +} + +function _iterableToArrayLimit(arr, i) { + if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; +} + +function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); +} + +function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; +} + +function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} + +function _createForOfIteratorHelper(o, allowArrayLike) { + var it; + + if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { + if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { + if (it) o = it; + var i = 0; + + var F = function () {}; + + return { + s: F, + n: function () { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }, + e: function (e) { + throw e; + }, + f: F + }; + } + + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + var normalCompletion = true, + didErr = false, + err; + return { + s: function () { + it = o[Symbol.iterator](); + }, + n: function () { + var step = it.next(); + normalCompletion = step.done; + return step; + }, + e: function (e) { + didErr = true; + err = e; + }, + f: function () { + try { + if (!normalCompletion && it.return != null) it.return(); + } finally { + if (didErr) throw err; + } + } + }; +} + +var Char = { + ANCHOR: '&', + COMMENT: '#', + TAG: '!', + DIRECTIVES_END: '-', + DOCUMENT_END: '.' +}; +var Type = { + ALIAS: 'ALIAS', + BLANK_LINE: 'BLANK_LINE', + BLOCK_FOLDED: 'BLOCK_FOLDED', + BLOCK_LITERAL: 'BLOCK_LITERAL', + COMMENT: 'COMMENT', + DIRECTIVE: 'DIRECTIVE', + DOCUMENT: 'DOCUMENT', + FLOW_MAP: 'FLOW_MAP', + FLOW_SEQ: 'FLOW_SEQ', + MAP: 'MAP', + MAP_KEY: 'MAP_KEY', + MAP_VALUE: 'MAP_VALUE', + PLAIN: 'PLAIN', + QUOTE_DOUBLE: 'QUOTE_DOUBLE', + QUOTE_SINGLE: 'QUOTE_SINGLE', + SEQ: 'SEQ', + SEQ_ITEM: 'SEQ_ITEM' +}; +var defaultTagPrefix = 'tag:yaml.org,2002:'; +var defaultTags = { + MAP: 'tag:yaml.org,2002:map', + SEQ: 'tag:yaml.org,2002:seq', + STR: 'tag:yaml.org,2002:str' +}; + +function findLineStarts(src) { + var ls = [0]; + var offset = src.indexOf('\n'); + + while (offset !== -1) { + offset += 1; + ls.push(offset); + offset = src.indexOf('\n', offset); + } + + return ls; +} + +function getSrcInfo(cst) { + var lineStarts, src; + + if (typeof cst === 'string') { + lineStarts = findLineStarts(cst); + src = cst; + } else { + if (Array.isArray(cst)) cst = cst[0]; + + if (cst && cst.context) { + if (!cst.lineStarts) cst.lineStarts = findLineStarts(cst.context.src); + lineStarts = cst.lineStarts; + src = cst.context.src; + } + } + + return { + lineStarts: lineStarts, + src: src + }; +} +/** + * @typedef {Object} LinePos - One-indexed position in the source + * @property {number} line + * @property {number} col + */ + +/** + * Determine the line/col position matching a character offset. + * + * Accepts a source string or a CST document as the second parameter. With + * the latter, starting indices for lines are cached in the document as + * `lineStarts: number[]`. + * + * Returns a one-indexed `{ line, col }` location if found, or + * `undefined` otherwise. + * + * @param {number} offset + * @param {string|Document|Document[]} cst + * @returns {?LinePos} + */ + + +function getLinePos(offset, cst) { + if (typeof offset !== 'number' || offset < 0) return null; + + var _getSrcInfo = getSrcInfo(cst), + lineStarts = _getSrcInfo.lineStarts, + src = _getSrcInfo.src; + + if (!lineStarts || !src || offset > src.length) return null; + + for (var i = 0; i < lineStarts.length; ++i) { + var start = lineStarts[i]; + + if (offset < start) { + return { + line: i, + col: offset - lineStarts[i - 1] + 1 + }; + } + + if (offset === start) return { + line: i + 1, + col: 1 + }; + } + + var line = lineStarts.length; + return { + line: line, + col: offset - lineStarts[line - 1] + 1 + }; +} +/** + * Get a specified line from the source. + * + * Accepts a source string or a CST document as the second parameter. With + * the latter, starting indices for lines are cached in the document as + * `lineStarts: number[]`. + * + * Returns the line as a string if found, or `null` otherwise. + * + * @param {number} line One-indexed line number + * @param {string|Document|Document[]} cst + * @returns {?string} + */ + +function getLine(line, cst) { + var _getSrcInfo2 = getSrcInfo(cst), + lineStarts = _getSrcInfo2.lineStarts, + src = _getSrcInfo2.src; + + if (!lineStarts || !(line >= 1) || line > lineStarts.length) return null; + var start = lineStarts[line - 1]; + var end = lineStarts[line]; // undefined for last line; that's ok for slice() + + while (end && end > start && src[end - 1] === '\n') { + --end; + } + + return src.slice(start, end); +} +/** + * Pretty-print the starting line from the source indicated by the range `pos` + * + * Trims output to `maxWidth` chars while keeping the starting column visible, + * using `โ€ฆ` at either end to indicate dropped characters. + * + * Returns a two-line string (or `null`) with `\n` as separator; the second line + * will hold appropriately indented `^` marks indicating the column range. + * + * @param {Object} pos + * @param {LinePos} pos.start + * @param {LinePos} [pos.end] + * @param {string|Document|Document[]*} cst + * @param {number} [maxWidth=80] + * @returns {?string} + */ + +function getPrettyContext(_ref, cst) { + var start = _ref.start, + end = _ref.end; + var maxWidth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 80; + var src = getLine(start.line, cst); + if (!src) return null; + var col = start.col; + + if (src.length > maxWidth) { + if (col <= maxWidth - 10) { + src = src.substr(0, maxWidth - 1) + 'โ€ฆ'; + } else { + var halfWidth = Math.round(maxWidth / 2); + if (src.length > col + halfWidth) src = src.substr(0, col + halfWidth - 1) + 'โ€ฆ'; + col -= src.length - maxWidth; + src = 'โ€ฆ' + src.substr(1 - maxWidth); + } + } + + var errLen = 1; + var errEnd = ''; + + if (end) { + if (end.line === start.line && col + (end.col - start.col) <= maxWidth + 1) { + errLen = end.col - start.col; + } else { + errLen = Math.min(src.length + 1, maxWidth) - col; + errEnd = 'โ€ฆ'; + } + } + + var offset = col > 1 ? ' '.repeat(col - 1) : ''; + var err = '^'.repeat(errLen); + return "".concat(src, "\n").concat(offset).concat(err).concat(errEnd); +} + +var Range = /*#__PURE__*/function () { + function Range(start, end) { + _classCallCheck(this, Range); + + this.start = start; + this.end = end || start; + } + + _createClass(Range, [{ + key: "isEmpty", + value: function isEmpty() { + return typeof this.start !== 'number' || !this.end || this.end <= this.start; + } + /** + * Set `origStart` and `origEnd` to point to the original source range for + * this node, which may differ due to dropped CR characters. + * + * @param {number[]} cr - Positions of dropped CR characters + * @param {number} offset - Starting index of `cr` from the last call + * @returns {number} - The next offset, matching the one found for `origStart` + */ + + }, { + key: "setOrigRange", + value: function setOrigRange(cr, offset) { + var start = this.start, + end = this.end; + + if (cr.length === 0 || end <= cr[0]) { + this.origStart = start; + this.origEnd = end; + return offset; + } + + var i = offset; + + while (i < cr.length) { + if (cr[i] > start) break;else ++i; + } + + this.origStart = start + i; + var nextOffset = i; + + while (i < cr.length) { + // if end was at \n, it should now be at \r + if (cr[i] >= end) break;else ++i; + } + + this.origEnd = end + i; + return nextOffset; + } + }], [{ + key: "copy", + value: function copy(orig) { + return new Range(orig.start, orig.end); + } + }]); + + return Range; +}(); + +/** Root class of all nodes */ + +var Node = /*#__PURE__*/function () { + function Node(type, props, context) { + _classCallCheck(this, Node); + + Object.defineProperty(this, 'context', { + value: context || null, + writable: true + }); + this.error = null; + this.range = null; + this.valueRange = null; + this.props = props || []; + this.type = type; + this.value = null; + } + + _createClass(Node, [{ + key: "getPropValue", + value: function getPropValue(idx, key, skipKey) { + if (!this.context) return null; + var src = this.context.src; + var prop = this.props[idx]; + return prop && src[prop.start] === key ? src.slice(prop.start + (skipKey ? 1 : 0), prop.end) : null; + } + }, { + key: "anchor", + get: function get() { + for (var i = 0; i < this.props.length; ++i) { + var anchor = this.getPropValue(i, Char.ANCHOR, true); + if (anchor != null) return anchor; + } + + return null; + } + }, { + key: "comment", + get: function get() { + var comments = []; + + for (var i = 0; i < this.props.length; ++i) { + var comment = this.getPropValue(i, Char.COMMENT, true); + if (comment != null) comments.push(comment); + } + + return comments.length > 0 ? comments.join('\n') : null; + } + }, { + key: "commentHasRequiredWhitespace", + value: function commentHasRequiredWhitespace(start) { + var src = this.context.src; + if (this.header && start === this.header.end) return false; + if (!this.valueRange) return false; + var end = this.valueRange.end; + return start !== end || Node.atBlank(src, end - 1); + } + }, { + key: "hasComment", + get: function get() { + if (this.context) { + var src = this.context.src; + + for (var i = 0; i < this.props.length; ++i) { + if (src[this.props[i].start] === Char.COMMENT) return true; + } + } + + return false; + } + }, { + key: "hasProps", + get: function get() { + if (this.context) { + var src = this.context.src; + + for (var i = 0; i < this.props.length; ++i) { + if (src[this.props[i].start] !== Char.COMMENT) return true; + } + } + + return false; + } + }, { + key: "includesTrailingLines", + get: function get() { + return false; + } + }, { + key: "jsonLike", + get: function get() { + var jsonLikeTypes = [Type.FLOW_MAP, Type.FLOW_SEQ, Type.QUOTE_DOUBLE, Type.QUOTE_SINGLE]; + return jsonLikeTypes.indexOf(this.type) !== -1; + } + }, { + key: "rangeAsLinePos", + get: function get() { + if (!this.range || !this.context) return undefined; + var start = getLinePos(this.range.start, this.context.root); + if (!start) return undefined; + var end = getLinePos(this.range.end, this.context.root); + return { + start: start, + end: end + }; + } + }, { + key: "rawValue", + get: function get() { + if (!this.valueRange || !this.context) return null; + var _this$valueRange = this.valueRange, + start = _this$valueRange.start, + end = _this$valueRange.end; + return this.context.src.slice(start, end); + } + }, { + key: "tag", + get: function get() { + for (var i = 0; i < this.props.length; ++i) { + var tag = this.getPropValue(i, Char.TAG, false); + + if (tag != null) { + if (tag[1] === '<') { + return { + verbatim: tag.slice(2, -1) + }; + } else { + // eslint-disable-next-line no-unused-vars + var _tag$match = tag.match(/^(.*!)([^!]*)$/), + _tag$match2 = _slicedToArray(_tag$match, 3); + _tag$match2[0]; + var handle = _tag$match2[1], + suffix = _tag$match2[2]; + + return { + handle: handle, + suffix: suffix + }; + } + } + } + + return null; + } + }, { + key: "valueRangeContainsNewline", + get: function get() { + if (!this.valueRange || !this.context) return false; + var _this$valueRange2 = this.valueRange, + start = _this$valueRange2.start, + end = _this$valueRange2.end; + var src = this.context.src; + + for (var i = start; i < end; ++i) { + if (src[i] === '\n') return true; + } + + return false; + } + }, { + key: "parseComment", + value: function parseComment(start) { + var src = this.context.src; + + if (src[start] === Char.COMMENT) { + var end = Node.endOfLine(src, start + 1); + var commentRange = new Range(start, end); + this.props.push(commentRange); + return end; + } + + return start; + } + /** + * Populates the `origStart` and `origEnd` values of all ranges for this + * node. Extended by child classes to handle descendant nodes. + * + * @param {number[]} cr - Positions of dropped CR characters + * @param {number} offset - Starting index of `cr` from the last call + * @returns {number} - The next offset, matching the one found for `origStart` + */ + + }, { + key: "setOrigRanges", + value: function setOrigRanges(cr, offset) { + if (this.range) offset = this.range.setOrigRange(cr, offset); + if (this.valueRange) this.valueRange.setOrigRange(cr, offset); + this.props.forEach(function (prop) { + return prop.setOrigRange(cr, offset); + }); + return offset; + } + }, { + key: "toString", + value: function toString() { + var src = this.context.src, + range = this.range, + value = this.value; + if (value != null) return value; + var str = src.slice(range.start, range.end); + return Node.addStringTerminator(src, range.end, str); + } + }], [{ + key: "addStringTerminator", + value: function addStringTerminator(src, offset, str) { + if (str[str.length - 1] === '\n') return str; + var next = Node.endOfWhiteSpace(src, offset); + return next >= src.length || src[next] === '\n' ? str + '\n' : str; + } // ^(---|...) + + }, { + key: "atDocumentBoundary", + value: function atDocumentBoundary(src, offset, sep) { + var ch0 = src[offset]; + if (!ch0) return true; + var prev = src[offset - 1]; + if (prev && prev !== '\n') return false; + + if (sep) { + if (ch0 !== sep) return false; + } else { + if (ch0 !== Char.DIRECTIVES_END && ch0 !== Char.DOCUMENT_END) return false; + } + + var ch1 = src[offset + 1]; + var ch2 = src[offset + 2]; + if (ch1 !== ch0 || ch2 !== ch0) return false; + var ch3 = src[offset + 3]; + return !ch3 || ch3 === '\n' || ch3 === '\t' || ch3 === ' '; + } + }, { + key: "endOfIdentifier", + value: function endOfIdentifier(src, offset) { + var ch = src[offset]; + var isVerbatim = ch === '<'; + var notOk = isVerbatim ? ['\n', '\t', ' ', '>'] : ['\n', '\t', ' ', '[', ']', '{', '}', ',']; + + while (ch && notOk.indexOf(ch) === -1) { + ch = src[offset += 1]; + } + + if (isVerbatim && ch === '>') offset += 1; + return offset; + } + }, { + key: "endOfIndent", + value: function endOfIndent(src, offset) { + var ch = src[offset]; + + while (ch === ' ') { + ch = src[offset += 1]; + } + + return offset; + } + }, { + key: "endOfLine", + value: function endOfLine(src, offset) { + var ch = src[offset]; + + while (ch && ch !== '\n') { + ch = src[offset += 1]; + } + + return offset; + } + }, { + key: "endOfWhiteSpace", + value: function endOfWhiteSpace(src, offset) { + var ch = src[offset]; + + while (ch === '\t' || ch === ' ') { + ch = src[offset += 1]; + } + + return offset; + } + }, { + key: "startOfLine", + value: function startOfLine(src, offset) { + var ch = src[offset - 1]; + if (ch === '\n') return offset; + + while (ch && ch !== '\n') { + ch = src[offset -= 1]; + } + + return offset + 1; + } + /** + * End of indentation, or null if the line's indent level is not more + * than `indent` + * + * @param {string} src + * @param {number} indent + * @param {number} lineStart + * @returns {?number} + */ + + }, { + key: "endOfBlockIndent", + value: function endOfBlockIndent(src, indent, lineStart) { + var inEnd = Node.endOfIndent(src, lineStart); + + if (inEnd > lineStart + indent) { + return inEnd; + } else { + var wsEnd = Node.endOfWhiteSpace(src, inEnd); + var ch = src[wsEnd]; + if (!ch || ch === '\n') return wsEnd; + } + + return null; + } + }, { + key: "atBlank", + value: function atBlank(src, offset, endAsBlank) { + var ch = src[offset]; + return ch === '\n' || ch === '\t' || ch === ' ' || endAsBlank && !ch; + } + }, { + key: "nextNodeIsIndented", + value: function nextNodeIsIndented(ch, indentDiff, indicatorAsIndent) { + if (!ch || indentDiff < 0) return false; + if (indentDiff > 0) return true; + return indicatorAsIndent && ch === '-'; + } // should be at line or string end, or at next non-whitespace char + + }, { + key: "normalizeOffset", + value: function normalizeOffset(src, offset) { + var ch = src[offset]; + return !ch ? offset : ch !== '\n' && src[offset - 1] === '\n' ? offset - 1 : Node.endOfWhiteSpace(src, offset); + } // fold single newline into space, multiple newlines to N - 1 newlines + // presumes src[offset] === '\n' + + }, { + key: "foldNewline", + value: function foldNewline(src, offset, indent) { + var inCount = 0; + var error = false; + var fold = ''; + var ch = src[offset + 1]; + + while (ch === ' ' || ch === '\t' || ch === '\n') { + switch (ch) { + case '\n': + inCount = 0; + offset += 1; + fold += '\n'; + break; + + case '\t': + if (inCount <= indent) error = true; + offset = Node.endOfWhiteSpace(src, offset + 2) - 1; + break; + + case ' ': + inCount += 1; + offset += 1; + break; + } + + ch = src[offset + 1]; + } + + if (!fold) fold = ' '; + if (ch && inCount <= indent) error = true; + return { + fold: fold, + offset: offset, + error: error + }; + } + }]); + + return Node; +}(); + +var YAMLError = /*#__PURE__*/function (_Error) { + _inherits(YAMLError, _Error); + + var _super = _createSuper(YAMLError); + + function YAMLError(name, source, message) { + var _this; + + _classCallCheck(this, YAMLError); + + if (!message || !(source instanceof Node)) throw new Error("Invalid arguments for new ".concat(name)); + _this = _super.call(this); + _this.name = name; + _this.message = message; + _this.source = source; + return _this; + } + + _createClass(YAMLError, [{ + key: "makePretty", + value: function makePretty() { + if (!this.source) return; + this.nodeType = this.source.type; + var cst = this.source.context && this.source.context.root; + + if (typeof this.offset === 'number') { + this.range = new Range(this.offset, this.offset + 1); + var start = cst && getLinePos(this.offset, cst); + + if (start) { + var end = { + line: start.line, + col: start.col + 1 + }; + this.linePos = { + start: start, + end: end + }; + } + + delete this.offset; + } else { + this.range = this.source.range; + this.linePos = this.source.rangeAsLinePos; + } + + if (this.linePos) { + var _this$linePos$start = this.linePos.start, + line = _this$linePos$start.line, + col = _this$linePos$start.col; + this.message += " at line ".concat(line, ", column ").concat(col); + var ctx = cst && getPrettyContext(this.linePos, cst); + if (ctx) this.message += ":\n\n".concat(ctx, "\n"); + } + + delete this.source; + } + }]); + + return YAMLError; +}( /*#__PURE__*/_wrapNativeSuper(Error)); +var YAMLReferenceError = /*#__PURE__*/function (_YAMLError) { + _inherits(YAMLReferenceError, _YAMLError); + + var _super2 = _createSuper(YAMLReferenceError); + + function YAMLReferenceError(source, message) { + _classCallCheck(this, YAMLReferenceError); + + return _super2.call(this, 'YAMLReferenceError', source, message); + } + + return YAMLReferenceError; +}(YAMLError); +var YAMLSemanticError = /*#__PURE__*/function (_YAMLError2) { + _inherits(YAMLSemanticError, _YAMLError2); + + var _super3 = _createSuper(YAMLSemanticError); + + function YAMLSemanticError(source, message) { + _classCallCheck(this, YAMLSemanticError); + + return _super3.call(this, 'YAMLSemanticError', source, message); + } + + return YAMLSemanticError; +}(YAMLError); +var YAMLSyntaxError = /*#__PURE__*/function (_YAMLError3) { + _inherits(YAMLSyntaxError, _YAMLError3); + + var _super4 = _createSuper(YAMLSyntaxError); + + function YAMLSyntaxError(source, message) { + _classCallCheck(this, YAMLSyntaxError); + + return _super4.call(this, 'YAMLSyntaxError', source, message); + } + + return YAMLSyntaxError; +}(YAMLError); +var YAMLWarning = /*#__PURE__*/function (_YAMLError4) { + _inherits(YAMLWarning, _YAMLError4); + + var _super5 = _createSuper(YAMLWarning); + + function YAMLWarning(source, message) { + _classCallCheck(this, YAMLWarning); + + return _super5.call(this, 'YAMLWarning', source, message); + } + + return YAMLWarning; +}(YAMLError); + +var PlainValue = /*#__PURE__*/function (_Node) { + _inherits(PlainValue, _Node); + + var _super = _createSuper(PlainValue); + + function PlainValue() { + _classCallCheck(this, PlainValue); + + return _super.apply(this, arguments); + } + + _createClass(PlainValue, [{ + key: "strValue", + get: function get() { + if (!this.valueRange || !this.context) return null; + var _this$valueRange = this.valueRange, + start = _this$valueRange.start, + end = _this$valueRange.end; + var src = this.context.src; + var ch = src[end - 1]; + + while (start < end && (ch === '\n' || ch === '\t' || ch === ' ')) { + ch = src[--end - 1]; + } + + var str = ''; + + for (var i = start; i < end; ++i) { + var _ch = src[i]; + + if (_ch === '\n') { + var _Node$foldNewline = Node.foldNewline(src, i, -1), + fold = _Node$foldNewline.fold, + offset = _Node$foldNewline.offset; + + str += fold; + i = offset; + } else if (_ch === ' ' || _ch === '\t') { + // trim trailing whitespace + var wsStart = i; + var next = src[i + 1]; + + while (i < end && (next === ' ' || next === '\t')) { + i += 1; + next = src[i + 1]; + } + + if (next !== '\n') str += i > wsStart ? src.slice(wsStart, i + 1) : _ch; + } else { + str += _ch; + } + } + + var ch0 = src[start]; + + switch (ch0) { + case '\t': + { + var msg = 'Plain value cannot start with a tab character'; + var errors = [new YAMLSemanticError(this, msg)]; + return { + errors: errors, + str: str + }; + } + + case '@': + case '`': + { + var _msg = "Plain value cannot start with reserved character ".concat(ch0); + + var _errors = [new YAMLSemanticError(this, _msg)]; + return { + errors: _errors, + str: str + }; + } + + default: + return str; + } + } + }, { + key: "parseBlockValue", + value: function parseBlockValue(start) { + var _this$context = this.context, + indent = _this$context.indent, + inFlow = _this$context.inFlow, + src = _this$context.src; + var offset = start; + var valueEnd = start; + + for (var ch = src[offset]; ch === '\n'; ch = src[offset]) { + if (Node.atDocumentBoundary(src, offset + 1)) break; + var end = Node.endOfBlockIndent(src, indent, offset + 1); + if (end === null || src[end] === '#') break; + + if (src[end] === '\n') { + offset = end; + } else { + valueEnd = PlainValue.endOfLine(src, end, inFlow); + offset = valueEnd; + } + } + + if (this.valueRange.isEmpty()) this.valueRange.start = start; + this.valueRange.end = valueEnd; + return valueEnd; + } + /** + * Parses a plain value from the source + * + * Accepted forms are: + * ``` + * #comment + * + * first line + * + * first line #comment + * + * first line + * block + * lines + * + * #comment + * block + * lines + * ``` + * where block lines are empty or have an indent level greater than `indent`. + * + * @param {ParseContext} context + * @param {number} start - Index of first character + * @returns {number} - Index of the character after this scalar, may be `\n` + */ + + }, { + key: "parse", + value: function parse(context, start) { + this.context = context; + var inFlow = context.inFlow, + src = context.src; + var offset = start; + var ch = src[offset]; + + if (ch && ch !== '#' && ch !== '\n') { + offset = PlainValue.endOfLine(src, start, inFlow); + } + + this.valueRange = new Range(start, offset); + offset = Node.endOfWhiteSpace(src, offset); + offset = this.parseComment(offset); + + if (!this.hasComment || this.valueRange.isEmpty()) { + offset = this.parseBlockValue(offset); + } + + return offset; + } + }], [{ + key: "endOfLine", + value: function endOfLine(src, start, inFlow) { + var ch = src[start]; + var offset = start; + + while (ch && ch !== '\n') { + if (inFlow && (ch === '[' || ch === ']' || ch === '{' || ch === '}' || ch === ',')) break; + var next = src[offset + 1]; + if (ch === ':' && (!next || next === '\n' || next === '\t' || next === ' ' || inFlow && next === ',')) break; + if ((ch === ' ' || ch === '\t') && next === '#') break; + offset += 1; + ch = next; + } + + return offset; + } + }]); + + return PlainValue; +}(Node); + +export { Char as C, Node as N, PlainValue as P, Range as R, Type as T, YAMLSyntaxError as Y, _createForOfIteratorHelper as _, _typeof as a, _createClass as b, _classCallCheck as c, defaultTagPrefix as d, _defineProperty as e, YAMLWarning as f, YAMLSemanticError as g, _slicedToArray as h, YAMLError as i, _inherits as j, _createSuper as k, _get as l, _getPrototypeOf as m, defaultTags as n, YAMLReferenceError as o, _assertThisInitialized as p, _toArray as q, _possibleConstructorReturn as r }; diff --git a/yaml/browser/dist/Schema-e94716c8.js b/yaml/browser/dist/Schema-e94716c8.js new file mode 100644 index 0000000000..f18527dcff --- /dev/null +++ b/yaml/browser/dist/Schema-e94716c8.js @@ -0,0 +1,682 @@ +import { _ as _createForOfIteratorHelper, h as _slicedToArray, a as _typeof, b as _createClass, e as _defineProperty, c as _classCallCheck, d as defaultTagPrefix, n as defaultTags } from './PlainValue-b8036b75.js'; +import { d as YAMLMap, g as resolveMap, Y as YAMLSeq, h as resolveSeq, j as resolveString, c as stringifyString, s as strOptions, S as Scalar, n as nullOptions, a as boolOptions, i as intOptions, k as stringifyNumber, N as Node, A as Alias, P as Pair } from './resolveSeq-492ab440.js'; +import { b as binary, o as omap, p as pairs, s as set, i as intTime, f as floatTime, t as timestamp, a as warnOptionDeprecation } from './warnings-df54cb69.js'; + +function createMap(schema, obj, ctx) { + var map = new YAMLMap(schema); + + if (obj instanceof Map) { + var _iterator = _createForOfIteratorHelper(obj), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _step$value = _slicedToArray(_step.value, 2), + key = _step$value[0], + value = _step$value[1]; + + map.items.push(schema.createPair(key, value, ctx)); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } else if (obj && _typeof(obj) === 'object') { + for (var _i = 0, _Object$keys = Object.keys(obj); _i < _Object$keys.length; _i++) { + var _key = _Object$keys[_i]; + map.items.push(schema.createPair(_key, obj[_key], ctx)); + } + } + + if (typeof schema.sortMapEntries === 'function') { + map.items.sort(schema.sortMapEntries); + } + + return map; +} + +var map = { + createNode: createMap, + default: true, + nodeClass: YAMLMap, + tag: 'tag:yaml.org,2002:map', + resolve: resolveMap +}; + +function createSeq(schema, obj, ctx) { + var seq = new YAMLSeq(schema); + + if (obj && obj[Symbol.iterator]) { + var _iterator = _createForOfIteratorHelper(obj), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var it = _step.value; + var v = schema.createNode(it, ctx.wrapScalars, null, ctx); + seq.items.push(v); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } + + return seq; +} + +var seq = { + createNode: createSeq, + default: true, + nodeClass: YAMLSeq, + tag: 'tag:yaml.org,2002:seq', + resolve: resolveSeq +}; + +var string = { + identify: function identify(value) { + return typeof value === 'string'; + }, + default: true, + tag: 'tag:yaml.org,2002:str', + resolve: resolveString, + stringify: function stringify(item, ctx, onComment, onChompKeep) { + ctx = Object.assign({ + actualString: true + }, ctx); + return stringifyString(item, ctx, onComment, onChompKeep); + }, + options: strOptions +}; + +var failsafe = [map, seq, string]; + +/* global BigInt */ + +var intIdentify$2 = function intIdentify(value) { + return typeof value === 'bigint' || Number.isInteger(value); +}; + +var intResolve$1 = function intResolve(src, part, radix) { + return intOptions.asBigInt ? BigInt(src) : parseInt(part, radix); +}; + +function intStringify$1(node, radix, prefix) { + var value = node.value; + if (intIdentify$2(value) && value >= 0) return prefix + value.toString(radix); + return stringifyNumber(node); +} + +var nullObj = { + identify: function identify(value) { + return value == null; + }, + createNode: function createNode(schema, value, ctx) { + return ctx.wrapScalars ? new Scalar(null) : null; + }, + default: true, + tag: 'tag:yaml.org,2002:null', + test: /^(?:~|[Nn]ull|NULL)?$/, + resolve: function resolve() { + return null; + }, + options: nullOptions, + stringify: function stringify() { + return nullOptions.nullStr; + } +}; +var boolObj = { + identify: function identify(value) { + return typeof value === 'boolean'; + }, + default: true, + tag: 'tag:yaml.org,2002:bool', + test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/, + resolve: function resolve(str) { + return str[0] === 't' || str[0] === 'T'; + }, + options: boolOptions, + stringify: function stringify(_ref) { + var value = _ref.value; + return value ? boolOptions.trueStr : boolOptions.falseStr; + } +}; +var octObj = { + identify: function identify(value) { + return intIdentify$2(value) && value >= 0; + }, + default: true, + tag: 'tag:yaml.org,2002:int', + format: 'OCT', + test: /^0o([0-7]+)$/, + resolve: function resolve(str, oct) { + return intResolve$1(str, oct, 8); + }, + options: intOptions, + stringify: function stringify(node) { + return intStringify$1(node, 8, '0o'); + } +}; +var intObj = { + identify: intIdentify$2, + default: true, + tag: 'tag:yaml.org,2002:int', + test: /^[-+]?[0-9]+$/, + resolve: function resolve(str) { + return intResolve$1(str, str, 10); + }, + options: intOptions, + stringify: stringifyNumber +}; +var hexObj = { + identify: function identify(value) { + return intIdentify$2(value) && value >= 0; + }, + default: true, + tag: 'tag:yaml.org,2002:int', + format: 'HEX', + test: /^0x([0-9a-fA-F]+)$/, + resolve: function resolve(str, hex) { + return intResolve$1(str, hex, 16); + }, + options: intOptions, + stringify: function stringify(node) { + return intStringify$1(node, 16, '0x'); + } +}; +var nanObj = { + identify: function identify(value) { + return typeof value === 'number'; + }, + default: true, + tag: 'tag:yaml.org,2002:float', + test: /^(?:[-+]?\.inf|(\.nan))$/i, + resolve: function resolve(str, nan) { + return nan ? NaN : str[0] === '-' ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY; + }, + stringify: stringifyNumber +}; +var expObj = { + identify: function identify(value) { + return typeof value === 'number'; + }, + default: true, + tag: 'tag:yaml.org,2002:float', + format: 'EXP', + test: /^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/, + resolve: function resolve(str) { + return parseFloat(str); + }, + stringify: function stringify(_ref2) { + var value = _ref2.value; + return Number(value).toExponential(); + } +}; +var floatObj = { + identify: function identify(value) { + return typeof value === 'number'; + }, + default: true, + tag: 'tag:yaml.org,2002:float', + test: /^[-+]?(?:\.([0-9]+)|[0-9]+\.([0-9]*))$/, + resolve: function resolve(str, frac1, frac2) { + var frac = frac1 || frac2; + var node = new Scalar(parseFloat(str)); + if (frac && frac[frac.length - 1] === '0') node.minFractionDigits = frac.length; + return node; + }, + stringify: stringifyNumber +}; +var core = failsafe.concat([nullObj, boolObj, octObj, intObj, hexObj, nanObj, expObj, floatObj]); + +/* global BigInt */ + +var intIdentify$1 = function intIdentify(value) { + return typeof value === 'bigint' || Number.isInteger(value); +}; + +var stringifyJSON = function stringifyJSON(_ref) { + var value = _ref.value; + return JSON.stringify(value); +}; + +var json = [map, seq, { + identify: function identify(value) { + return typeof value === 'string'; + }, + default: true, + tag: 'tag:yaml.org,2002:str', + resolve: resolveString, + stringify: stringifyJSON +}, { + identify: function identify(value) { + return value == null; + }, + createNode: function createNode(schema, value, ctx) { + return ctx.wrapScalars ? new Scalar(null) : null; + }, + default: true, + tag: 'tag:yaml.org,2002:null', + test: /^null$/, + resolve: function resolve() { + return null; + }, + stringify: stringifyJSON +}, { + identify: function identify(value) { + return typeof value === 'boolean'; + }, + default: true, + tag: 'tag:yaml.org,2002:bool', + test: /^true|false$/, + resolve: function resolve(str) { + return str === 'true'; + }, + stringify: stringifyJSON +}, { + identify: intIdentify$1, + default: true, + tag: 'tag:yaml.org,2002:int', + test: /^-?(?:0|[1-9][0-9]*)$/, + resolve: function resolve(str) { + return intOptions.asBigInt ? BigInt(str) : parseInt(str, 10); + }, + stringify: function stringify(_ref2) { + var value = _ref2.value; + return intIdentify$1(value) ? value.toString() : JSON.stringify(value); + } +}, { + identify: function identify(value) { + return typeof value === 'number'; + }, + default: true, + tag: 'tag:yaml.org,2002:float', + test: /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/, + resolve: function resolve(str) { + return parseFloat(str); + }, + stringify: stringifyJSON +}]; + +json.scalarFallback = function (str) { + throw new SyntaxError("Unresolved plain scalar ".concat(JSON.stringify(str))); +}; + +/* global BigInt */ + +var boolStringify = function boolStringify(_ref) { + var value = _ref.value; + return value ? boolOptions.trueStr : boolOptions.falseStr; +}; + +var intIdentify = function intIdentify(value) { + return typeof value === 'bigint' || Number.isInteger(value); +}; + +function intResolve(sign, src, radix) { + var str = src.replace(/_/g, ''); + + if (intOptions.asBigInt) { + switch (radix) { + case 2: + str = "0b".concat(str); + break; + + case 8: + str = "0o".concat(str); + break; + + case 16: + str = "0x".concat(str); + break; + } + + var _n = BigInt(str); + + return sign === '-' ? BigInt(-1) * _n : _n; + } + + var n = parseInt(str, radix); + return sign === '-' ? -1 * n : n; +} + +function intStringify(node, radix, prefix) { + var value = node.value; + + if (intIdentify(value)) { + var str = value.toString(radix); + return value < 0 ? '-' + prefix + str.substr(1) : prefix + str; + } + + return stringifyNumber(node); +} + +var yaml11 = failsafe.concat([{ + identify: function identify(value) { + return value == null; + }, + createNode: function createNode(schema, value, ctx) { + return ctx.wrapScalars ? new Scalar(null) : null; + }, + default: true, + tag: 'tag:yaml.org,2002:null', + test: /^(?:~|[Nn]ull|NULL)?$/, + resolve: function resolve() { + return null; + }, + options: nullOptions, + stringify: function stringify() { + return nullOptions.nullStr; + } +}, { + identify: function identify(value) { + return typeof value === 'boolean'; + }, + default: true, + tag: 'tag:yaml.org,2002:bool', + test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/, + resolve: function resolve() { + return true; + }, + options: boolOptions, + stringify: boolStringify +}, { + identify: function identify(value) { + return typeof value === 'boolean'; + }, + default: true, + tag: 'tag:yaml.org,2002:bool', + test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/i, + resolve: function resolve() { + return false; + }, + options: boolOptions, + stringify: boolStringify +}, { + identify: intIdentify, + default: true, + tag: 'tag:yaml.org,2002:int', + format: 'BIN', + test: /^([-+]?)0b([0-1_]+)$/, + resolve: function resolve(str, sign, bin) { + return intResolve(sign, bin, 2); + }, + stringify: function stringify(node) { + return intStringify(node, 2, '0b'); + } +}, { + identify: intIdentify, + default: true, + tag: 'tag:yaml.org,2002:int', + format: 'OCT', + test: /^([-+]?)0([0-7_]+)$/, + resolve: function resolve(str, sign, oct) { + return intResolve(sign, oct, 8); + }, + stringify: function stringify(node) { + return intStringify(node, 8, '0'); + } +}, { + identify: intIdentify, + default: true, + tag: 'tag:yaml.org,2002:int', + test: /^([-+]?)([0-9][0-9_]*)$/, + resolve: function resolve(str, sign, abs) { + return intResolve(sign, abs, 10); + }, + stringify: stringifyNumber +}, { + identify: intIdentify, + default: true, + tag: 'tag:yaml.org,2002:int', + format: 'HEX', + test: /^([-+]?)0x([0-9a-fA-F_]+)$/, + resolve: function resolve(str, sign, hex) { + return intResolve(sign, hex, 16); + }, + stringify: function stringify(node) { + return intStringify(node, 16, '0x'); + } +}, { + identify: function identify(value) { + return typeof value === 'number'; + }, + default: true, + tag: 'tag:yaml.org,2002:float', + test: /^(?:[-+]?\.inf|(\.nan))$/i, + resolve: function resolve(str, nan) { + return nan ? NaN : str[0] === '-' ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY; + }, + stringify: stringifyNumber +}, { + identify: function identify(value) { + return typeof value === 'number'; + }, + default: true, + tag: 'tag:yaml.org,2002:float', + format: 'EXP', + test: /^[-+]?([0-9][0-9_]*)?(\.[0-9_]*)?[eE][-+]?[0-9]+$/, + resolve: function resolve(str) { + return parseFloat(str.replace(/_/g, '')); + }, + stringify: function stringify(_ref2) { + var value = _ref2.value; + return Number(value).toExponential(); + } +}, { + identify: function identify(value) { + return typeof value === 'number'; + }, + default: true, + tag: 'tag:yaml.org,2002:float', + test: /^[-+]?(?:[0-9][0-9_]*)?\.([0-9_]*)$/, + resolve: function resolve(str, frac) { + var node = new Scalar(parseFloat(str.replace(/_/g, ''))); + + if (frac) { + var f = frac.replace(/_/g, ''); + if (f[f.length - 1] === '0') node.minFractionDigits = f.length; + } + + return node; + }, + stringify: stringifyNumber +}], binary, omap, pairs, set, intTime, floatTime, timestamp); + +var schemas = { + core: core, + failsafe: failsafe, + json: json, + yaml11: yaml11 +}; +var tags = { + binary: binary, + bool: boolObj, + float: floatObj, + floatExp: expObj, + floatNaN: nanObj, + floatTime: floatTime, + int: intObj, + intHex: hexObj, + intOct: octObj, + intTime: intTime, + map: map, + null: nullObj, + omap: omap, + pairs: pairs, + seq: seq, + set: set, + timestamp: timestamp +}; + +function findTagObject(value, tagName, tags) { + if (tagName) { + var match = tags.filter(function (t) { + return t.tag === tagName; + }); + var tagObj = match.find(function (t) { + return !t.format; + }) || match[0]; + if (!tagObj) throw new Error("Tag ".concat(tagName, " not found")); + return tagObj; + } // TODO: deprecate/remove class check + + + return tags.find(function (t) { + return (t.identify && t.identify(value) || t.class && value instanceof t.class) && !t.format; + }); +} + +function createNode(value, tagName, ctx) { + if (value instanceof Node) return value; + var defaultPrefix = ctx.defaultPrefix, + onTagObj = ctx.onTagObj, + prevObjects = ctx.prevObjects, + schema = ctx.schema, + wrapScalars = ctx.wrapScalars; + if (tagName && tagName.startsWith('!!')) tagName = defaultPrefix + tagName.slice(2); + var tagObj = findTagObject(value, tagName, schema.tags); + + if (!tagObj) { + if (typeof value.toJSON === 'function') value = value.toJSON(); + if (!value || _typeof(value) !== 'object') return wrapScalars ? new Scalar(value) : value; + tagObj = value instanceof Map ? map : value[Symbol.iterator] ? seq : map; + } + + if (onTagObj) { + onTagObj(tagObj); + delete ctx.onTagObj; + } // Detect duplicate references to the same object & use Alias nodes for all + // after first. The `obj` wrapper allows for circular references to resolve. + + + var obj = { + value: undefined, + node: undefined + }; + + if (value && _typeof(value) === 'object' && prevObjects) { + var prev = prevObjects.get(value); + + if (prev) { + var alias = new Alias(prev); // leaves source dirty; must be cleaned by caller + + ctx.aliasNodes.push(alias); // defined along with prevObjects + + return alias; + } + + obj.value = value; + prevObjects.set(value, obj); + } + + obj.node = tagObj.createNode ? tagObj.createNode(ctx.schema, value, ctx) : wrapScalars ? new Scalar(value) : value; + if (tagName && obj.node instanceof Node) obj.node.tag = tagName; + return obj.node; +} + +function getSchemaTags(schemas, knownTags, customTags, schemaId) { + var tags = schemas[schemaId.replace(/\W/g, '')]; // 'yaml-1.1' -> 'yaml11' + + if (!tags) { + var keys = Object.keys(schemas).map(function (key) { + return JSON.stringify(key); + }).join(', '); + throw new Error("Unknown schema \"".concat(schemaId, "\"; use one of ").concat(keys)); + } + + if (Array.isArray(customTags)) { + var _iterator = _createForOfIteratorHelper(customTags), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var tag = _step.value; + tags = tags.concat(tag); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } else if (typeof customTags === 'function') { + tags = customTags(tags.slice()); + } + + for (var i = 0; i < tags.length; ++i) { + var _tag = tags[i]; + + if (typeof _tag === 'string') { + var tagObj = knownTags[_tag]; + + if (!tagObj) { + var _keys = Object.keys(knownTags).map(function (key) { + return JSON.stringify(key); + }).join(', '); + + throw new Error("Unknown custom tag \"".concat(_tag, "\"; use one of ").concat(_keys)); + } + + tags[i] = tagObj; + } + } + + return tags; +} + +var sortMapEntriesByKey = function sortMapEntriesByKey(a, b) { + return a.key < b.key ? -1 : a.key > b.key ? 1 : 0; +}; + +var Schema = /*#__PURE__*/function () { + // TODO: remove in v2 + // TODO: remove in v2 + function Schema(_ref) { + var customTags = _ref.customTags, + merge = _ref.merge, + schema = _ref.schema, + sortMapEntries = _ref.sortMapEntries, + deprecatedCustomTags = _ref.tags; + + _classCallCheck(this, Schema); + + this.merge = !!merge; + this.name = schema; + this.sortMapEntries = sortMapEntries === true ? sortMapEntriesByKey : sortMapEntries || null; + if (!customTags && deprecatedCustomTags) warnOptionDeprecation('tags', 'customTags'); + this.tags = getSchemaTags(schemas, tags, customTags || deprecatedCustomTags, schema); + } + + _createClass(Schema, [{ + key: "createNode", + value: function createNode$1(value, wrapScalars, tagName, ctx) { + var baseCtx = { + defaultPrefix: Schema.defaultPrefix, + schema: this, + wrapScalars: wrapScalars + }; + var createCtx = ctx ? Object.assign(ctx, baseCtx) : baseCtx; + return createNode(value, tagName, createCtx); + } + }, { + key: "createPair", + value: function createPair(key, value, ctx) { + if (!ctx) ctx = { + wrapScalars: true + }; + var k = this.createNode(key, ctx.wrapScalars, null, ctx); + var v = this.createNode(value, ctx.wrapScalars, null, ctx); + return new Pair(k, v); + } + }]); + + return Schema; +}(); + +_defineProperty(Schema, "defaultPrefix", defaultTagPrefix); + +_defineProperty(Schema, "defaultTags", defaultTags); + +export { Schema as S }; diff --git a/yaml/browser/dist/index.js b/yaml/browser/dist/index.js new file mode 100644 index 0000000000..e67898bcab --- /dev/null +++ b/yaml/browser/dist/index.js @@ -0,0 +1,1002 @@ +import { d as defaultTagPrefix, _ as _createForOfIteratorHelper, a as _typeof, b as _createClass, c as _classCallCheck, e as _defineProperty, Y as YAMLSyntaxError, T as Type, f as YAMLWarning, g as YAMLSemanticError, h as _slicedToArray, i as YAMLError, j as _inherits, k as _createSuper } from './PlainValue-b8036b75.js'; +import { parse as parse$1 } from './parse-cst.js'; +import { b as binaryOptions, a as boolOptions, i as intOptions, n as nullOptions, s as strOptions, N as Node, P as Pair, S as Scalar, c as stringifyString, A as Alias, Y as YAMLSeq, d as YAMLMap, M as Merge, C as Collection, r as resolveNode, e as isEmptyPath, t as toJSON, f as addComment } from './resolveSeq-492ab440.js'; +import { S as Schema } from './Schema-e94716c8.js'; +import { w as warn } from './warnings-df54cb69.js'; + +var defaultOptions = { + anchorPrefix: 'a', + customTags: null, + indent: 2, + indentSeq: true, + keepCstNodes: false, + keepNodeTypes: true, + keepBlobsInJSON: true, + mapAsMap: false, + maxAliasCount: 100, + prettyErrors: false, + // TODO Set true in v2 + simpleKeys: false, + version: '1.2' +}; +var scalarOptions = { + get binary() { + return binaryOptions; + }, + + set binary(opt) { + Object.assign(binaryOptions, opt); + }, + + get bool() { + return boolOptions; + }, + + set bool(opt) { + Object.assign(boolOptions, opt); + }, + + get int() { + return intOptions; + }, + + set int(opt) { + Object.assign(intOptions, opt); + }, + + get null() { + return nullOptions; + }, + + set null(opt) { + Object.assign(nullOptions, opt); + }, + + get str() { + return strOptions; + }, + + set str(opt) { + Object.assign(strOptions, opt); + } + +}; +var documentOptions = { + '1.0': { + schema: 'yaml-1.1', + merge: true, + tagPrefixes: [{ + handle: '!', + prefix: defaultTagPrefix + }, { + handle: '!!', + prefix: 'tag:private.yaml.org,2002:' + }] + }, + 1.1: { + schema: 'yaml-1.1', + merge: true, + tagPrefixes: [{ + handle: '!', + prefix: '!' + }, { + handle: '!!', + prefix: defaultTagPrefix + }] + }, + 1.2: { + schema: 'core', + merge: false, + tagPrefixes: [{ + handle: '!', + prefix: '!' + }, { + handle: '!!', + prefix: defaultTagPrefix + }] + } +}; + +function stringifyTag(doc, tag) { + if ((doc.version || doc.options.version) === '1.0') { + var priv = tag.match(/^tag:private\.yaml\.org,2002:([^:/]+)$/); + if (priv) return '!' + priv[1]; + var vocab = tag.match(/^tag:([a-zA-Z0-9-]+)\.yaml\.org,2002:(.*)/); + return vocab ? "!".concat(vocab[1], "/").concat(vocab[2]) : "!".concat(tag.replace(/^tag:/, '')); + } + + var p = doc.tagPrefixes.find(function (p) { + return tag.indexOf(p.prefix) === 0; + }); + + if (!p) { + var dtp = doc.getDefaults().tagPrefixes; + p = dtp && dtp.find(function (p) { + return tag.indexOf(p.prefix) === 0; + }); + } + + if (!p) return tag[0] === '!' ? tag : "!<".concat(tag, ">"); + var suffix = tag.substr(p.prefix.length).replace(/[!,[\]{}]/g, function (ch) { + return { + '!': '%21', + ',': '%2C', + '[': '%5B', + ']': '%5D', + '{': '%7B', + '}': '%7D' + }[ch]; + }); + return p.handle + suffix; +} + +function getTagObject(tags, item) { + if (item instanceof Alias) return Alias; + + if (item.tag) { + var match = tags.filter(function (t) { + return t.tag === item.tag; + }); + if (match.length > 0) return match.find(function (t) { + return t.format === item.format; + }) || match[0]; + } + + var tagObj, obj; + + if (item instanceof Scalar) { + obj = item.value; // TODO: deprecate/remove class check + + var _match = tags.filter(function (t) { + return t.identify && t.identify(obj) || t.class && obj instanceof t.class; + }); + + tagObj = _match.find(function (t) { + return t.format === item.format; + }) || _match.find(function (t) { + return !t.format; + }); + } else { + obj = item; + tagObj = tags.find(function (t) { + return t.nodeClass && obj instanceof t.nodeClass; + }); + } + + if (!tagObj) { + var name = obj && obj.constructor ? obj.constructor.name : _typeof(obj); + throw new Error("Tag not resolved for ".concat(name, " value")); + } + + return tagObj; +} // needs to be called before value stringifier to allow for circular anchor refs + + +function stringifyProps(node, tagObj, _ref) { + var anchors = _ref.anchors, + doc = _ref.doc; + var props = []; + var anchor = doc.anchors.getName(node); + + if (anchor) { + anchors[anchor] = node; + props.push("&".concat(anchor)); + } + + if (node.tag) { + props.push(stringifyTag(doc, node.tag)); + } else if (!tagObj.default) { + props.push(stringifyTag(doc, tagObj.tag)); + } + + return props.join(' '); +} + +function stringify$1(item, ctx, onComment, onChompKeep) { + var _ctx$doc = ctx.doc, + anchors = _ctx$doc.anchors, + schema = _ctx$doc.schema; + var tagObj; + + if (!(item instanceof Node)) { + var createCtx = { + aliasNodes: [], + onTagObj: function onTagObj(o) { + return tagObj = o; + }, + prevObjects: new Map() + }; + item = schema.createNode(item, true, null, createCtx); + + var _iterator = _createForOfIteratorHelper(createCtx.aliasNodes), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var alias = _step.value; + alias.source = alias.source.node; + var name = anchors.getName(alias.source); + + if (!name) { + name = anchors.newName(); + anchors.map[name] = alias.source; + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } + + if (item instanceof Pair) return item.toString(ctx, onComment, onChompKeep); + if (!tagObj) tagObj = getTagObject(schema.tags, item); + var props = stringifyProps(item, tagObj, ctx); + if (props.length > 0) ctx.indentAtStart = (ctx.indentAtStart || 0) + props.length + 1; + var str = typeof tagObj.stringify === 'function' ? tagObj.stringify(item, ctx, onComment, onChompKeep) : item instanceof Scalar ? stringifyString(item, ctx, onComment, onChompKeep) : item.toString(ctx, onComment, onChompKeep); + if (!props) return str; + return item instanceof Scalar || str[0] === '{' || str[0] === '[' ? "".concat(props, " ").concat(str) : "".concat(props, "\n").concat(ctx.indent).concat(str); +} + +var Anchors = /*#__PURE__*/function () { + function Anchors(prefix) { + _classCallCheck(this, Anchors); + + _defineProperty(this, "map", Object.create(null)); + + this.prefix = prefix; + } + + _createClass(Anchors, [{ + key: "createAlias", + value: function createAlias(node, name) { + this.setAnchor(node, name); + return new Alias(node); + } + }, { + key: "createMergePair", + value: function createMergePair() { + var _this = this; + + var merge = new Merge(); + + for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) { + sources[_key] = arguments[_key]; + } + + merge.value.items = sources.map(function (s) { + if (s instanceof Alias) { + if (s.source instanceof YAMLMap) return s; + } else if (s instanceof YAMLMap) { + return _this.createAlias(s); + } + + throw new Error('Merge sources must be Map nodes or their Aliases'); + }); + return merge; + } + }, { + key: "getName", + value: function getName(node) { + var map = this.map; + return Object.keys(map).find(function (a) { + return map[a] === node; + }); + } + }, { + key: "getNames", + value: function getNames() { + return Object.keys(this.map); + } + }, { + key: "getNode", + value: function getNode(name) { + return this.map[name]; + } + }, { + key: "newName", + value: function newName(prefix) { + if (!prefix) prefix = this.prefix; + var names = Object.keys(this.map); + + for (var i = 1; true; ++i) { + var name = "".concat(prefix).concat(i); + if (!names.includes(name)) return name; + } + } // During parsing, map & aliases contain CST nodes + + }, { + key: "resolveNodes", + value: function resolveNodes() { + var map = this.map, + _cstAliases = this._cstAliases; + Object.keys(map).forEach(function (a) { + map[a] = map[a].resolved; + }); + + _cstAliases.forEach(function (a) { + a.source = a.source.resolved; + }); + + delete this._cstAliases; + } + }, { + key: "setAnchor", + value: function setAnchor(node, name) { + if (node != null && !Anchors.validAnchorNode(node)) { + throw new Error('Anchors may only be set for Scalar, Seq and Map nodes'); + } + + if (name && /[\x00-\x19\s,[\]{}]/.test(name)) { + throw new Error('Anchor names must not contain whitespace or control characters'); + } + + var map = this.map; + var prev = node && Object.keys(map).find(function (a) { + return map[a] === node; + }); + + if (prev) { + if (!name) { + return prev; + } else if (prev !== name) { + delete map[prev]; + map[name] = node; + } + } else { + if (!name) { + if (!node) return null; + name = this.newName(); + } + + map[name] = node; + } + + return name; + } + }], [{ + key: "validAnchorNode", + value: function validAnchorNode(node) { + return node instanceof Scalar || node instanceof YAMLSeq || node instanceof YAMLMap; + } + }]); + + return Anchors; +}(); + +var visit = function visit(node, tags) { + if (node && _typeof(node) === 'object') { + var tag = node.tag; + + if (node instanceof Collection) { + if (tag) tags[tag] = true; + node.items.forEach(function (n) { + return visit(n, tags); + }); + } else if (node instanceof Pair) { + visit(node.key, tags); + visit(node.value, tags); + } else if (node instanceof Scalar) { + if (tag) tags[tag] = true; + } + } + + return tags; +}; + +var listTagNames = function listTagNames(node) { + return Object.keys(visit(node, {})); +}; + +function parseContents(doc, contents) { + var comments = { + before: [], + after: [] + }; + var body = undefined; + var spaceBefore = false; + + var _iterator = _createForOfIteratorHelper(contents), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var node = _step.value; + + if (node.valueRange) { + if (body !== undefined) { + var msg = 'Document contains trailing content not separated by a ... or --- line'; + doc.errors.push(new YAMLSyntaxError(node, msg)); + break; + } + + var res = resolveNode(doc, node); + + if (spaceBefore) { + res.spaceBefore = true; + spaceBefore = false; + } + + body = res; + } else if (node.comment !== null) { + var cc = body === undefined ? comments.before : comments.after; + cc.push(node.comment); + } else if (node.type === Type.BLANK_LINE) { + spaceBefore = true; + + if (body === undefined && comments.before.length > 0 && !doc.commentBefore) { + // space-separated comments at start are parsed as document comments + doc.commentBefore = comments.before.join('\n'); + comments.before = []; + } + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + doc.contents = body || null; + + if (!body) { + doc.comment = comments.before.concat(comments.after).join('\n') || null; + } else { + var cb = comments.before.join('\n'); + + if (cb) { + var cbNode = body instanceof Collection && body.items[0] ? body.items[0] : body; + cbNode.commentBefore = cbNode.commentBefore ? "".concat(cb, "\n").concat(cbNode.commentBefore) : cb; + } + + doc.comment = comments.after.join('\n') || null; + } +} + +function resolveTagDirective(_ref, directive) { + var tagPrefixes = _ref.tagPrefixes; + + var _directive$parameters = _slicedToArray(directive.parameters, 2), + handle = _directive$parameters[0], + prefix = _directive$parameters[1]; + + if (!handle || !prefix) { + var msg = 'Insufficient parameters given for %TAG directive'; + throw new YAMLSemanticError(directive, msg); + } + + if (tagPrefixes.some(function (p) { + return p.handle === handle; + })) { + var _msg = 'The %TAG directive must only be given at most once per handle in the same document.'; + throw new YAMLSemanticError(directive, _msg); + } + + return { + handle: handle, + prefix: prefix + }; +} + +function resolveYamlDirective(doc, directive) { + var _directive$parameters2 = _slicedToArray(directive.parameters, 1), + version = _directive$parameters2[0]; + + if (directive.name === 'YAML:1.0') version = '1.0'; + + if (!version) { + var msg = 'Insufficient parameters given for %YAML directive'; + throw new YAMLSemanticError(directive, msg); + } + + if (!documentOptions[version]) { + var v0 = doc.version || doc.options.version; + + var _msg2 = "Document will be parsed as YAML ".concat(v0, " rather than YAML ").concat(version); + + doc.warnings.push(new YAMLWarning(directive, _msg2)); + } + + return version; +} + +function parseDirectives(doc, directives, prevDoc) { + var directiveComments = []; + var hasDirectives = false; + + var _iterator = _createForOfIteratorHelper(directives), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var directive = _step.value; + var comment = directive.comment, + name = directive.name; + + switch (name) { + case 'TAG': + try { + doc.tagPrefixes.push(resolveTagDirective(doc, directive)); + } catch (error) { + doc.errors.push(error); + } + + hasDirectives = true; + break; + + case 'YAML': + case 'YAML:1.0': + if (doc.version) { + var msg = 'The %YAML directive must only be given at most once per document.'; + doc.errors.push(new YAMLSemanticError(directive, msg)); + } + + try { + doc.version = resolveYamlDirective(doc, directive); + } catch (error) { + doc.errors.push(error); + } + + hasDirectives = true; + break; + + default: + if (name) { + var _msg3 = "YAML only supports %TAG and %YAML directives, and not %".concat(name); + + doc.warnings.push(new YAMLWarning(directive, _msg3)); + } + + } + + if (comment) directiveComments.push(comment); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + if (prevDoc && !hasDirectives && '1.1' === (doc.version || prevDoc.version || doc.options.version)) { + var copyTagPrefix = function copyTagPrefix(_ref2) { + var handle = _ref2.handle, + prefix = _ref2.prefix; + return { + handle: handle, + prefix: prefix + }; + }; + + doc.tagPrefixes = prevDoc.tagPrefixes.map(copyTagPrefix); + doc.version = prevDoc.version; + } + + doc.commentBefore = directiveComments.join('\n') || null; +} + +function assertCollection(contents) { + if (contents instanceof Collection) return true; + throw new Error('Expected a YAML collection as document contents'); +} + +var Document$1 = /*#__PURE__*/function () { + function Document(options) { + _classCallCheck(this, Document); + + this.anchors = new Anchors(options.anchorPrefix); + this.commentBefore = null; + this.comment = null; + this.contents = null; + this.directivesEndMarker = null; + this.errors = []; + this.options = options; + this.schema = null; + this.tagPrefixes = []; + this.version = null; + this.warnings = []; + } + + _createClass(Document, [{ + key: "add", + value: function add(value) { + assertCollection(this.contents); + return this.contents.add(value); + } + }, { + key: "addIn", + value: function addIn(path, value) { + assertCollection(this.contents); + this.contents.addIn(path, value); + } + }, { + key: "delete", + value: function _delete(key) { + assertCollection(this.contents); + return this.contents.delete(key); + } + }, { + key: "deleteIn", + value: function deleteIn(path) { + if (isEmptyPath(path)) { + if (this.contents == null) return false; + this.contents = null; + return true; + } + + assertCollection(this.contents); + return this.contents.deleteIn(path); + } + }, { + key: "getDefaults", + value: function getDefaults() { + return Document.defaults[this.version] || Document.defaults[this.options.version] || {}; + } + }, { + key: "get", + value: function get(key, keepScalar) { + return this.contents instanceof Collection ? this.contents.get(key, keepScalar) : undefined; + } + }, { + key: "getIn", + value: function getIn(path, keepScalar) { + if (isEmptyPath(path)) return !keepScalar && this.contents instanceof Scalar ? this.contents.value : this.contents; + return this.contents instanceof Collection ? this.contents.getIn(path, keepScalar) : undefined; + } + }, { + key: "has", + value: function has(key) { + return this.contents instanceof Collection ? this.contents.has(key) : false; + } + }, { + key: "hasIn", + value: function hasIn(path) { + if (isEmptyPath(path)) return this.contents !== undefined; + return this.contents instanceof Collection ? this.contents.hasIn(path) : false; + } + }, { + key: "set", + value: function set(key, value) { + assertCollection(this.contents); + this.contents.set(key, value); + } + }, { + key: "setIn", + value: function setIn(path, value) { + if (isEmptyPath(path)) this.contents = value;else { + assertCollection(this.contents); + this.contents.setIn(path, value); + } + } + }, { + key: "setSchema", + value: function setSchema(id, customTags) { + if (!id && !customTags && this.schema) return; + if (typeof id === 'number') id = id.toFixed(1); + + if (id === '1.0' || id === '1.1' || id === '1.2') { + if (this.version) this.version = id;else this.options.version = id; + delete this.options.schema; + } else if (id && typeof id === 'string') { + this.options.schema = id; + } + + if (Array.isArray(customTags)) this.options.customTags = customTags; + var opt = Object.assign({}, this.getDefaults(), this.options); + this.schema = new Schema(opt); + } + }, { + key: "parse", + value: function parse(node, prevDoc) { + if (this.options.keepCstNodes) this.cstNode = node; + if (this.options.keepNodeTypes) this.type = 'DOCUMENT'; + var _node$directives = node.directives, + directives = _node$directives === void 0 ? [] : _node$directives, + _node$contents = node.contents, + contents = _node$contents === void 0 ? [] : _node$contents, + directivesEndMarker = node.directivesEndMarker, + error = node.error, + valueRange = node.valueRange; + + if (error) { + if (!error.source) error.source = this; + this.errors.push(error); + } + + parseDirectives(this, directives, prevDoc); + if (directivesEndMarker) this.directivesEndMarker = true; + this.range = valueRange ? [valueRange.start, valueRange.end] : null; + this.setSchema(); + this.anchors._cstAliases = []; + parseContents(this, contents); + this.anchors.resolveNodes(); + + if (this.options.prettyErrors) { + var _iterator = _createForOfIteratorHelper(this.errors), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _error = _step.value; + if (_error instanceof YAMLError) _error.makePretty(); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + var _iterator2 = _createForOfIteratorHelper(this.warnings), + _step2; + + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var warn = _step2.value; + if (warn instanceof YAMLError) warn.makePretty(); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + } + + return this; + } + }, { + key: "listNonDefaultTags", + value: function listNonDefaultTags() { + return listTagNames(this.contents).filter(function (t) { + return t.indexOf(Schema.defaultPrefix) !== 0; + }); + } + }, { + key: "setTagPrefix", + value: function setTagPrefix(handle, prefix) { + if (handle[0] !== '!' || handle[handle.length - 1] !== '!') throw new Error('Handle must start and end with !'); + + if (prefix) { + var prev = this.tagPrefixes.find(function (p) { + return p.handle === handle; + }); + if (prev) prev.prefix = prefix;else this.tagPrefixes.push({ + handle: handle, + prefix: prefix + }); + } else { + this.tagPrefixes = this.tagPrefixes.filter(function (p) { + return p.handle !== handle; + }); + } + } + }, { + key: "toJSON", + value: function toJSON$1(arg, onAnchor) { + var _this = this; + + var _this$options = this.options, + keepBlobsInJSON = _this$options.keepBlobsInJSON, + mapAsMap = _this$options.mapAsMap, + maxAliasCount = _this$options.maxAliasCount; + var keep = keepBlobsInJSON && (typeof arg !== 'string' || !(this.contents instanceof Scalar)); + var ctx = { + doc: this, + indentStep: ' ', + keep: keep, + mapAsMap: keep && !!mapAsMap, + maxAliasCount: maxAliasCount, + stringify: stringify$1 // Requiring directly in Pair would create circular dependencies + + }; + var anchorNames = Object.keys(this.anchors.map); + if (anchorNames.length > 0) ctx.anchors = new Map(anchorNames.map(function (name) { + return [_this.anchors.map[name], { + alias: [], + aliasCount: 0, + count: 1 + }]; + })); + + var res = toJSON(this.contents, arg, ctx); + + if (typeof onAnchor === 'function' && ctx.anchors) { + var _iterator3 = _createForOfIteratorHelper(ctx.anchors.values()), + _step3; + + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var _step3$value = _step3.value, + count = _step3$value.count, + _res = _step3$value.res; + onAnchor(_res, count); + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + } + + return res; + } + }, { + key: "toString", + value: function toString() { + if (this.errors.length > 0) throw new Error('Document with errors cannot be stringified'); + var indentSize = this.options.indent; + + if (!Number.isInteger(indentSize) || indentSize <= 0) { + var s = JSON.stringify(indentSize); + throw new Error("\"indent\" option must be a positive integer, not ".concat(s)); + } + + this.setSchema(); + var lines = []; + var hasDirectives = false; + + if (this.version) { + var vd = '%YAML 1.2'; + + if (this.schema.name === 'yaml-1.1') { + if (this.version === '1.0') vd = '%YAML:1.0';else if (this.version === '1.1') vd = '%YAML 1.1'; + } + + lines.push(vd); + hasDirectives = true; + } + + var tagNames = this.listNonDefaultTags(); + this.tagPrefixes.forEach(function (_ref) { + var handle = _ref.handle, + prefix = _ref.prefix; + + if (tagNames.some(function (t) { + return t.indexOf(prefix) === 0; + })) { + lines.push("%TAG ".concat(handle, " ").concat(prefix)); + hasDirectives = true; + } + }); + if (hasDirectives || this.directivesEndMarker) lines.push('---'); + + if (this.commentBefore) { + if (hasDirectives || !this.directivesEndMarker) lines.unshift(''); + lines.unshift(this.commentBefore.replace(/^/gm, '#')); + } + + var ctx = { + anchors: Object.create(null), + doc: this, + indent: '', + indentStep: ' '.repeat(indentSize), + stringify: stringify$1 // Requiring directly in nodes would create circular dependencies + + }; + var chompKeep = false; + var contentComment = null; + + if (this.contents) { + if (this.contents instanceof Node) { + if (this.contents.spaceBefore && (hasDirectives || this.directivesEndMarker)) lines.push(''); + if (this.contents.commentBefore) lines.push(this.contents.commentBefore.replace(/^/gm, '#')); // top-level block scalars need to be indented if followed by a comment + + ctx.forceBlockIndent = !!this.comment; + contentComment = this.contents.comment; + } + + var onChompKeep = contentComment ? null : function () { + return chompKeep = true; + }; + var body = stringify$1(this.contents, ctx, function () { + return contentComment = null; + }, onChompKeep); + lines.push(addComment(body, '', contentComment)); + } else if (this.contents !== undefined) { + lines.push(stringify$1(this.contents, ctx)); + } + + if (this.comment) { + if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '') lines.push(''); + lines.push(this.comment.replace(/^/gm, '#')); + } + + return lines.join('\n') + '\n'; + } + }]); + + return Document; +}(); + +_defineProperty(Document$1, "defaults", documentOptions); + +function createNode(value) { + var wrapScalars = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var tag = arguments.length > 2 ? arguments[2] : undefined; + + if (tag === undefined && typeof wrapScalars === 'string') { + tag = wrapScalars; + wrapScalars = true; + } + + var options = Object.assign({}, Document$1.defaults[defaultOptions.version], defaultOptions); + var schema = new Schema(options); + return schema.createNode(value, wrapScalars, tag); +} + +var Document = /*#__PURE__*/function (_YAMLDocument) { + _inherits(Document, _YAMLDocument); + + var _super = _createSuper(Document); + + function Document(options) { + _classCallCheck(this, Document); + + return _super.call(this, Object.assign({}, defaultOptions, options)); + } + + return Document; +}(Document$1); + +function parseAllDocuments(src, options) { + var stream = []; + var prev; + + var _iterator = _createForOfIteratorHelper(parse$1(src)), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var cstDoc = _step.value; + var doc = new Document(options); + doc.parse(cstDoc, prev); + stream.push(doc); + prev = doc; + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return stream; +} + +function parseDocument(src, options) { + var cst = parse$1(src); + var doc = new Document(options).parse(cst[0]); + + if (cst.length > 1) { + var errMsg = 'Source contains multiple documents; please use YAML.parseAllDocuments()'; + doc.errors.unshift(new YAMLSemanticError(cst[1], errMsg)); + } + + return doc; +} + +function parse(src, options) { + var doc = parseDocument(src, options); + doc.warnings.forEach(function (warning) { + return warn(warning); + }); + if (doc.errors.length > 0) throw doc.errors[0]; + return doc.toJSON(); +} + +function stringify(value, options) { + var doc = new Document(options); + doc.contents = value; + return String(doc); +} + +var YAML = { + createNode: createNode, + defaultOptions: defaultOptions, + Document: Document, + parse: parse, + parseAllDocuments: parseAllDocuments, + parseCST: parse$1, + parseDocument: parseDocument, + scalarOptions: scalarOptions, + stringify: stringify +}; + +export { YAML }; diff --git a/yaml/browser/dist/legacy-exports.js b/yaml/browser/dist/legacy-exports.js new file mode 100644 index 0000000000..4400ed6521 --- /dev/null +++ b/yaml/browser/dist/legacy-exports.js @@ -0,0 +1,3 @@ +export { b as binary, f as floatTime, i as intTime, o as omap, p as pairs, s as set, t as timestamp, c as warnFileDeprecation } from './warnings-df54cb69.js'; +import './PlainValue-b8036b75.js'; +import './resolveSeq-492ab440.js'; diff --git a/yaml/browser/dist/package.json b/yaml/browser/dist/package.json new file mode 100644 index 0000000000..5ffd9800b9 --- /dev/null +++ b/yaml/browser/dist/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/yaml/browser/dist/parse-cst.js b/yaml/browser/dist/parse-cst.js new file mode 100644 index 0000000000..b68cf3c6be --- /dev/null +++ b/yaml/browser/dist/parse-cst.js @@ -0,0 +1,1904 @@ +import { j as _inherits, k as _createSuper, c as _classCallCheck, T as Type, b as _createClass, R as Range, N as Node, g as YAMLSemanticError, l as _get, m as _getPrototypeOf, Y as YAMLSyntaxError, C as Char, e as _defineProperty, P as PlainValue } from './PlainValue-b8036b75.js'; + +var BlankLine = /*#__PURE__*/function (_Node) { + _inherits(BlankLine, _Node); + + var _super = _createSuper(BlankLine); + + function BlankLine() { + _classCallCheck(this, BlankLine); + + return _super.call(this, Type.BLANK_LINE); + } + /* istanbul ignore next */ + + + _createClass(BlankLine, [{ + key: "includesTrailingLines", + get: function get() { + // This is never called from anywhere, but if it were, + // this is the value it should return. + return true; + } + /** + * Parses a blank line from the source + * + * @param {ParseContext} context + * @param {number} start - Index of first \n character + * @returns {number} - Index of the character after this + */ + + }, { + key: "parse", + value: function parse(context, start) { + this.context = context; + this.range = new Range(start, start + 1); + return start + 1; + } + }]); + + return BlankLine; +}(Node); + +var CollectionItem = /*#__PURE__*/function (_Node) { + _inherits(CollectionItem, _Node); + + var _super = _createSuper(CollectionItem); + + function CollectionItem(type, props) { + var _this; + + _classCallCheck(this, CollectionItem); + + _this = _super.call(this, type, props); + _this.node = null; + return _this; + } + + _createClass(CollectionItem, [{ + key: "includesTrailingLines", + get: function get() { + return !!this.node && this.node.includesTrailingLines; + } + /** + * @param {ParseContext} context + * @param {number} start - Index of first character + * @returns {number} - Index of the character after this + */ + + }, { + key: "parse", + value: function parse(context, start) { + this.context = context; + var parseNode = context.parseNode, + src = context.src; + var atLineStart = context.atLineStart, + lineStart = context.lineStart; + if (!atLineStart && this.type === Type.SEQ_ITEM) this.error = new YAMLSemanticError(this, 'Sequence items must not have preceding content on the same line'); + var indent = atLineStart ? start - lineStart : context.indent; + var offset = Node.endOfWhiteSpace(src, start + 1); + var ch = src[offset]; + var inlineComment = ch === '#'; + var comments = []; + var blankLine = null; + + while (ch === '\n' || ch === '#') { + if (ch === '#') { + var _end = Node.endOfLine(src, offset + 1); + + comments.push(new Range(offset, _end)); + offset = _end; + } else { + atLineStart = true; + lineStart = offset + 1; + var wsEnd = Node.endOfWhiteSpace(src, lineStart); + + if (src[wsEnd] === '\n' && comments.length === 0) { + blankLine = new BlankLine(); + lineStart = blankLine.parse({ + src: src + }, lineStart); + } + + offset = Node.endOfIndent(src, lineStart); + } + + ch = src[offset]; + } + + if (Node.nextNodeIsIndented(ch, offset - (lineStart + indent), this.type !== Type.SEQ_ITEM)) { + this.node = parseNode({ + atLineStart: atLineStart, + inCollection: false, + indent: indent, + lineStart: lineStart, + parent: this + }, offset); + } else if (ch && lineStart > start + 1) { + offset = lineStart - 1; + } + + if (this.node) { + if (blankLine) { + // Only blank lines preceding non-empty nodes are captured. Note that + // this means that collection item range start indices do not always + // increase monotonically. -- eemeli/yaml#126 + var items = context.parent.items || context.parent.contents; + if (items) items.push(blankLine); + } + + if (comments.length) Array.prototype.push.apply(this.props, comments); + offset = this.node.range.end; + } else { + if (inlineComment) { + var c = comments[0]; + this.props.push(c); + offset = c.end; + } else { + offset = Node.endOfLine(src, start + 1); + } + } + + var end = this.node ? this.node.valueRange.end : offset; + this.valueRange = new Range(start, end); + return offset; + } + }, { + key: "setOrigRanges", + value: function setOrigRanges(cr, offset) { + offset = _get(_getPrototypeOf(CollectionItem.prototype), "setOrigRanges", this).call(this, cr, offset); + return this.node ? this.node.setOrigRanges(cr, offset) : offset; + } + }, { + key: "toString", + value: function toString() { + var src = this.context.src, + node = this.node, + range = this.range, + value = this.value; + if (value != null) return value; + var str = node ? src.slice(range.start, node.range.start) + String(node) : src.slice(range.start, range.end); + return Node.addStringTerminator(src, range.end, str); + } + }]); + + return CollectionItem; +}(Node); + +var Comment = /*#__PURE__*/function (_Node) { + _inherits(Comment, _Node); + + var _super = _createSuper(Comment); + + function Comment() { + _classCallCheck(this, Comment); + + return _super.call(this, Type.COMMENT); + } + /** + * Parses a comment line from the source + * + * @param {ParseContext} context + * @param {number} start - Index of first character + * @returns {number} - Index of the character after this scalar + */ + + + _createClass(Comment, [{ + key: "parse", + value: function parse(context, start) { + this.context = context; + var offset = this.parseComment(start); + this.range = new Range(start, offset); + return offset; + } + }]); + + return Comment; +}(Node); + +function grabCollectionEndComments(node) { + var cnode = node; + + while (cnode instanceof CollectionItem) { + cnode = cnode.node; + } + + if (!(cnode instanceof Collection)) return null; + var len = cnode.items.length; + var ci = -1; + + for (var i = len - 1; i >= 0; --i) { + var n = cnode.items[i]; + + if (n.type === Type.COMMENT) { + // Keep sufficiently indented comments with preceding node + var _n$context = n.context, + indent = _n$context.indent, + lineStart = _n$context.lineStart; + if (indent > 0 && n.range.start >= lineStart + indent) break; + ci = i; + } else if (n.type === Type.BLANK_LINE) ci = i;else break; + } + + if (ci === -1) return null; + var ca = cnode.items.splice(ci, len - ci); + var prevEnd = ca[0].range.start; + + while (true) { + cnode.range.end = prevEnd; + if (cnode.valueRange && cnode.valueRange.end > prevEnd) cnode.valueRange.end = prevEnd; + if (cnode === node) break; + cnode = cnode.context.parent; + } + + return ca; +} +var Collection = /*#__PURE__*/function (_Node) { + _inherits(Collection, _Node); + + var _super = _createSuper(Collection); + + function Collection(firstItem) { + var _this; + + _classCallCheck(this, Collection); + + _this = _super.call(this, firstItem.type === Type.SEQ_ITEM ? Type.SEQ : Type.MAP); + + for (var i = firstItem.props.length - 1; i >= 0; --i) { + if (firstItem.props[i].start < firstItem.context.lineStart) { + // props on previous line are assumed by the collection + _this.props = firstItem.props.slice(0, i + 1); + firstItem.props = firstItem.props.slice(i + 1); + var itemRange = firstItem.props[0] || firstItem.valueRange; + firstItem.range.start = itemRange.start; + break; + } + } + + _this.items = [firstItem]; + var ec = grabCollectionEndComments(firstItem); + if (ec) Array.prototype.push.apply(_this.items, ec); + return _this; + } + + _createClass(Collection, [{ + key: "includesTrailingLines", + get: function get() { + return this.items.length > 0; + } + /** + * @param {ParseContext} context + * @param {number} start - Index of first character + * @returns {number} - Index of the character after this + */ + + }, { + key: "parse", + value: function parse(context, start) { + this.context = context; + var parseNode = context.parseNode, + src = context.src; // It's easier to recalculate lineStart here rather than tracking down the + // last context from which to read it -- eemeli/yaml#2 + + var lineStart = Node.startOfLine(src, start); + var firstItem = this.items[0]; // First-item context needs to be correct for later comment handling + // -- eemeli/yaml#17 + + firstItem.context.parent = this; + this.valueRange = Range.copy(firstItem.valueRange); + var indent = firstItem.range.start - firstItem.context.lineStart; + var offset = start; + offset = Node.normalizeOffset(src, offset); + var ch = src[offset]; + var atLineStart = Node.endOfWhiteSpace(src, lineStart) === offset; + var prevIncludesTrailingLines = false; + + while (ch) { + while (ch === '\n' || ch === '#') { + if (atLineStart && ch === '\n' && !prevIncludesTrailingLines) { + var blankLine = new BlankLine(); + offset = blankLine.parse({ + src: src + }, offset); + this.valueRange.end = offset; + + if (offset >= src.length) { + ch = null; + break; + } + + this.items.push(blankLine); + offset -= 1; // blankLine.parse() consumes terminal newline + } else if (ch === '#') { + if (offset < lineStart + indent && !Collection.nextContentHasIndent(src, offset, indent)) { + return offset; + } + + var comment = new Comment(); + offset = comment.parse({ + indent: indent, + lineStart: lineStart, + src: src + }, offset); + this.items.push(comment); + this.valueRange.end = offset; + + if (offset >= src.length) { + ch = null; + break; + } + } + + lineStart = offset + 1; + offset = Node.endOfIndent(src, lineStart); + + if (Node.atBlank(src, offset)) { + var wsEnd = Node.endOfWhiteSpace(src, offset); + var next = src[wsEnd]; + + if (!next || next === '\n' || next === '#') { + offset = wsEnd; + } + } + + ch = src[offset]; + atLineStart = true; + } + + if (!ch) { + break; + } + + if (offset !== lineStart + indent && (atLineStart || ch !== ':')) { + if (offset < lineStart + indent) { + if (lineStart > start) offset = lineStart; + break; + } else if (!this.error) { + var msg = 'All collection items must start at the same column'; + this.error = new YAMLSyntaxError(this, msg); + } + } + + if (firstItem.type === Type.SEQ_ITEM) { + if (ch !== '-') { + if (lineStart > start) offset = lineStart; + break; + } + } else if (ch === '-' && !this.error) { + // map key may start with -, as long as it's followed by a non-whitespace char + var _next = src[offset + 1]; + + if (!_next || _next === '\n' || _next === '\t' || _next === ' ') { + var _msg = 'A collection cannot be both a mapping and a sequence'; + this.error = new YAMLSyntaxError(this, _msg); + } + } + + var node = parseNode({ + atLineStart: atLineStart, + inCollection: true, + indent: indent, + lineStart: lineStart, + parent: this + }, offset); + if (!node) return offset; // at next document start + + this.items.push(node); + this.valueRange.end = node.valueRange.end; + offset = Node.normalizeOffset(src, node.range.end); + ch = src[offset]; + atLineStart = false; + prevIncludesTrailingLines = node.includesTrailingLines; // Need to reset lineStart and atLineStart here if preceding node's range + // has advanced to check the current line's indentation level + // -- eemeli/yaml#10 & eemeli/yaml#38 + + if (ch) { + var ls = offset - 1; + var prev = src[ls]; + + while (prev === ' ' || prev === '\t') { + prev = src[--ls]; + } + + if (prev === '\n') { + lineStart = ls + 1; + atLineStart = true; + } + } + + var ec = grabCollectionEndComments(node); + if (ec) Array.prototype.push.apply(this.items, ec); + } + + return offset; + } + }, { + key: "setOrigRanges", + value: function setOrigRanges(cr, offset) { + offset = _get(_getPrototypeOf(Collection.prototype), "setOrigRanges", this).call(this, cr, offset); + this.items.forEach(function (node) { + offset = node.setOrigRanges(cr, offset); + }); + return offset; + } + }, { + key: "toString", + value: function toString() { + var src = this.context.src, + items = this.items, + range = this.range, + value = this.value; + if (value != null) return value; + var str = src.slice(range.start, items[0].range.start) + String(items[0]); + + for (var i = 1; i < items.length; ++i) { + var item = items[i]; + var _item$context = item.context, + atLineStart = _item$context.atLineStart, + indent = _item$context.indent; + if (atLineStart) for (var _i = 0; _i < indent; ++_i) { + str += ' '; + } + str += String(item); + } + + return Node.addStringTerminator(src, range.end, str); + } + }], [{ + key: "nextContentHasIndent", + value: function nextContentHasIndent(src, offset, indent) { + var lineStart = Node.endOfLine(src, offset) + 1; + offset = Node.endOfWhiteSpace(src, lineStart); + var ch = src[offset]; + if (!ch) return false; + if (offset >= lineStart + indent) return true; + if (ch !== '#' && ch !== '\n') return false; + return Collection.nextContentHasIndent(src, offset, indent); + } + }]); + + return Collection; +}(Node); + +var Directive = /*#__PURE__*/function (_Node) { + _inherits(Directive, _Node); + + var _super = _createSuper(Directive); + + function Directive() { + var _this; + + _classCallCheck(this, Directive); + + _this = _super.call(this, Type.DIRECTIVE); + _this.name = null; + return _this; + } + + _createClass(Directive, [{ + key: "parameters", + get: function get() { + var raw = this.rawValue; + return raw ? raw.trim().split(/[ \t]+/) : []; + } + }, { + key: "parseName", + value: function parseName(start) { + var src = this.context.src; + var offset = start; + var ch = src[offset]; + + while (ch && ch !== '\n' && ch !== '\t' && ch !== ' ') { + ch = src[offset += 1]; + } + + this.name = src.slice(start, offset); + return offset; + } + }, { + key: "parseParameters", + value: function parseParameters(start) { + var src = this.context.src; + var offset = start; + var ch = src[offset]; + + while (ch && ch !== '\n' && ch !== '#') { + ch = src[offset += 1]; + } + + this.valueRange = new Range(start, offset); + return offset; + } + }, { + key: "parse", + value: function parse(context, start) { + this.context = context; + var offset = this.parseName(start + 1); + offset = this.parseParameters(offset); + offset = this.parseComment(offset); + this.range = new Range(start, offset); + return offset; + } + }]); + + return Directive; +}(Node); + +var Document = /*#__PURE__*/function (_Node) { + _inherits(Document, _Node); + + var _super = _createSuper(Document); + + function Document() { + var _this; + + _classCallCheck(this, Document); + + _this = _super.call(this, Type.DOCUMENT); + _this.directives = null; + _this.contents = null; + _this.directivesEndMarker = null; + _this.documentEndMarker = null; + return _this; + } + + _createClass(Document, [{ + key: "parseDirectives", + value: function parseDirectives(start) { + var src = this.context.src; + this.directives = []; + var atLineStart = true; + var hasDirectives = false; + var offset = start; + + while (!Node.atDocumentBoundary(src, offset, Char.DIRECTIVES_END)) { + offset = Document.startCommentOrEndBlankLine(src, offset); + + switch (src[offset]) { + case '\n': + if (atLineStart) { + var blankLine = new BlankLine(); + offset = blankLine.parse({ + src: src + }, offset); + + if (offset < src.length) { + this.directives.push(blankLine); + } + } else { + offset += 1; + atLineStart = true; + } + + break; + + case '#': + { + var comment = new Comment(); + offset = comment.parse({ + src: src + }, offset); + this.directives.push(comment); + atLineStart = false; + } + break; + + case '%': + { + var directive = new Directive(); + offset = directive.parse({ + parent: this, + src: src + }, offset); + this.directives.push(directive); + hasDirectives = true; + atLineStart = false; + } + break; + + default: + if (hasDirectives) { + this.error = new YAMLSemanticError(this, 'Missing directives-end indicator line'); + } else if (this.directives.length > 0) { + this.contents = this.directives; + this.directives = []; + } + + return offset; + } + } + + if (src[offset]) { + this.directivesEndMarker = new Range(offset, offset + 3); + return offset + 3; + } + + if (hasDirectives) { + this.error = new YAMLSemanticError(this, 'Missing directives-end indicator line'); + } else if (this.directives.length > 0) { + this.contents = this.directives; + this.directives = []; + } + + return offset; + } + }, { + key: "parseContents", + value: function parseContents(start) { + var _this$context = this.context, + parseNode = _this$context.parseNode, + src = _this$context.src; + if (!this.contents) this.contents = []; + var lineStart = start; + + while (src[lineStart - 1] === '-') { + lineStart -= 1; + } + + var offset = Node.endOfWhiteSpace(src, start); + var atLineStart = lineStart === start; + this.valueRange = new Range(offset); + + while (!Node.atDocumentBoundary(src, offset, Char.DOCUMENT_END)) { + switch (src[offset]) { + case '\n': + if (atLineStart) { + var blankLine = new BlankLine(); + offset = blankLine.parse({ + src: src + }, offset); + + if (offset < src.length) { + this.contents.push(blankLine); + } + } else { + offset += 1; + atLineStart = true; + } + + lineStart = offset; + break; + + case '#': + { + var comment = new Comment(); + offset = comment.parse({ + src: src + }, offset); + this.contents.push(comment); + atLineStart = false; + } + break; + + default: + { + var iEnd = Node.endOfIndent(src, offset); + var context = { + atLineStart: atLineStart, + indent: -1, + inFlow: false, + inCollection: false, + lineStart: lineStart, + parent: this + }; + var node = parseNode(context, iEnd); + if (!node) return this.valueRange.end = iEnd; // at next document start + + this.contents.push(node); + offset = node.range.end; + atLineStart = false; + var ec = grabCollectionEndComments(node); + if (ec) Array.prototype.push.apply(this.contents, ec); + } + } + + offset = Document.startCommentOrEndBlankLine(src, offset); + } + + this.valueRange.end = offset; + + if (src[offset]) { + this.documentEndMarker = new Range(offset, offset + 3); + offset += 3; + + if (src[offset]) { + offset = Node.endOfWhiteSpace(src, offset); + + if (src[offset] === '#') { + var _comment = new Comment(); + + offset = _comment.parse({ + src: src + }, offset); + this.contents.push(_comment); + } + + switch (src[offset]) { + case '\n': + offset += 1; + break; + + case undefined: + break; + + default: + this.error = new YAMLSyntaxError(this, 'Document end marker line cannot have a non-comment suffix'); + } + } + } + + return offset; + } + /** + * @param {ParseContext} context + * @param {number} start - Index of first character + * @returns {number} - Index of the character after this + */ + + }, { + key: "parse", + value: function parse(context, start) { + context.root = this; + this.context = context; + var src = context.src; + var offset = src.charCodeAt(start) === 0xfeff ? start + 1 : start; // skip BOM + + offset = this.parseDirectives(offset); + offset = this.parseContents(offset); + return offset; + } + }, { + key: "setOrigRanges", + value: function setOrigRanges(cr, offset) { + offset = _get(_getPrototypeOf(Document.prototype), "setOrigRanges", this).call(this, cr, offset); + this.directives.forEach(function (node) { + offset = node.setOrigRanges(cr, offset); + }); + if (this.directivesEndMarker) offset = this.directivesEndMarker.setOrigRange(cr, offset); + this.contents.forEach(function (node) { + offset = node.setOrigRanges(cr, offset); + }); + if (this.documentEndMarker) offset = this.documentEndMarker.setOrigRange(cr, offset); + return offset; + } + }, { + key: "toString", + value: function toString() { + var contents = this.contents, + directives = this.directives, + value = this.value; + if (value != null) return value; + var str = directives.join(''); + + if (contents.length > 0) { + if (directives.length > 0 || contents[0].type === Type.COMMENT) str += '---\n'; + str += contents.join(''); + } + + if (str[str.length - 1] !== '\n') str += '\n'; + return str; + } + }], [{ + key: "startCommentOrEndBlankLine", + value: function startCommentOrEndBlankLine(src, start) { + var offset = Node.endOfWhiteSpace(src, start); + var ch = src[offset]; + return ch === '#' || ch === '\n' ? offset : start; + } + }]); + + return Document; +}(Node); + +var Alias = /*#__PURE__*/function (_Node) { + _inherits(Alias, _Node); + + var _super = _createSuper(Alias); + + function Alias() { + _classCallCheck(this, Alias); + + return _super.apply(this, arguments); + } + + _createClass(Alias, [{ + key: "parse", + value: + /** + * Parses an *alias from the source + * + * @param {ParseContext} context + * @param {number} start - Index of first character + * @returns {number} - Index of the character after this scalar + */ + function parse(context, start) { + this.context = context; + var src = context.src; + var offset = Node.endOfIdentifier(src, start + 1); + this.valueRange = new Range(start + 1, offset); + offset = Node.endOfWhiteSpace(src, offset); + offset = this.parseComment(offset); + return offset; + } + }]); + + return Alias; +}(Node); + +var Chomp = { + CLIP: 'CLIP', + KEEP: 'KEEP', + STRIP: 'STRIP' +}; +var BlockValue = /*#__PURE__*/function (_Node) { + _inherits(BlockValue, _Node); + + var _super = _createSuper(BlockValue); + + function BlockValue(type, props) { + var _this; + + _classCallCheck(this, BlockValue); + + _this = _super.call(this, type, props); + _this.blockIndent = null; + _this.chomping = Chomp.CLIP; + _this.header = null; + return _this; + } + + _createClass(BlockValue, [{ + key: "includesTrailingLines", + get: function get() { + return this.chomping === Chomp.KEEP; + } + }, { + key: "strValue", + get: function get() { + if (!this.valueRange || !this.context) return null; + var _this$valueRange = this.valueRange, + start = _this$valueRange.start, + end = _this$valueRange.end; + var _this$context = this.context, + indent = _this$context.indent, + src = _this$context.src; + if (this.valueRange.isEmpty()) return ''; + var lastNewLine = null; + var ch = src[end - 1]; + + while (ch === '\n' || ch === '\t' || ch === ' ') { + end -= 1; + + if (end <= start) { + if (this.chomping === Chomp.KEEP) break;else return ''; // probably never happens + } + + if (ch === '\n') lastNewLine = end; + ch = src[end - 1]; + } + + var keepStart = end + 1; + + if (lastNewLine) { + if (this.chomping === Chomp.KEEP) { + keepStart = lastNewLine; + end = this.valueRange.end; + } else { + end = lastNewLine; + } + } + + var bi = indent + this.blockIndent; + var folded = this.type === Type.BLOCK_FOLDED; + var atStart = true; + var str = ''; + var sep = ''; + var prevMoreIndented = false; + + for (var i = start; i < end; ++i) { + for (var j = 0; j < bi; ++j) { + if (src[i] !== ' ') break; + i += 1; + } + + var _ch = src[i]; + + if (_ch === '\n') { + if (sep === '\n') str += '\n';else sep = '\n'; + } else { + var lineEnd = Node.endOfLine(src, i); + var line = src.slice(i, lineEnd); + i = lineEnd; + + if (folded && (_ch === ' ' || _ch === '\t') && i < keepStart) { + if (sep === ' ') sep = '\n';else if (!prevMoreIndented && !atStart && sep === '\n') sep = '\n\n'; + str += sep + line; //+ ((lineEnd < end && src[lineEnd]) || '') + + sep = lineEnd < end && src[lineEnd] || ''; + prevMoreIndented = true; + } else { + str += sep + line; + sep = folded && i < keepStart ? ' ' : '\n'; + prevMoreIndented = false; + } + + if (atStart && line !== '') atStart = false; + } + } + + return this.chomping === Chomp.STRIP ? str : str + '\n'; + } + }, { + key: "parseBlockHeader", + value: function parseBlockHeader(start) { + var src = this.context.src; + var offset = start + 1; + var bi = ''; + + while (true) { + var ch = src[offset]; + + switch (ch) { + case '-': + this.chomping = Chomp.STRIP; + break; + + case '+': + this.chomping = Chomp.KEEP; + break; + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + bi += ch; + break; + + default: + this.blockIndent = Number(bi) || null; + this.header = new Range(start, offset); + return offset; + } + + offset += 1; + } + } + }, { + key: "parseBlockValue", + value: function parseBlockValue(start) { + var _this$context2 = this.context, + indent = _this$context2.indent, + src = _this$context2.src; + var explicit = !!this.blockIndent; + var offset = start; + var valueEnd = start; + var minBlockIndent = 1; + + for (var ch = src[offset]; ch === '\n'; ch = src[offset]) { + offset += 1; + if (Node.atDocumentBoundary(src, offset)) break; + var end = Node.endOfBlockIndent(src, indent, offset); // should not include tab? + + if (end === null) break; + var _ch2 = src[end]; + var lineIndent = end - (offset + indent); + + if (!this.blockIndent) { + // no explicit block indent, none yet detected + if (src[end] !== '\n') { + // first line with non-whitespace content + if (lineIndent < minBlockIndent) { + var msg = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator'; + this.error = new YAMLSemanticError(this, msg); + } + + this.blockIndent = lineIndent; + } else if (lineIndent > minBlockIndent) { + // empty line with more whitespace + minBlockIndent = lineIndent; + } + } else if (_ch2 && _ch2 !== '\n' && lineIndent < this.blockIndent) { + if (src[end] === '#') break; + + if (!this.error) { + var _src = explicit ? 'explicit indentation indicator' : 'first line'; + + var _msg = "Block scalars must not be less indented than their ".concat(_src); + + this.error = new YAMLSemanticError(this, _msg); + } + } + + if (src[end] === '\n') { + offset = end; + } else { + offset = valueEnd = Node.endOfLine(src, end); + } + } + + if (this.chomping !== Chomp.KEEP) { + offset = src[valueEnd] ? valueEnd + 1 : valueEnd; + } + + this.valueRange = new Range(start + 1, offset); + return offset; + } + /** + * Parses a block value from the source + * + * Accepted forms are: + * ``` + * BS + * block + * lines + * + * BS #comment + * block + * lines + * ``` + * where the block style BS matches the regexp `[|>][-+1-9]*` and block lines + * are empty or have an indent level greater than `indent`. + * + * @param {ParseContext} context + * @param {number} start - Index of first character + * @returns {number} - Index of the character after this block + */ + + }, { + key: "parse", + value: function parse(context, start) { + this.context = context; + var src = context.src; + var offset = this.parseBlockHeader(start); + offset = Node.endOfWhiteSpace(src, offset); + offset = this.parseComment(offset); + offset = this.parseBlockValue(offset); + return offset; + } + }, { + key: "setOrigRanges", + value: function setOrigRanges(cr, offset) { + offset = _get(_getPrototypeOf(BlockValue.prototype), "setOrigRanges", this).call(this, cr, offset); + return this.header ? this.header.setOrigRange(cr, offset) : offset; + } + }]); + + return BlockValue; +}(Node); + +var FlowCollection = /*#__PURE__*/function (_Node) { + _inherits(FlowCollection, _Node); + + var _super = _createSuper(FlowCollection); + + function FlowCollection(type, props) { + var _this; + + _classCallCheck(this, FlowCollection); + + _this = _super.call(this, type, props); + _this.items = null; + return _this; + } + + _createClass(FlowCollection, [{ + key: "prevNodeIsJsonLike", + value: function prevNodeIsJsonLike() { + var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.items.length; + var node = this.items[idx - 1]; + return !!node && (node.jsonLike || node.type === Type.COMMENT && this.prevNodeIsJsonLike(idx - 1)); + } + /** + * @param {ParseContext} context + * @param {number} start - Index of first character + * @returns {number} - Index of the character after this + */ + + }, { + key: "parse", + value: function parse(context, start) { + this.context = context; + var parseNode = context.parseNode, + src = context.src; + var indent = context.indent, + lineStart = context.lineStart; + var char = src[start]; // { or [ + + this.items = [{ + char: char, + offset: start + }]; + var offset = Node.endOfWhiteSpace(src, start + 1); + char = src[offset]; + + while (char && char !== ']' && char !== '}') { + switch (char) { + case '\n': + { + lineStart = offset + 1; + var wsEnd = Node.endOfWhiteSpace(src, lineStart); + + if (src[wsEnd] === '\n') { + var blankLine = new BlankLine(); + lineStart = blankLine.parse({ + src: src + }, lineStart); + this.items.push(blankLine); + } + + offset = Node.endOfIndent(src, lineStart); + + if (offset <= lineStart + indent) { + char = src[offset]; + + if (offset < lineStart + indent || char !== ']' && char !== '}') { + var msg = 'Insufficient indentation in flow collection'; + this.error = new YAMLSemanticError(this, msg); + } + } + } + break; + + case ',': + { + this.items.push({ + char: char, + offset: offset + }); + offset += 1; + } + break; + + case '#': + { + var comment = new Comment(); + offset = comment.parse({ + src: src + }, offset); + this.items.push(comment); + } + break; + + case '?': + case ':': + { + var next = src[offset + 1]; + + if (next === '\n' || next === '\t' || next === ' ' || next === ',' || // in-flow : after JSON-like key does not need to be followed by whitespace + char === ':' && this.prevNodeIsJsonLike()) { + this.items.push({ + char: char, + offset: offset + }); + offset += 1; + break; + } + } + // fallthrough + + default: + { + var node = parseNode({ + atLineStart: false, + inCollection: false, + inFlow: true, + indent: -1, + lineStart: lineStart, + parent: this + }, offset); + + if (!node) { + // at next document start + this.valueRange = new Range(start, offset); + return offset; + } + + this.items.push(node); + offset = Node.normalizeOffset(src, node.range.end); + } + } + + offset = Node.endOfWhiteSpace(src, offset); + char = src[offset]; + } + + this.valueRange = new Range(start, offset + 1); + + if (char) { + this.items.push({ + char: char, + offset: offset + }); + offset = Node.endOfWhiteSpace(src, offset + 1); + offset = this.parseComment(offset); + } + + return offset; + } + }, { + key: "setOrigRanges", + value: function setOrigRanges(cr, offset) { + offset = _get(_getPrototypeOf(FlowCollection.prototype), "setOrigRanges", this).call(this, cr, offset); + this.items.forEach(function (node) { + if (node instanceof Node) { + offset = node.setOrigRanges(cr, offset); + } else if (cr.length === 0) { + node.origOffset = node.offset; + } else { + var i = offset; + + while (i < cr.length) { + if (cr[i] > node.offset) break;else ++i; + } + + node.origOffset = node.offset + i; + offset = i; + } + }); + return offset; + } + }, { + key: "toString", + value: function toString() { + var src = this.context.src, + items = this.items, + range = this.range, + value = this.value; + if (value != null) return value; + var nodes = items.filter(function (item) { + return item instanceof Node; + }); + var str = ''; + var prevEnd = range.start; + nodes.forEach(function (node) { + var prefix = src.slice(prevEnd, node.range.start); + prevEnd = node.range.end; + str += prefix + String(node); + + if (str[str.length - 1] === '\n' && src[prevEnd - 1] !== '\n' && src[prevEnd] === '\n') { + // Comment range does not include the terminal newline, but its + // stringified value does. Without this fix, newlines at comment ends + // get duplicated. + prevEnd += 1; + } + }); + str += src.slice(prevEnd, range.end); + return Node.addStringTerminator(src, range.end, str); + } + }]); + + return FlowCollection; +}(Node); + +var QuoteDouble = /*#__PURE__*/function (_Node) { + _inherits(QuoteDouble, _Node); + + var _super = _createSuper(QuoteDouble); + + function QuoteDouble() { + _classCallCheck(this, QuoteDouble); + + return _super.apply(this, arguments); + } + + _createClass(QuoteDouble, [{ + key: "strValue", + get: + /** + * @returns {string | { str: string, errors: YAMLSyntaxError[] }} + */ + function get() { + if (!this.valueRange || !this.context) return null; + var errors = []; + var _this$valueRange = this.valueRange, + start = _this$valueRange.start, + end = _this$valueRange.end; + var _this$context = this.context, + indent = _this$context.indent, + src = _this$context.src; + if (src[end - 1] !== '"') errors.push(new YAMLSyntaxError(this, 'Missing closing "quote')); // Using String#replace is too painful with escaped newlines preceded by + // escaped backslashes; also, this should be faster. + + var str = ''; + + for (var i = start + 1; i < end - 1; ++i) { + var ch = src[i]; + + if (ch === '\n') { + if (Node.atDocumentBoundary(src, i + 1)) errors.push(new YAMLSemanticError(this, 'Document boundary indicators are not allowed within string values')); + + var _Node$foldNewline = Node.foldNewline(src, i, indent), + fold = _Node$foldNewline.fold, + offset = _Node$foldNewline.offset, + error = _Node$foldNewline.error; + + str += fold; + i = offset; + if (error) errors.push(new YAMLSemanticError(this, 'Multi-line double-quoted string needs to be sufficiently indented')); + } else if (ch === '\\') { + i += 1; + + switch (src[i]) { + case '0': + str += '\0'; + break; + // null character + + case 'a': + str += '\x07'; + break; + // bell character + + case 'b': + str += '\b'; + break; + // backspace + + case 'e': + str += '\x1b'; + break; + // escape character + + case 'f': + str += '\f'; + break; + // form feed + + case 'n': + str += '\n'; + break; + // line feed + + case 'r': + str += '\r'; + break; + // carriage return + + case 't': + str += '\t'; + break; + // horizontal tab + + case 'v': + str += '\v'; + break; + // vertical tab + + case 'N': + str += "\x85"; + break; + // Unicode next line + + case '_': + str += "\xA0"; + break; + // Unicode non-breaking space + + case 'L': + str += "\u2028"; + break; + // Unicode line separator + + case 'P': + str += "\u2029"; + break; + // Unicode paragraph separator + + case ' ': + str += ' '; + break; + + case '"': + str += '"'; + break; + + case '/': + str += '/'; + break; + + case '\\': + str += '\\'; + break; + + case '\t': + str += '\t'; + break; + + case 'x': + str += this.parseCharCode(i + 1, 2, errors); + i += 2; + break; + + case 'u': + str += this.parseCharCode(i + 1, 4, errors); + i += 4; + break; + + case 'U': + str += this.parseCharCode(i + 1, 8, errors); + i += 8; + break; + + case '\n': + // skip escaped newlines, but still trim the following line + while (src[i + 1] === ' ' || src[i + 1] === '\t') { + i += 1; + } + + break; + + default: + errors.push(new YAMLSyntaxError(this, "Invalid escape sequence ".concat(src.substr(i - 1, 2)))); + str += '\\' + src[i]; + } + } else if (ch === ' ' || ch === '\t') { + // trim trailing whitespace + var wsStart = i; + var next = src[i + 1]; + + while (next === ' ' || next === '\t') { + i += 1; + next = src[i + 1]; + } + + if (next !== '\n') str += i > wsStart ? src.slice(wsStart, i + 1) : ch; + } else { + str += ch; + } + } + + return errors.length > 0 ? { + errors: errors, + str: str + } : str; + } + }, { + key: "parseCharCode", + value: function parseCharCode(offset, length, errors) { + var src = this.context.src; + var cc = src.substr(offset, length); + var ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc); + var code = ok ? parseInt(cc, 16) : NaN; + + if (isNaN(code)) { + errors.push(new YAMLSyntaxError(this, "Invalid escape sequence ".concat(src.substr(offset - 2, length + 2)))); + return src.substr(offset - 2, length + 2); + } + + return String.fromCodePoint(code); + } + /** + * Parses a "double quoted" value from the source + * + * @param {ParseContext} context + * @param {number} start - Index of first character + * @returns {number} - Index of the character after this scalar + */ + + }, { + key: "parse", + value: function parse(context, start) { + this.context = context; + var src = context.src; + var offset = QuoteDouble.endOfQuote(src, start + 1); + this.valueRange = new Range(start, offset); + offset = Node.endOfWhiteSpace(src, offset); + offset = this.parseComment(offset); + return offset; + } + }], [{ + key: "endOfQuote", + value: function endOfQuote(src, offset) { + var ch = src[offset]; + + while (ch && ch !== '"') { + offset += ch === '\\' ? 2 : 1; + ch = src[offset]; + } + + return offset + 1; + } + }]); + + return QuoteDouble; +}(Node); + +var QuoteSingle = /*#__PURE__*/function (_Node) { + _inherits(QuoteSingle, _Node); + + var _super = _createSuper(QuoteSingle); + + function QuoteSingle() { + _classCallCheck(this, QuoteSingle); + + return _super.apply(this, arguments); + } + + _createClass(QuoteSingle, [{ + key: "strValue", + get: + /** + * @returns {string | { str: string, errors: YAMLSyntaxError[] }} + */ + function get() { + if (!this.valueRange || !this.context) return null; + var errors = []; + var _this$valueRange = this.valueRange, + start = _this$valueRange.start, + end = _this$valueRange.end; + var _this$context = this.context, + indent = _this$context.indent, + src = _this$context.src; + if (src[end - 1] !== "'") errors.push(new YAMLSyntaxError(this, "Missing closing 'quote")); + var str = ''; + + for (var i = start + 1; i < end - 1; ++i) { + var ch = src[i]; + + if (ch === '\n') { + if (Node.atDocumentBoundary(src, i + 1)) errors.push(new YAMLSemanticError(this, 'Document boundary indicators are not allowed within string values')); + + var _Node$foldNewline = Node.foldNewline(src, i, indent), + fold = _Node$foldNewline.fold, + offset = _Node$foldNewline.offset, + error = _Node$foldNewline.error; + + str += fold; + i = offset; + if (error) errors.push(new YAMLSemanticError(this, 'Multi-line single-quoted string needs to be sufficiently indented')); + } else if (ch === "'") { + str += ch; + i += 1; + if (src[i] !== "'") errors.push(new YAMLSyntaxError(this, 'Unescaped single quote? This should not happen.')); + } else if (ch === ' ' || ch === '\t') { + // trim trailing whitespace + var wsStart = i; + var next = src[i + 1]; + + while (next === ' ' || next === '\t') { + i += 1; + next = src[i + 1]; + } + + if (next !== '\n') str += i > wsStart ? src.slice(wsStart, i + 1) : ch; + } else { + str += ch; + } + } + + return errors.length > 0 ? { + errors: errors, + str: str + } : str; + } + /** + * Parses a 'single quoted' value from the source + * + * @param {ParseContext} context + * @param {number} start - Index of first character + * @returns {number} - Index of the character after this scalar + */ + + }, { + key: "parse", + value: function parse(context, start) { + this.context = context; + var src = context.src; + var offset = QuoteSingle.endOfQuote(src, start + 1); + this.valueRange = new Range(start, offset); + offset = Node.endOfWhiteSpace(src, offset); + offset = this.parseComment(offset); + return offset; + } + }], [{ + key: "endOfQuote", + value: function endOfQuote(src, offset) { + var ch = src[offset]; + + while (ch) { + if (ch === "'") { + if (src[offset + 1] !== "'") break; + ch = src[offset += 2]; + } else { + ch = src[offset += 1]; + } + } + + return offset + 1; + } + }]); + + return QuoteSingle; +}(Node); + +function createNewNode(type, props) { + switch (type) { + case Type.ALIAS: + return new Alias(type, props); + + case Type.BLOCK_FOLDED: + case Type.BLOCK_LITERAL: + return new BlockValue(type, props); + + case Type.FLOW_MAP: + case Type.FLOW_SEQ: + return new FlowCollection(type, props); + + case Type.MAP_KEY: + case Type.MAP_VALUE: + case Type.SEQ_ITEM: + return new CollectionItem(type, props); + + case Type.COMMENT: + case Type.PLAIN: + return new PlainValue(type, props); + + case Type.QUOTE_DOUBLE: + return new QuoteDouble(type, props); + + case Type.QUOTE_SINGLE: + return new QuoteSingle(type, props); + + /* istanbul ignore next */ + + default: + return null; + // should never happen + } +} +/** + * @param {boolean} atLineStart - Node starts at beginning of line + * @param {boolean} inFlow - true if currently in a flow context + * @param {boolean} inCollection - true if currently in a collection context + * @param {number} indent - Current level of indentation + * @param {number} lineStart - Start of the current line + * @param {Node} parent - The parent of the node + * @param {string} src - Source of the YAML document + */ + + +var ParseContext = /*#__PURE__*/function () { + function ParseContext() { + var _this = this; + + var orig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + atLineStart = _ref.atLineStart, + inCollection = _ref.inCollection, + inFlow = _ref.inFlow, + indent = _ref.indent, + lineStart = _ref.lineStart, + parent = _ref.parent; + + _classCallCheck(this, ParseContext); + + _defineProperty(this, "parseNode", function (overlay, start) { + if (Node.atDocumentBoundary(_this.src, start)) return null; + var context = new ParseContext(_this, overlay); + + var _context$parseProps = context.parseProps(start), + props = _context$parseProps.props, + type = _context$parseProps.type, + valueStart = _context$parseProps.valueStart; + + var node = createNewNode(type, props); + var offset = node.parse(context, valueStart); + node.range = new Range(start, offset); + /* istanbul ignore if */ + + if (offset <= start) { + // This should never happen, but if it does, let's make sure to at least + // step one character forward to avoid a busy loop. + node.error = new Error("Node#parse consumed no characters"); + node.error.parseEnd = offset; + node.error.source = node; + node.range.end = start + 1; + } + + if (context.nodeStartsCollection(node)) { + if (!node.error && !context.atLineStart && context.parent.type === Type.DOCUMENT) { + node.error = new YAMLSyntaxError(node, 'Block collection must not have preceding content here (e.g. directives-end indicator)'); + } + + var collection = new Collection(node); + offset = collection.parse(new ParseContext(context), offset); + collection.range = new Range(start, offset); + return collection; + } + + return node; + }); + + this.atLineStart = atLineStart != null ? atLineStart : orig.atLineStart || false; + this.inCollection = inCollection != null ? inCollection : orig.inCollection || false; + this.inFlow = inFlow != null ? inFlow : orig.inFlow || false; + this.indent = indent != null ? indent : orig.indent; + this.lineStart = lineStart != null ? lineStart : orig.lineStart; + this.parent = parent != null ? parent : orig.parent || {}; + this.root = orig.root; + this.src = orig.src; + } + + _createClass(ParseContext, [{ + key: "nodeStartsCollection", + value: function nodeStartsCollection(node) { + var inCollection = this.inCollection, + inFlow = this.inFlow, + src = this.src; + if (inCollection || inFlow) return false; + if (node instanceof CollectionItem) return true; // check for implicit key + + var offset = node.range.end; + if (src[offset] === '\n' || src[offset - 1] === '\n') return false; + offset = Node.endOfWhiteSpace(src, offset); + return src[offset] === ':'; + } // Anchor and tag are before type, which determines the node implementation + // class; hence this intermediate step. + + }, { + key: "parseProps", + value: function parseProps(offset) { + var inFlow = this.inFlow, + parent = this.parent, + src = this.src; + var props = []; + var lineHasProps = false; + offset = this.atLineStart ? Node.endOfIndent(src, offset) : Node.endOfWhiteSpace(src, offset); + var ch = src[offset]; + + while (ch === Char.ANCHOR || ch === Char.COMMENT || ch === Char.TAG || ch === '\n') { + if (ch === '\n') { + var inEnd = offset; + var lineStart = void 0; + + do { + lineStart = inEnd + 1; + inEnd = Node.endOfIndent(src, lineStart); + } while (src[inEnd] === '\n'); + + var indentDiff = inEnd - (lineStart + this.indent); + var noIndicatorAsIndent = parent.type === Type.SEQ_ITEM && parent.context.atLineStart; + if (src[inEnd] !== '#' && !Node.nextNodeIsIndented(src[inEnd], indentDiff, !noIndicatorAsIndent)) break; + this.atLineStart = true; + this.lineStart = lineStart; + lineHasProps = false; + offset = inEnd; + } else if (ch === Char.COMMENT) { + var end = Node.endOfLine(src, offset + 1); + props.push(new Range(offset, end)); + offset = end; + } else { + var _end = Node.endOfIdentifier(src, offset + 1); + + if (ch === Char.TAG && src[_end] === ',' && /^[a-zA-Z0-9-]+\.[a-zA-Z0-9-]+,\d\d\d\d(-\d\d){0,2}\/\S/.test(src.slice(offset + 1, _end + 13))) { + // Let's presume we're dealing with a YAML 1.0 domain tag here, rather + // than an empty but 'foo.bar' private-tagged node in a flow collection + // followed without whitespace by a plain string starting with a year + // or date divided by something. + _end = Node.endOfIdentifier(src, _end + 5); + } + + props.push(new Range(offset, _end)); + lineHasProps = true; + offset = Node.endOfWhiteSpace(src, _end); + } + + ch = src[offset]; + } // '- &a : b' has an anchor on an empty node + + + if (lineHasProps && ch === ':' && Node.atBlank(src, offset + 1, true)) offset -= 1; + var type = ParseContext.parseType(src, offset, inFlow); + return { + props: props, + type: type, + valueStart: offset + }; + } + /** + * Parses a node from the source + * @param {ParseContext} overlay + * @param {number} start - Index of first non-whitespace character for the node + * @returns {?Node} - null if at a document boundary + */ + + }], [{ + key: "parseType", + value: function parseType(src, offset, inFlow) { + switch (src[offset]) { + case '*': + return Type.ALIAS; + + case '>': + return Type.BLOCK_FOLDED; + + case '|': + return Type.BLOCK_LITERAL; + + case '{': + return Type.FLOW_MAP; + + case '[': + return Type.FLOW_SEQ; + + case '?': + return !inFlow && Node.atBlank(src, offset + 1, true) ? Type.MAP_KEY : Type.PLAIN; + + case ':': + return !inFlow && Node.atBlank(src, offset + 1, true) ? Type.MAP_VALUE : Type.PLAIN; + + case '-': + return !inFlow && Node.atBlank(src, offset + 1, true) ? Type.SEQ_ITEM : Type.PLAIN; + + case '"': + return Type.QUOTE_DOUBLE; + + case "'": + return Type.QUOTE_SINGLE; + + default: + return Type.PLAIN; + } + } + }]); + + return ParseContext; +}(); + +// Published as 'yaml/parse-cst' +function parse(src) { + var cr = []; + + if (src.indexOf('\r') !== -1) { + src = src.replace(/\r\n?/g, function (match, offset) { + if (match.length > 1) cr.push(offset); + return '\n'; + }); + } + + var documents = []; + var offset = 0; + + do { + var doc = new Document(); + var context = new ParseContext({ + src: src + }); + offset = doc.parse(context, offset); + documents.push(doc); + } while (offset < src.length); + + documents.setOrigRanges = function () { + if (cr.length === 0) return false; + + for (var i = 1; i < cr.length; ++i) { + cr[i] -= i; + } + + var crOffset = 0; + + for (var _i = 0; _i < documents.length; ++_i) { + crOffset = documents[_i].setOrigRanges(cr, crOffset); + } + + cr.splice(0, cr.length); + return true; + }; + + documents.toString = function () { + return documents.join('...\n'); + }; + + return documents; +} + +export { parse }; diff --git a/yaml/browser/dist/resolveSeq-492ab440.js b/yaml/browser/dist/resolveSeq-492ab440.js new file mode 100644 index 0000000000..50c7c19602 --- /dev/null +++ b/yaml/browser/dist/resolveSeq-492ab440.js @@ -0,0 +1,2419 @@ +import { c as _classCallCheck, j as _inherits, k as _createSuper, b as _createClass, e as _defineProperty, p as _assertThisInitialized, a as _typeof, q as _toArray, T as Type, _ as _createForOfIteratorHelper, l as _get, m as _getPrototypeOf, o as YAMLReferenceError, r as _possibleConstructorReturn, h as _slicedToArray, g as YAMLSemanticError, n as defaultTags, f as YAMLWarning, C as Char, Y as YAMLSyntaxError, P as PlainValue } from './PlainValue-b8036b75.js'; + +function addCommentBefore(str, indent, comment) { + if (!comment) return str; + var cc = comment.replace(/[\s\S]^/gm, "$&".concat(indent, "#")); + return "#".concat(cc, "\n").concat(indent).concat(str); +} +function addComment(str, indent, comment) { + return !comment ? str : comment.indexOf('\n') === -1 ? "".concat(str, " #").concat(comment) : "".concat(str, "\n") + comment.replace(/^/gm, "".concat(indent || '', "#")); +} + +var Node = function Node() { + _classCallCheck(this, Node); +}; + +function toJSON(value, arg, ctx) { + if (Array.isArray(value)) return value.map(function (v, i) { + return toJSON(v, String(i), ctx); + }); + + if (value && typeof value.toJSON === 'function') { + var anchor = ctx && ctx.anchors && ctx.anchors.get(value); + if (anchor) ctx.onCreate = function (res) { + anchor.res = res; + delete ctx.onCreate; + }; + var res = value.toJSON(arg, ctx); + if (anchor && ctx.onCreate) ctx.onCreate(res); + return res; + } + + if ((!ctx || !ctx.keep) && typeof value === 'bigint') return Number(value); + return value; +} + +var Scalar = /*#__PURE__*/function (_Node) { + _inherits(Scalar, _Node); + + var _super = _createSuper(Scalar); + + function Scalar(value) { + var _this; + + _classCallCheck(this, Scalar); + + _this = _super.call(this); + _this.value = value; + return _this; + } + + _createClass(Scalar, [{ + key: "toJSON", + value: function toJSON$1(arg, ctx) { + return ctx && ctx.keep ? this.value : toJSON(this.value, arg, ctx); + } + }, { + key: "toString", + value: function toString() { + return String(this.value); + } + }]); + + return Scalar; +}(Node); + +function collectionFromPath(schema, path, value) { + var v = value; + + for (var i = path.length - 1; i >= 0; --i) { + var k = path[i]; + + if (Number.isInteger(k) && k >= 0) { + var a = []; + a[k] = v; + v = a; + } else { + var o = {}; + Object.defineProperty(o, k, { + value: v, + writable: true, + enumerable: true, + configurable: true + }); + v = o; + } + } + + return schema.createNode(v, false); +} // null, undefined, or an empty non-string iterable (e.g. []) + + +var isEmptyPath = function isEmptyPath(path) { + return path == null || _typeof(path) === 'object' && path[Symbol.iterator]().next().done; +}; +var Collection = /*#__PURE__*/function (_Node) { + _inherits(Collection, _Node); + + var _super = _createSuper(Collection); + + function Collection(schema) { + var _this; + + _classCallCheck(this, Collection); + + _this = _super.call(this); + + _defineProperty(_assertThisInitialized(_this), "items", []); + + _this.schema = schema; + return _this; + } + + _createClass(Collection, [{ + key: "addIn", + value: function addIn(path, value) { + if (isEmptyPath(path)) this.add(value);else { + var _path = _toArray(path), + key = _path[0], + rest = _path.slice(1); + + var node = this.get(key, true); + if (node instanceof Collection) node.addIn(rest, value);else if (node === undefined && this.schema) this.set(key, collectionFromPath(this.schema, rest, value));else throw new Error("Expected YAML collection at ".concat(key, ". Remaining path: ").concat(rest)); + } + } + }, { + key: "deleteIn", + value: function deleteIn(_ref) { + var _ref2 = _toArray(_ref), + key = _ref2[0], + rest = _ref2.slice(1); + + if (rest.length === 0) return this.delete(key); + var node = this.get(key, true); + if (node instanceof Collection) return node.deleteIn(rest);else throw new Error("Expected YAML collection at ".concat(key, ". Remaining path: ").concat(rest)); + } + }, { + key: "getIn", + value: function getIn(_ref3, keepScalar) { + var _ref4 = _toArray(_ref3), + key = _ref4[0], + rest = _ref4.slice(1); + + var node = this.get(key, true); + if (rest.length === 0) return !keepScalar && node instanceof Scalar ? node.value : node;else return node instanceof Collection ? node.getIn(rest, keepScalar) : undefined; + } + }, { + key: "hasAllNullValues", + value: function hasAllNullValues() { + return this.items.every(function (node) { + if (!node || node.type !== 'PAIR') return false; + var n = node.value; + return n == null || n instanceof Scalar && n.value == null && !n.commentBefore && !n.comment && !n.tag; + }); + } + }, { + key: "hasIn", + value: function hasIn(_ref5) { + var _ref6 = _toArray(_ref5), + key = _ref6[0], + rest = _ref6.slice(1); + + if (rest.length === 0) return this.has(key); + var node = this.get(key, true); + return node instanceof Collection ? node.hasIn(rest) : false; + } + }, { + key: "setIn", + value: function setIn(_ref7, value) { + var _ref8 = _toArray(_ref7), + key = _ref8[0], + rest = _ref8.slice(1); + + if (rest.length === 0) { + this.set(key, value); + } else { + var node = this.get(key, true); + if (node instanceof Collection) node.setIn(rest, value);else if (node === undefined && this.schema) this.set(key, collectionFromPath(this.schema, rest, value));else throw new Error("Expected YAML collection at ".concat(key, ". Remaining path: ").concat(rest)); + } + } // overridden in implementations + + /* istanbul ignore next */ + + }, { + key: "toJSON", + value: function toJSON() { + return null; + } + }, { + key: "toString", + value: function toString(ctx, _ref9, onComment, onChompKeep) { + var _this2 = this; + + var blockItem = _ref9.blockItem, + flowChars = _ref9.flowChars, + isMap = _ref9.isMap, + itemIndent = _ref9.itemIndent; + var _ctx = ctx, + indent = _ctx.indent, + indentStep = _ctx.indentStep, + stringify = _ctx.stringify; + var inFlow = this.type === Type.FLOW_MAP || this.type === Type.FLOW_SEQ || ctx.inFlow; + if (inFlow) itemIndent += indentStep; + var allNullValues = isMap && this.hasAllNullValues(); + ctx = Object.assign({}, ctx, { + allNullValues: allNullValues, + indent: itemIndent, + inFlow: inFlow, + type: null + }); + var chompKeep = false; + var hasItemWithNewLine = false; + var nodes = this.items.reduce(function (nodes, item, i) { + var comment; + + if (item) { + if (!chompKeep && item.spaceBefore) nodes.push({ + type: 'comment', + str: '' + }); + if (item.commentBefore) item.commentBefore.match(/^.*$/gm).forEach(function (line) { + nodes.push({ + type: 'comment', + str: "#".concat(line) + }); + }); + if (item.comment) comment = item.comment; + if (inFlow && (!chompKeep && item.spaceBefore || item.commentBefore || item.comment || item.key && (item.key.commentBefore || item.key.comment) || item.value && (item.value.commentBefore || item.value.comment))) hasItemWithNewLine = true; + } + + chompKeep = false; + var str = stringify(item, ctx, function () { + return comment = null; + }, function () { + return chompKeep = true; + }); + if (inFlow && !hasItemWithNewLine && str.includes('\n')) hasItemWithNewLine = true; + if (inFlow && i < _this2.items.length - 1) str += ','; + str = addComment(str, itemIndent, comment); + if (chompKeep && (comment || inFlow)) chompKeep = false; + nodes.push({ + type: 'item', + str: str + }); + return nodes; + }, []); + var str; + + if (nodes.length === 0) { + str = flowChars.start + flowChars.end; + } else if (inFlow) { + var start = flowChars.start, + end = flowChars.end; + var strings = nodes.map(function (n) { + return n.str; + }); + + if (hasItemWithNewLine || strings.reduce(function (sum, str) { + return sum + str.length + 2; + }, 2) > Collection.maxFlowStringSingleLineLength) { + str = start; + + var _iterator = _createForOfIteratorHelper(strings), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var s = _step.value; + str += s ? "\n".concat(indentStep).concat(indent).concat(s) : '\n'; + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + str += "\n".concat(indent).concat(end); + } else { + str = "".concat(start, " ").concat(strings.join(' '), " ").concat(end); + } + } else { + var _strings = nodes.map(blockItem); + + str = _strings.shift(); + + var _iterator2 = _createForOfIteratorHelper(_strings), + _step2; + + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var _s = _step2.value; + str += _s ? "\n".concat(indent).concat(_s) : '\n'; + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + } + + if (this.comment) { + str += '\n' + this.comment.replace(/^/gm, "".concat(indent, "#")); + if (onComment) onComment(); + } else if (chompKeep && onChompKeep) onChompKeep(); + + return str; + } + }]); + + return Collection; +}(Node); + +_defineProperty(Collection, "maxFlowStringSingleLineLength", 60); + +function asItemIndex(key) { + var idx = key instanceof Scalar ? key.value : key; + if (idx && typeof idx === 'string') idx = Number(idx); + return Number.isInteger(idx) && idx >= 0 ? idx : null; +} + +var YAMLSeq = /*#__PURE__*/function (_Collection) { + _inherits(YAMLSeq, _Collection); + + var _super = _createSuper(YAMLSeq); + + function YAMLSeq() { + _classCallCheck(this, YAMLSeq); + + return _super.apply(this, arguments); + } + + _createClass(YAMLSeq, [{ + key: "add", + value: function add(value) { + this.items.push(value); + } + }, { + key: "delete", + value: function _delete(key) { + var idx = asItemIndex(key); + if (typeof idx !== 'number') return false; + var del = this.items.splice(idx, 1); + return del.length > 0; + } + }, { + key: "get", + value: function get(key, keepScalar) { + var idx = asItemIndex(key); + if (typeof idx !== 'number') return undefined; + var it = this.items[idx]; + return !keepScalar && it instanceof Scalar ? it.value : it; + } + }, { + key: "has", + value: function has(key) { + var idx = asItemIndex(key); + return typeof idx === 'number' && idx < this.items.length; + } + }, { + key: "set", + value: function set(key, value) { + var idx = asItemIndex(key); + if (typeof idx !== 'number') throw new Error("Expected a valid index, not ".concat(key, ".")); + this.items[idx] = value; + } + }, { + key: "toJSON", + value: function toJSON$1(_, ctx) { + var seq = []; + if (ctx && ctx.onCreate) ctx.onCreate(seq); + var i = 0; + + var _iterator = _createForOfIteratorHelper(this.items), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var item = _step.value; + seq.push(toJSON(item, String(i++), ctx)); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return seq; + } + }, { + key: "toString", + value: function toString(ctx, onComment, onChompKeep) { + if (!ctx) return JSON.stringify(this); + return _get(_getPrototypeOf(YAMLSeq.prototype), "toString", this).call(this, ctx, { + blockItem: function blockItem(n) { + return n.type === 'comment' ? n.str : "- ".concat(n.str); + }, + flowChars: { + start: '[', + end: ']' + }, + isMap: false, + itemIndent: (ctx.indent || '') + ' ' + }, onComment, onChompKeep); + } + }]); + + return YAMLSeq; +}(Collection); + +var stringifyKey = function stringifyKey(key, jsKey, ctx) { + if (jsKey === null) return ''; + if (_typeof(jsKey) !== 'object') return String(jsKey); + if (key instanceof Node && ctx && ctx.doc) return key.toString({ + anchors: Object.create(null), + doc: ctx.doc, + indent: '', + indentStep: ctx.indentStep, + inFlow: true, + inStringifyKey: true, + stringify: ctx.stringify + }); + return JSON.stringify(jsKey); +}; + +var Pair = /*#__PURE__*/function (_Node) { + _inherits(Pair, _Node); + + var _super = _createSuper(Pair); + + function Pair(key) { + var _this; + + var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + + _classCallCheck(this, Pair); + + _this = _super.call(this); + _this.key = key; + _this.value = value; + _this.type = Pair.Type.PAIR; + return _this; + } + + _createClass(Pair, [{ + key: "commentBefore", + get: function get() { + return this.key instanceof Node ? this.key.commentBefore : undefined; + }, + set: function set(cb) { + if (this.key == null) this.key = new Scalar(null); + if (this.key instanceof Node) this.key.commentBefore = cb;else { + var msg = 'Pair.commentBefore is an alias for Pair.key.commentBefore. To set it, the key must be a Node.'; + throw new Error(msg); + } + } + }, { + key: "addToJSMap", + value: function addToJSMap(ctx, map) { + var key = toJSON(this.key, '', ctx); + + if (map instanceof Map) { + var value = toJSON(this.value, key, ctx); + map.set(key, value); + } else if (map instanceof Set) { + map.add(key); + } else { + var stringKey = stringifyKey(this.key, key, ctx); + + var _value = toJSON(this.value, stringKey, ctx); + + if (stringKey in map) Object.defineProperty(map, stringKey, { + value: _value, + writable: true, + enumerable: true, + configurable: true + });else map[stringKey] = _value; + } + + return map; + } + }, { + key: "toJSON", + value: function toJSON(_, ctx) { + var pair = ctx && ctx.mapAsMap ? new Map() : {}; + return this.addToJSMap(ctx, pair); + } + }, { + key: "toString", + value: function toString(ctx, onComment, onChompKeep) { + if (!ctx || !ctx.doc) return JSON.stringify(this); + var _ctx$doc$options = ctx.doc.options, + indentSize = _ctx$doc$options.indent, + indentSeq = _ctx$doc$options.indentSeq, + simpleKeys = _ctx$doc$options.simpleKeys; + var key = this.key, + value = this.value; + var keyComment = key instanceof Node && key.comment; + + if (simpleKeys) { + if (keyComment) { + throw new Error('With simple keys, key nodes cannot have comments'); + } + + if (key instanceof Collection) { + var msg = 'With simple keys, collection cannot be used as a key value'; + throw new Error(msg); + } + } + + var explicitKey = !simpleKeys && (!key || keyComment || (key instanceof Node ? key instanceof Collection || key.type === Type.BLOCK_FOLDED || key.type === Type.BLOCK_LITERAL : _typeof(key) === 'object')); + var _ctx = ctx, + doc = _ctx.doc, + indent = _ctx.indent, + indentStep = _ctx.indentStep, + stringify = _ctx.stringify; + ctx = Object.assign({}, ctx, { + implicitKey: !explicitKey, + indent: indent + indentStep + }); + var chompKeep = false; + var str = stringify(key, ctx, function () { + return keyComment = null; + }, function () { + return chompKeep = true; + }); + str = addComment(str, ctx.indent, keyComment); + + if (!explicitKey && str.length > 1024) { + if (simpleKeys) throw new Error('With simple keys, single line scalar must not span more than 1024 characters'); + explicitKey = true; + } + + if (ctx.allNullValues && !simpleKeys) { + if (this.comment) { + str = addComment(str, ctx.indent, this.comment); + if (onComment) onComment(); + } else if (chompKeep && !keyComment && onChompKeep) onChompKeep(); + + return ctx.inFlow && !explicitKey ? str : "? ".concat(str); + } + + str = explicitKey ? "? ".concat(str, "\n").concat(indent, ":") : "".concat(str, ":"); + + if (this.comment) { + // expected (but not strictly required) to be a single-line comment + str = addComment(str, ctx.indent, this.comment); + if (onComment) onComment(); + } + + var vcb = ''; + var valueComment = null; + + if (value instanceof Node) { + if (value.spaceBefore) vcb = '\n'; + + if (value.commentBefore) { + var cs = value.commentBefore.replace(/^/gm, "".concat(ctx.indent, "#")); + vcb += "\n".concat(cs); + } + + valueComment = value.comment; + } else if (value && _typeof(value) === 'object') { + value = doc.schema.createNode(value, true); + } + + ctx.implicitKey = false; + if (!explicitKey && !this.comment && value instanceof Scalar) ctx.indentAtStart = str.length + 1; + chompKeep = false; + + if (!indentSeq && indentSize >= 2 && !ctx.inFlow && !explicitKey && value instanceof YAMLSeq && value.type !== Type.FLOW_SEQ && !value.tag && !doc.anchors.getName(value)) { + // If indentSeq === false, consider '- ' as part of indentation where possible + ctx.indent = ctx.indent.substr(2); + } + + var valueStr = stringify(value, ctx, function () { + return valueComment = null; + }, function () { + return chompKeep = true; + }); + var ws = ' '; + + if (vcb || this.comment) { + ws = "".concat(vcb, "\n").concat(ctx.indent); + } else if (!explicitKey && value instanceof Collection) { + var flow = valueStr[0] === '[' || valueStr[0] === '{'; + if (!flow || valueStr.includes('\n')) ws = "\n".concat(ctx.indent); + } else if (valueStr[0] === '\n') ws = ''; + + if (chompKeep && !valueComment && onChompKeep) onChompKeep(); + return addComment(str + ws + valueStr, ctx.indent, valueComment); + } + }]); + + return Pair; +}(Node); + +_defineProperty(Pair, "Type", { + PAIR: 'PAIR', + MERGE_PAIR: 'MERGE_PAIR' +}); + +var getAliasCount = function getAliasCount(node, anchors) { + if (node instanceof Alias) { + var anchor = anchors.get(node.source); + return anchor.count * anchor.aliasCount; + } else if (node instanceof Collection) { + var count = 0; + + var _iterator = _createForOfIteratorHelper(node.items), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var item = _step.value; + var c = getAliasCount(item, anchors); + if (c > count) count = c; + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return count; + } else if (node instanceof Pair) { + var kc = getAliasCount(node.key, anchors); + var vc = getAliasCount(node.value, anchors); + return Math.max(kc, vc); + } + + return 1; +}; + +var Alias = /*#__PURE__*/function (_Node) { + _inherits(Alias, _Node); + + var _super = _createSuper(Alias); + + function Alias(source) { + var _this; + + _classCallCheck(this, Alias); + + _this = _super.call(this); + _this.source = source; + _this.type = Type.ALIAS; + return _this; + } + + _createClass(Alias, [{ + key: "tag", + set: function set(t) { + throw new Error('Alias nodes cannot have tags'); + } + }, { + key: "toJSON", + value: function toJSON$1(arg, ctx) { + if (!ctx) return toJSON(this.source, arg, ctx); + var anchors = ctx.anchors, + maxAliasCount = ctx.maxAliasCount; + var anchor = anchors.get(this.source); + /* istanbul ignore if */ + + if (!anchor || anchor.res === undefined) { + var msg = 'This should not happen: Alias anchor was not resolved?'; + if (this.cstNode) throw new YAMLReferenceError(this.cstNode, msg);else throw new ReferenceError(msg); + } + + if (maxAliasCount >= 0) { + anchor.count += 1; + if (anchor.aliasCount === 0) anchor.aliasCount = getAliasCount(this.source, anchors); + + if (anchor.count * anchor.aliasCount > maxAliasCount) { + var _msg = 'Excessive alias count indicates a resource exhaustion attack'; + if (this.cstNode) throw new YAMLReferenceError(this.cstNode, _msg);else throw new ReferenceError(_msg); + } + } + + return anchor.res; + } // Only called when stringifying an alias mapping key while constructing + // Object output. + + }, { + key: "toString", + value: function toString(ctx) { + return Alias.stringify(this, ctx); + } + }], [{ + key: "stringify", + value: function stringify(_ref, _ref2) { + var range = _ref.range, + source = _ref.source; + var anchors = _ref2.anchors, + doc = _ref2.doc, + implicitKey = _ref2.implicitKey, + inStringifyKey = _ref2.inStringifyKey; + var anchor = Object.keys(anchors).find(function (a) { + return anchors[a] === source; + }); + if (!anchor && inStringifyKey) anchor = doc.anchors.getName(source) || doc.anchors.newName(); + if (anchor) return "*".concat(anchor).concat(implicitKey ? ' ' : ''); + var msg = doc.anchors.getName(source) ? 'Alias node must be after source node' : 'Source node not found for alias node'; + throw new Error("".concat(msg, " [").concat(range, "]")); + } + }]); + + return Alias; +}(Node); + +_defineProperty(Alias, "default", true); + +function findPair(items, key) { + var k = key instanceof Scalar ? key.value : key; + + var _iterator = _createForOfIteratorHelper(items), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var it = _step.value; + + if (it instanceof Pair) { + if (it.key === key || it.key === k) return it; + if (it.key && it.key.value === k) return it; + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return undefined; +} +var YAMLMap = /*#__PURE__*/function (_Collection) { + _inherits(YAMLMap, _Collection); + + var _super = _createSuper(YAMLMap); + + function YAMLMap() { + _classCallCheck(this, YAMLMap); + + return _super.apply(this, arguments); + } + + _createClass(YAMLMap, [{ + key: "add", + value: function add(pair, overwrite) { + if (!pair) pair = new Pair(pair);else if (!(pair instanceof Pair)) pair = new Pair(pair.key || pair, pair.value); + var prev = findPair(this.items, pair.key); + var sortEntries = this.schema && this.schema.sortMapEntries; + + if (prev) { + if (overwrite) prev.value = pair.value;else throw new Error("Key ".concat(pair.key, " already set")); + } else if (sortEntries) { + var i = this.items.findIndex(function (item) { + return sortEntries(pair, item) < 0; + }); + if (i === -1) this.items.push(pair);else this.items.splice(i, 0, pair); + } else { + this.items.push(pair); + } + } + }, { + key: "delete", + value: function _delete(key) { + var it = findPair(this.items, key); + if (!it) return false; + var del = this.items.splice(this.items.indexOf(it), 1); + return del.length > 0; + } + }, { + key: "get", + value: function get(key, keepScalar) { + var it = findPair(this.items, key); + var node = it && it.value; + return !keepScalar && node instanceof Scalar ? node.value : node; + } + }, { + key: "has", + value: function has(key) { + return !!findPair(this.items, key); + } + }, { + key: "set", + value: function set(key, value) { + this.add(new Pair(key, value), true); + } + /** + * @param {*} arg ignored + * @param {*} ctx Conversion context, originally set in Document#toJSON() + * @param {Class} Type If set, forces the returned collection type + * @returns {*} Instance of Type, Map, or Object + */ + + }, { + key: "toJSON", + value: function toJSON(_, ctx, Type) { + var map = Type ? new Type() : ctx && ctx.mapAsMap ? new Map() : {}; + if (ctx && ctx.onCreate) ctx.onCreate(map); + + var _iterator2 = _createForOfIteratorHelper(this.items), + _step2; + + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var item = _step2.value; + item.addToJSMap(ctx, map); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + + return map; + } + }, { + key: "toString", + value: function toString(ctx, onComment, onChompKeep) { + if (!ctx) return JSON.stringify(this); + + var _iterator3 = _createForOfIteratorHelper(this.items), + _step3; + + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var item = _step3.value; + if (!(item instanceof Pair)) throw new Error("Map items must all be pairs; found ".concat(JSON.stringify(item), " instead")); + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + + return _get(_getPrototypeOf(YAMLMap.prototype), "toString", this).call(this, ctx, { + blockItem: function blockItem(n) { + return n.str; + }, + flowChars: { + start: '{', + end: '}' + }, + isMap: true, + itemIndent: ctx.indent || '' + }, onComment, onChompKeep); + } + }]); + + return YAMLMap; +}(Collection); + +var MERGE_KEY = '<<'; +var Merge = /*#__PURE__*/function (_Pair) { + _inherits(Merge, _Pair); + + var _super = _createSuper(Merge); + + function Merge(pair) { + var _this; + + _classCallCheck(this, Merge); + + if (pair instanceof Pair) { + var seq = pair.value; + + if (!(seq instanceof YAMLSeq)) { + seq = new YAMLSeq(); + seq.items.push(pair.value); + seq.range = pair.value.range; + } + + _this = _super.call(this, pair.key, seq); + _this.range = pair.range; + } else { + _this = _super.call(this, new Scalar(MERGE_KEY), new YAMLSeq()); + } + + _this.type = Pair.Type.MERGE_PAIR; + return _possibleConstructorReturn(_this); + } // If the value associated with a merge key is a single mapping node, each of + // its key/value pairs is inserted into the current mapping, unless the key + // already exists in it. If the value associated with the merge key is a + // sequence, then this sequence is expected to contain mapping nodes and each + // of these nodes is merged in turn according to its order in the sequence. + // Keys in mapping nodes earlier in the sequence override keys specified in + // later mapping nodes. -- http://yaml.org/type/merge.html + + + _createClass(Merge, [{ + key: "addToJSMap", + value: function addToJSMap(ctx, map) { + var _iterator = _createForOfIteratorHelper(this.value.items), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var source = _step.value.source; + if (!(source instanceof YAMLMap)) throw new Error('Merge sources must be maps'); + var srcMap = source.toJSON(null, ctx, Map); + + var _iterator2 = _createForOfIteratorHelper(srcMap), + _step2; + + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var _step2$value = _slicedToArray(_step2.value, 2), + key = _step2$value[0], + value = _step2$value[1]; + + if (map instanceof Map) { + if (!map.has(key)) map.set(key, value); + } else if (map instanceof Set) { + map.add(key); + } else if (!Object.prototype.hasOwnProperty.call(map, key)) { + Object.defineProperty(map, key, { + value: value, + writable: true, + enumerable: true, + configurable: true + }); + } + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return map; + } + }, { + key: "toString", + value: function toString(ctx, onComment) { + var seq = this.value; + if (seq.items.length > 1) return _get(_getPrototypeOf(Merge.prototype), "toString", this).call(this, ctx, onComment); + this.value = seq.items[0]; + + var str = _get(_getPrototypeOf(Merge.prototype), "toString", this).call(this, ctx, onComment); + + this.value = seq; + return str; + } + }]); + + return Merge; +}(Pair); + +var binaryOptions = { + defaultType: Type.BLOCK_LITERAL, + lineWidth: 76 +}; +var boolOptions = { + trueStr: 'true', + falseStr: 'false' +}; +var intOptions = { + asBigInt: false +}; +var nullOptions = { + nullStr: 'null' +}; +var strOptions = { + defaultType: Type.PLAIN, + doubleQuoted: { + jsonEncoding: false, + minMultiLineLength: 40 + }, + fold: { + lineWidth: 80, + minContentWidth: 20 + } +}; + +function resolveScalar(str, tags, scalarFallback) { + var _iterator = _createForOfIteratorHelper(tags), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _step$value = _step.value, + format = _step$value.format, + test = _step$value.test, + resolve = _step$value.resolve; + + if (test) { + var match = str.match(test); + + if (match) { + var res = resolve.apply(null, match); + if (!(res instanceof Scalar)) res = new Scalar(res); + if (format) res.format = format; + return res; + } + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + if (scalarFallback) str = scalarFallback(str); + return new Scalar(str); +} + +var FOLD_FLOW = 'flow'; +var FOLD_BLOCK = 'block'; +var FOLD_QUOTED = 'quoted'; // presumes i+1 is at the start of a line +// returns index of last newline in more-indented block + +var consumeMoreIndentedLines = function consumeMoreIndentedLines(text, i) { + var ch = text[i + 1]; + + while (ch === ' ' || ch === '\t') { + do { + ch = text[i += 1]; + } while (ch && ch !== '\n'); + + ch = text[i + 1]; + } + + return i; +}; +/** + * Tries to keep input at up to `lineWidth` characters, splitting only on spaces + * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are + * terminated with `\n` and started with `indent`. + * + * @param {string} text + * @param {string} indent + * @param {string} [mode='flow'] `'block'` prevents more-indented lines + * from being folded; `'quoted'` allows for `\` escapes, including escaped + * newlines + * @param {Object} options + * @param {number} [options.indentAtStart] Accounts for leading contents on + * the first line, defaulting to `indent.length` + * @param {number} [options.lineWidth=80] + * @param {number} [options.minContentWidth=20] Allow highly indented lines to + * stretch the line width or indent content from the start + * @param {function} options.onFold Called once if the text is folded + * @param {function} options.onFold Called once if any line of text exceeds + * lineWidth characters + */ + + +function foldFlowLines(text, indent, mode, _ref) { + var indentAtStart = _ref.indentAtStart, + _ref$lineWidth = _ref.lineWidth, + lineWidth = _ref$lineWidth === void 0 ? 80 : _ref$lineWidth, + _ref$minContentWidth = _ref.minContentWidth, + minContentWidth = _ref$minContentWidth === void 0 ? 20 : _ref$minContentWidth, + onFold = _ref.onFold, + onOverflow = _ref.onOverflow; + if (!lineWidth || lineWidth < 0) return text; + var endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length); + if (text.length <= endStep) return text; + var folds = []; + var escapedFolds = {}; + var end = lineWidth - indent.length; + + if (typeof indentAtStart === 'number') { + if (indentAtStart > lineWidth - Math.max(2, minContentWidth)) folds.push(0);else end = lineWidth - indentAtStart; + } + + var split = undefined; + var prev = undefined; + var overflow = false; + var i = -1; + var escStart = -1; + var escEnd = -1; + + if (mode === FOLD_BLOCK) { + i = consumeMoreIndentedLines(text, i); + if (i !== -1) end = i + endStep; + } + + for (var ch; ch = text[i += 1];) { + if (mode === FOLD_QUOTED && ch === '\\') { + escStart = i; + + switch (text[i + 1]) { + case 'x': + i += 3; + break; + + case 'u': + i += 5; + break; + + case 'U': + i += 9; + break; + + default: + i += 1; + } + + escEnd = i; + } + + if (ch === '\n') { + if (mode === FOLD_BLOCK) i = consumeMoreIndentedLines(text, i); + end = i + endStep; + split = undefined; + } else { + if (ch === ' ' && prev && prev !== ' ' && prev !== '\n' && prev !== '\t') { + // space surrounded by non-space can be replaced with newline + indent + var next = text[i + 1]; + if (next && next !== ' ' && next !== '\n' && next !== '\t') split = i; + } + + if (i >= end) { + if (split) { + folds.push(split); + end = split + endStep; + split = undefined; + } else if (mode === FOLD_QUOTED) { + // white-space collected at end may stretch past lineWidth + while (prev === ' ' || prev === '\t') { + prev = ch; + ch = text[i += 1]; + overflow = true; + } // Account for newline escape, but don't break preceding escape + + + var j = i > escEnd + 1 ? i - 2 : escStart - 1; // Bail out if lineWidth & minContentWidth are shorter than an escape string + + if (escapedFolds[j]) return text; + folds.push(j); + escapedFolds[j] = true; + end = j + endStep; + split = undefined; + } else { + overflow = true; + } + } + } + + prev = ch; + } + + if (overflow && onOverflow) onOverflow(); + if (folds.length === 0) return text; + if (onFold) onFold(); + var res = text.slice(0, folds[0]); + + for (var _i = 0; _i < folds.length; ++_i) { + var fold = folds[_i]; + + var _end = folds[_i + 1] || text.length; + + if (fold === 0) res = "\n".concat(indent).concat(text.slice(0, _end));else { + if (mode === FOLD_QUOTED && escapedFolds[fold]) res += "".concat(text[fold], "\\"); + res += "\n".concat(indent).concat(text.slice(fold + 1, _end)); + } + } + + return res; +} + +var getFoldOptions = function getFoldOptions(_ref) { + var indentAtStart = _ref.indentAtStart; + return indentAtStart ? Object.assign({ + indentAtStart: indentAtStart + }, strOptions.fold) : strOptions.fold; +}; // Also checks for lines starting with %, as parsing the output as YAML 1.1 will +// presume that's starting a new document. + + +var containsDocumentMarker = function containsDocumentMarker(str) { + return /^(%|---|\.\.\.)/m.test(str); +}; + +function lineLengthOverLimit(str, lineWidth, indentLength) { + if (!lineWidth || lineWidth < 0) return false; + var limit = lineWidth - indentLength; + var strLen = str.length; + if (strLen <= limit) return false; + + for (var i = 0, start = 0; i < strLen; ++i) { + if (str[i] === '\n') { + if (i - start > limit) return true; + start = i + 1; + if (strLen - start <= limit) return false; + } + } + + return true; +} + +function doubleQuotedString(value, ctx) { + var implicitKey = ctx.implicitKey; + var _strOptions$doubleQuo = strOptions.doubleQuoted, + jsonEncoding = _strOptions$doubleQuo.jsonEncoding, + minMultiLineLength = _strOptions$doubleQuo.minMultiLineLength; + var json = JSON.stringify(value); + if (jsonEncoding) return json; + var indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : ''); + var str = ''; + var start = 0; + + for (var i = 0, ch = json[i]; ch; ch = json[++i]) { + if (ch === ' ' && json[i + 1] === '\\' && json[i + 2] === 'n') { + // space before newline needs to be escaped to not be folded + str += json.slice(start, i) + '\\ '; + i += 1; + start = i; + ch = '\\'; + } + + if (ch === '\\') switch (json[i + 1]) { + case 'u': + { + str += json.slice(start, i); + var code = json.substr(i + 2, 4); + + switch (code) { + case '0000': + str += '\\0'; + break; + + case '0007': + str += '\\a'; + break; + + case '000b': + str += '\\v'; + break; + + case '001b': + str += '\\e'; + break; + + case '0085': + str += '\\N'; + break; + + case '00a0': + str += '\\_'; + break; + + case '2028': + str += '\\L'; + break; + + case '2029': + str += '\\P'; + break; + + default: + if (code.substr(0, 2) === '00') str += '\\x' + code.substr(2);else str += json.substr(i, 6); + } + + i += 5; + start = i + 1; + } + break; + + case 'n': + if (implicitKey || json[i + 2] === '"' || json.length < minMultiLineLength) { + i += 1; + } else { + // folding will eat first newline + str += json.slice(start, i) + '\n\n'; + + while (json[i + 2] === '\\' && json[i + 3] === 'n' && json[i + 4] !== '"') { + str += '\n'; + i += 2; + } + + str += indent; // space after newline needs to be escaped to not be folded + + if (json[i + 2] === ' ') str += '\\'; + i += 1; + start = i + 1; + } + + break; + + default: + i += 1; + } + } + + str = start ? str + json.slice(start) : json; + return implicitKey ? str : foldFlowLines(str, indent, FOLD_QUOTED, getFoldOptions(ctx)); +} + +function singleQuotedString(value, ctx) { + if (ctx.implicitKey) { + if (/\n/.test(value)) return doubleQuotedString(value, ctx); + } else { + // single quoted string can't have leading or trailing whitespace around newline + if (/[ \t]\n|\n[ \t]/.test(value)) return doubleQuotedString(value, ctx); + } + + var indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : ''); + var res = "'" + value.replace(/'/g, "''").replace(/\n+/g, "$&\n".concat(indent)) + "'"; + return ctx.implicitKey ? res : foldFlowLines(res, indent, FOLD_FLOW, getFoldOptions(ctx)); +} + +function blockString(_ref2, ctx, onComment, onChompKeep) { + var comment = _ref2.comment, + type = _ref2.type, + value = _ref2.value; + + // 1. Block can't end in whitespace unless the last line is non-empty. + // 2. Strings consisting of only whitespace are best rendered explicitly. + if (/\n[\t ]+$/.test(value) || /^\s*$/.test(value)) { + return doubleQuotedString(value, ctx); + } + + var indent = ctx.indent || (ctx.forceBlockIndent || containsDocumentMarker(value) ? ' ' : ''); + var indentSize = indent ? '2' : '1'; // root is at -1 + + var literal = type === Type.BLOCK_FOLDED ? false : type === Type.BLOCK_LITERAL ? true : !lineLengthOverLimit(value, strOptions.fold.lineWidth, indent.length); + var header = literal ? '|' : '>'; + if (!value) return header + '\n'; + var wsStart = ''; + var wsEnd = ''; + value = value.replace(/[\n\t ]*$/, function (ws) { + var n = ws.indexOf('\n'); + + if (n === -1) { + header += '-'; // strip + } else if (value === ws || n !== ws.length - 1) { + header += '+'; // keep + + if (onChompKeep) onChompKeep(); + } + + wsEnd = ws.replace(/\n$/, ''); + return ''; + }).replace(/^[\n ]*/, function (ws) { + if (ws.indexOf(' ') !== -1) header += indentSize; + var m = ws.match(/ +$/); + + if (m) { + wsStart = ws.slice(0, -m[0].length); + return m[0]; + } else { + wsStart = ws; + return ''; + } + }); + if (wsEnd) wsEnd = wsEnd.replace(/\n+(?!\n|$)/g, "$&".concat(indent)); + if (wsStart) wsStart = wsStart.replace(/\n+/g, "$&".concat(indent)); + + if (comment) { + header += ' #' + comment.replace(/ ?[\r\n]+/g, ' '); + if (onComment) onComment(); + } + + if (!value) return "".concat(header).concat(indentSize, "\n").concat(indent).concat(wsEnd); + + if (literal) { + value = value.replace(/\n+/g, "$&".concat(indent)); + return "".concat(header, "\n").concat(indent).concat(wsStart).concat(value).concat(wsEnd); + } + + value = value.replace(/\n+/g, '\n$&').replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g, '$1$2') // more-indented lines aren't folded + // ^ ind.line ^ empty ^ capture next empty lines only at end of indent + .replace(/\n+/g, "$&".concat(indent)); + var body = foldFlowLines("".concat(wsStart).concat(value).concat(wsEnd), indent, FOLD_BLOCK, strOptions.fold); + return "".concat(header, "\n").concat(indent).concat(body); +} + +function plainString(item, ctx, onComment, onChompKeep) { + var comment = item.comment, + type = item.type, + value = item.value; + var actualString = ctx.actualString, + implicitKey = ctx.implicitKey, + indent = ctx.indent, + inFlow = ctx.inFlow; + + if (implicitKey && /[\n[\]{},]/.test(value) || inFlow && /[[\]{},]/.test(value)) { + return doubleQuotedString(value, ctx); + } + + if (!value || /^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(value)) { + // not allowed: + // - empty string, '-' or '?' + // - start with an indicator character (except [?:-]) or /[?-] / + // - '\n ', ': ' or ' \n' anywhere + // - '#' not preceded by a non-space char + // - end with ' ' or ':' + return implicitKey || inFlow || value.indexOf('\n') === -1 ? value.indexOf('"') !== -1 && value.indexOf("'") === -1 ? singleQuotedString(value, ctx) : doubleQuotedString(value, ctx) : blockString(item, ctx, onComment, onChompKeep); + } + + if (!implicitKey && !inFlow && type !== Type.PLAIN && value.indexOf('\n') !== -1) { + // Where allowed & type not set explicitly, prefer block style for multiline strings + return blockString(item, ctx, onComment, onChompKeep); + } + + if (indent === '' && containsDocumentMarker(value)) { + ctx.forceBlockIndent = true; + return blockString(item, ctx, onComment, onChompKeep); + } + + var str = value.replace(/\n+/g, "$&\n".concat(indent)); // Verify that output will be parsed as a string, as e.g. plain numbers and + // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'), + // and others in v1.1. + + if (actualString) { + var tags = ctx.doc.schema.tags; + var resolved = resolveScalar(str, tags, tags.scalarFallback).value; + if (typeof resolved !== 'string') return doubleQuotedString(value, ctx); + } + + var body = implicitKey ? str : foldFlowLines(str, indent, FOLD_FLOW, getFoldOptions(ctx)); + + if (comment && !inFlow && (body.indexOf('\n') !== -1 || comment.indexOf('\n') !== -1)) { + if (onComment) onComment(); + return addCommentBefore(body, indent, comment); + } + + return body; +} + +function stringifyString(item, ctx, onComment, onChompKeep) { + var defaultType = strOptions.defaultType; + var implicitKey = ctx.implicitKey, + inFlow = ctx.inFlow; + var _item = item, + type = _item.type, + value = _item.value; + + if (typeof value !== 'string') { + value = String(value); + item = Object.assign({}, item, { + value: value + }); + } + + var _stringify = function _stringify(_type) { + switch (_type) { + case Type.BLOCK_FOLDED: + case Type.BLOCK_LITERAL: + return blockString(item, ctx, onComment, onChompKeep); + + case Type.QUOTE_DOUBLE: + return doubleQuotedString(value, ctx); + + case Type.QUOTE_SINGLE: + return singleQuotedString(value, ctx); + + case Type.PLAIN: + return plainString(item, ctx, onComment, onChompKeep); + + default: + return null; + } + }; + + if (type !== Type.QUOTE_DOUBLE && /[\x00-\x08\x0b-\x1f\x7f-\x9f]/.test(value)) { + // force double quotes on control characters + type = Type.QUOTE_DOUBLE; + } else if ((implicitKey || inFlow) && (type === Type.BLOCK_FOLDED || type === Type.BLOCK_LITERAL)) { + // should not happen; blocks are not valid inside flow containers + type = Type.QUOTE_DOUBLE; + } + + var res = _stringify(type); + + if (res === null) { + res = _stringify(defaultType); + if (res === null) throw new Error("Unsupported default string type ".concat(defaultType)); + } + + return res; +} + +function stringifyNumber(_ref) { + var format = _ref.format, + minFractionDigits = _ref.minFractionDigits, + tag = _ref.tag, + value = _ref.value; + if (typeof value === 'bigint') return String(value); + if (!isFinite(value)) return isNaN(value) ? '.nan' : value < 0 ? '-.inf' : '.inf'; + var n = JSON.stringify(value); + + if (!format && minFractionDigits && (!tag || tag === 'tag:yaml.org,2002:float') && /^\d/.test(n)) { + var i = n.indexOf('.'); + + if (i < 0) { + i = n.length; + n += '.'; + } + + var d = minFractionDigits - (n.length - i - 1); + + while (d-- > 0) { + n += '0'; + } + } + + return n; +} + +function checkFlowCollectionEnd(errors, cst) { + var char, name; + + switch (cst.type) { + case Type.FLOW_MAP: + char = '}'; + name = 'flow map'; + break; + + case Type.FLOW_SEQ: + char = ']'; + name = 'flow sequence'; + break; + + default: + errors.push(new YAMLSemanticError(cst, 'Not a flow collection!?')); + return; + } + + var lastItem; + + for (var i = cst.items.length - 1; i >= 0; --i) { + var item = cst.items[i]; + + if (!item || item.type !== Type.COMMENT) { + lastItem = item; + break; + } + } + + if (lastItem && lastItem.char !== char) { + var msg = "Expected ".concat(name, " to end with ").concat(char); + var err; + + if (typeof lastItem.offset === 'number') { + err = new YAMLSemanticError(cst, msg); + err.offset = lastItem.offset + 1; + } else { + err = new YAMLSemanticError(lastItem, msg); + if (lastItem.range && lastItem.range.end) err.offset = lastItem.range.end - lastItem.range.start; + } + + errors.push(err); + } +} +function checkFlowCommentSpace(errors, comment) { + var prev = comment.context.src[comment.range.start - 1]; + + if (prev !== '\n' && prev !== '\t' && prev !== ' ') { + var msg = 'Comments must be separated from other tokens by white space characters'; + errors.push(new YAMLSemanticError(comment, msg)); + } +} +function getLongKeyError(source, key) { + var sk = String(key); + var k = sk.substr(0, 8) + '...' + sk.substr(-8); + return new YAMLSemanticError(source, "The \"".concat(k, "\" key is too long")); +} +function resolveComments(collection, comments) { + var _iterator = _createForOfIteratorHelper(comments), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _step$value = _step.value, + afterKey = _step$value.afterKey, + before = _step$value.before, + comment = _step$value.comment; + var item = collection.items[before]; + + if (!item) { + if (comment !== undefined) { + if (collection.comment) collection.comment += '\n' + comment;else collection.comment = comment; + } + } else { + if (afterKey && item.value) item = item.value; + + if (comment === undefined) { + if (afterKey || !item.commentBefore) item.spaceBefore = true; + } else { + if (item.commentBefore) item.commentBefore += '\n' + comment;else item.commentBefore = comment; + } + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } +} + +// on error, will return { str: string, errors: Error[] } +function resolveString(doc, node) { + var res = node.strValue; + if (!res) return ''; + if (typeof res === 'string') return res; + res.errors.forEach(function (error) { + if (!error.source) error.source = node; + doc.errors.push(error); + }); + return res.str; +} + +function resolveTagHandle(doc, node) { + var _node$tag = node.tag, + handle = _node$tag.handle, + suffix = _node$tag.suffix; + var prefix = doc.tagPrefixes.find(function (p) { + return p.handle === handle; + }); + + if (!prefix) { + var dtp = doc.getDefaults().tagPrefixes; + if (dtp) prefix = dtp.find(function (p) { + return p.handle === handle; + }); + if (!prefix) throw new YAMLSemanticError(node, "The ".concat(handle, " tag handle is non-default and was not declared.")); + } + + if (!suffix) throw new YAMLSemanticError(node, "The ".concat(handle, " tag has no suffix.")); + + if (handle === '!' && (doc.version || doc.options.version) === '1.0') { + if (suffix[0] === '^') { + doc.warnings.push(new YAMLWarning(node, 'YAML 1.0 ^ tag expansion is not supported')); + return suffix; + } + + if (/[:/]/.test(suffix)) { + // word/foo -> tag:word.yaml.org,2002:foo + var vocab = suffix.match(/^([a-z0-9-]+)\/(.*)/i); + return vocab ? "tag:".concat(vocab[1], ".yaml.org,2002:").concat(vocab[2]) : "tag:".concat(suffix); + } + } + + return prefix.prefix + decodeURIComponent(suffix); +} + +function resolveTagName(doc, node) { + var tag = node.tag, + type = node.type; + var nonSpecific = false; + + if (tag) { + var handle = tag.handle, + suffix = tag.suffix, + verbatim = tag.verbatim; + + if (verbatim) { + if (verbatim !== '!' && verbatim !== '!!') return verbatim; + var msg = "Verbatim tags aren't resolved, so ".concat(verbatim, " is invalid."); + doc.errors.push(new YAMLSemanticError(node, msg)); + } else if (handle === '!' && !suffix) { + nonSpecific = true; + } else { + try { + return resolveTagHandle(doc, node); + } catch (error) { + doc.errors.push(error); + } + } + } + + switch (type) { + case Type.BLOCK_FOLDED: + case Type.BLOCK_LITERAL: + case Type.QUOTE_DOUBLE: + case Type.QUOTE_SINGLE: + return defaultTags.STR; + + case Type.FLOW_MAP: + case Type.MAP: + return defaultTags.MAP; + + case Type.FLOW_SEQ: + case Type.SEQ: + return defaultTags.SEQ; + + case Type.PLAIN: + return nonSpecific ? defaultTags.STR : null; + + default: + return null; + } +} + +function resolveByTagName(doc, node, tagName) { + var tags = doc.schema.tags; + var matchWithTest = []; + + var _iterator = _createForOfIteratorHelper(tags), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var tag = _step.value; + + if (tag.tag === tagName) { + if (tag.test) matchWithTest.push(tag);else { + var res = tag.resolve(doc, node); + return res instanceof Collection ? res : new Scalar(res); + } + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + var str = resolveString(doc, node); + if (typeof str === 'string' && matchWithTest.length > 0) return resolveScalar(str, matchWithTest, tags.scalarFallback); + return null; +} + +function getFallbackTagName(_ref) { + var type = _ref.type; + + switch (type) { + case Type.FLOW_MAP: + case Type.MAP: + return defaultTags.MAP; + + case Type.FLOW_SEQ: + case Type.SEQ: + return defaultTags.SEQ; + + default: + return defaultTags.STR; + } +} + +function resolveTag(doc, node, tagName) { + try { + var res = resolveByTagName(doc, node, tagName); + + if (res) { + if (tagName && node.tag) res.tag = tagName; + return res; + } + } catch (error) { + /* istanbul ignore if */ + if (!error.source) error.source = node; + doc.errors.push(error); + return null; + } + + try { + var fallback = getFallbackTagName(node); + if (!fallback) throw new Error("The tag ".concat(tagName, " is unavailable")); + var msg = "The tag ".concat(tagName, " is unavailable, falling back to ").concat(fallback); + doc.warnings.push(new YAMLWarning(node, msg)); + + var _res = resolveByTagName(doc, node, fallback); + + _res.tag = tagName; + return _res; + } catch (error) { + var refError = new YAMLReferenceError(node, error.message); + refError.stack = error.stack; + doc.errors.push(refError); + return null; + } +} + +var isCollectionItem = function isCollectionItem(node) { + if (!node) return false; + var type = node.type; + return type === Type.MAP_KEY || type === Type.MAP_VALUE || type === Type.SEQ_ITEM; +}; + +function resolveNodeProps(errors, node) { + var comments = { + before: [], + after: [] + }; + var hasAnchor = false; + var hasTag = false; + var props = isCollectionItem(node.context.parent) ? node.context.parent.props.concat(node.props) : node.props; + + var _iterator = _createForOfIteratorHelper(props), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _step$value = _step.value, + start = _step$value.start, + end = _step$value.end; + + switch (node.context.src[start]) { + case Char.COMMENT: + { + if (!node.commentHasRequiredWhitespace(start)) { + var msg = 'Comments must be separated from other tokens by white space characters'; + errors.push(new YAMLSemanticError(node, msg)); + } + + var header = node.header, + valueRange = node.valueRange; + var cc = valueRange && (start > valueRange.start || header && start > header.start) ? comments.after : comments.before; + cc.push(node.context.src.slice(start + 1, end)); + break; + } + // Actual anchor & tag resolution is handled by schema, here we just complain + + case Char.ANCHOR: + if (hasAnchor) { + var _msg = 'A node can have at most one anchor'; + errors.push(new YAMLSemanticError(node, _msg)); + } + + hasAnchor = true; + break; + + case Char.TAG: + if (hasTag) { + var _msg2 = 'A node can have at most one tag'; + errors.push(new YAMLSemanticError(node, _msg2)); + } + + hasTag = true; + break; + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return { + comments: comments, + hasAnchor: hasAnchor, + hasTag: hasTag + }; +} + +function resolveNodeValue(doc, node) { + var anchors = doc.anchors, + errors = doc.errors, + schema = doc.schema; + + if (node.type === Type.ALIAS) { + var name = node.rawValue; + var src = anchors.getNode(name); + + if (!src) { + var msg = "Aliased anchor not found: ".concat(name); + errors.push(new YAMLReferenceError(node, msg)); + return null; + } // Lazy resolution for circular references + + + var res = new Alias(src); + + anchors._cstAliases.push(res); + + return res; + } + + var tagName = resolveTagName(doc, node); + if (tagName) return resolveTag(doc, node, tagName); + + if (node.type !== Type.PLAIN) { + var _msg3 = "Failed to resolve ".concat(node.type, " node here"); + + errors.push(new YAMLSyntaxError(node, _msg3)); + return null; + } + + try { + var str = resolveString(doc, node); + return resolveScalar(str, schema.tags, schema.tags.scalarFallback); + } catch (error) { + if (!error.source) error.source = node; + errors.push(error); + return null; + } +} // sets node.resolved on success + + +function resolveNode(doc, node) { + if (!node) return null; + if (node.error) doc.errors.push(node.error); + + var _resolveNodeProps = resolveNodeProps(doc.errors, node), + comments = _resolveNodeProps.comments, + hasAnchor = _resolveNodeProps.hasAnchor, + hasTag = _resolveNodeProps.hasTag; + + if (hasAnchor) { + var anchors = doc.anchors; + var name = node.anchor; + var prev = anchors.getNode(name); // At this point, aliases for any preceding node with the same anchor + // name have already been resolved, so it may safely be renamed. + + if (prev) anchors.map[anchors.newName(name)] = prev; // During parsing, we need to store the CST node in anchors.map as + // anchors need to be available during resolution to allow for + // circular references. + + anchors.map[name] = node; + } + + if (node.type === Type.ALIAS && (hasAnchor || hasTag)) { + var msg = 'An alias node must not specify any properties'; + doc.errors.push(new YAMLSemanticError(node, msg)); + } + + var res = resolveNodeValue(doc, node); + + if (res) { + res.range = [node.range.start, node.range.end]; + if (doc.options.keepCstNodes) res.cstNode = node; + if (doc.options.keepNodeTypes) res.type = node.type; + var cb = comments.before.join('\n'); + + if (cb) { + res.commentBefore = res.commentBefore ? "".concat(res.commentBefore, "\n").concat(cb) : cb; + } + + var ca = comments.after.join('\n'); + if (ca) res.comment = res.comment ? "".concat(res.comment, "\n").concat(ca) : ca; + } + + return node.resolved = res; +} + +function resolveMap(doc, cst) { + if (cst.type !== Type.MAP && cst.type !== Type.FLOW_MAP) { + var msg = "A ".concat(cst.type, " node cannot be resolved as a mapping"); + doc.errors.push(new YAMLSyntaxError(cst, msg)); + return null; + } + + var _ref = cst.type === Type.FLOW_MAP ? resolveFlowMapItems(doc, cst) : resolveBlockMapItems(doc, cst), + comments = _ref.comments, + items = _ref.items; + + var map = new YAMLMap(); + map.items = items; + resolveComments(map, comments); + var hasCollectionKey = false; + + for (var i = 0; i < items.length; ++i) { + var iKey = items[i].key; + if (iKey instanceof Collection) hasCollectionKey = true; + + if (doc.schema.merge && iKey && iKey.value === MERGE_KEY) { + items[i] = new Merge(items[i]); + var sources = items[i].value.items; + var error = null; + sources.some(function (node) { + if (node instanceof Alias) { + // During parsing, alias sources are CST nodes; to account for + // circular references their resolved values can't be used here. + var type = node.source.type; + if (type === Type.MAP || type === Type.FLOW_MAP) return false; + return error = 'Merge nodes aliases can only point to maps'; + } + + return error = 'Merge nodes can only have Alias nodes as values'; + }); + if (error) doc.errors.push(new YAMLSemanticError(cst, error)); + } else { + for (var j = i + 1; j < items.length; ++j) { + var jKey = items[j].key; + + if (iKey === jKey || iKey && jKey && Object.prototype.hasOwnProperty.call(iKey, 'value') && iKey.value === jKey.value) { + var _msg = "Map keys must be unique; \"".concat(iKey, "\" is repeated"); + + doc.errors.push(new YAMLSemanticError(cst, _msg)); + break; + } + } + } + } + + if (hasCollectionKey && !doc.options.mapAsMap) { + var warn = 'Keys with collection values will be stringified as YAML due to JS Object restrictions. Use mapAsMap: true to avoid this.'; + doc.warnings.push(new YAMLWarning(cst, warn)); + } + + cst.resolved = map; + return map; +} + +var valueHasPairComment = function valueHasPairComment(_ref2) { + var _ref2$context = _ref2.context, + lineStart = _ref2$context.lineStart, + node = _ref2$context.node, + src = _ref2$context.src, + props = _ref2.props; + if (props.length === 0) return false; + var start = props[0].start; + if (node && start > node.valueRange.start) return false; + if (src[start] !== Char.COMMENT) return false; + + for (var i = lineStart; i < start; ++i) { + if (src[i] === '\n') return false; + } + + return true; +}; + +function resolvePairComment(item, pair) { + if (!valueHasPairComment(item)) return; + var comment = item.getPropValue(0, Char.COMMENT, true); + var found = false; + var cb = pair.value.commentBefore; + + if (cb && cb.startsWith(comment)) { + pair.value.commentBefore = cb.substr(comment.length + 1); + found = true; + } else { + var cc = pair.value.comment; + + if (!item.node && cc && cc.startsWith(comment)) { + pair.value.comment = cc.substr(comment.length + 1); + found = true; + } + } + + if (found) pair.comment = comment; +} + +function resolveBlockMapItems(doc, cst) { + var comments = []; + var items = []; + var key = undefined; + var keyStart = null; + + for (var i = 0; i < cst.items.length; ++i) { + var item = cst.items[i]; + + switch (item.type) { + case Type.BLANK_LINE: + comments.push({ + afterKey: !!key, + before: items.length + }); + break; + + case Type.COMMENT: + comments.push({ + afterKey: !!key, + before: items.length, + comment: item.comment + }); + break; + + case Type.MAP_KEY: + if (key !== undefined) items.push(new Pair(key)); + if (item.error) doc.errors.push(item.error); + key = resolveNode(doc, item.node); + keyStart = null; + break; + + case Type.MAP_VALUE: + { + if (key === undefined) key = null; + if (item.error) doc.errors.push(item.error); + + if (!item.context.atLineStart && item.node && item.node.type === Type.MAP && !item.node.context.atLineStart) { + var msg = 'Nested mappings are not allowed in compact mappings'; + doc.errors.push(new YAMLSemanticError(item.node, msg)); + } + + var valueNode = item.node; + + if (!valueNode && item.props.length > 0) { + // Comments on an empty mapping value need to be preserved, so we + // need to construct a minimal empty node here to use instead of the + // missing `item.node`. -- eemeli/yaml#19 + valueNode = new PlainValue(Type.PLAIN, []); + valueNode.context = { + parent: item, + src: item.context.src + }; + var pos = item.range.start + 1; + valueNode.range = { + start: pos, + end: pos + }; + valueNode.valueRange = { + start: pos, + end: pos + }; + + if (typeof item.range.origStart === 'number') { + var origPos = item.range.origStart + 1; + valueNode.range.origStart = valueNode.range.origEnd = origPos; + valueNode.valueRange.origStart = valueNode.valueRange.origEnd = origPos; + } + } + + var pair = new Pair(key, resolveNode(doc, valueNode)); + resolvePairComment(item, pair); + items.push(pair); + + if (key && typeof keyStart === 'number') { + if (item.range.start > keyStart + 1024) doc.errors.push(getLongKeyError(cst, key)); + } + + key = undefined; + keyStart = null; + } + break; + + default: + if (key !== undefined) items.push(new Pair(key)); + key = resolveNode(doc, item); + keyStart = item.range.start; + if (item.error) doc.errors.push(item.error); + + next: for (var j = i + 1;; ++j) { + var nextItem = cst.items[j]; + + switch (nextItem && nextItem.type) { + case Type.BLANK_LINE: + case Type.COMMENT: + continue next; + + case Type.MAP_VALUE: + break next; + + default: + { + var _msg2 = 'Implicit map keys need to be followed by map values'; + doc.errors.push(new YAMLSemanticError(item, _msg2)); + break next; + } + } + } + + if (item.valueRangeContainsNewline) { + var _msg3 = 'Implicit map keys need to be on a single line'; + doc.errors.push(new YAMLSemanticError(item, _msg3)); + } + + } + } + + if (key !== undefined) items.push(new Pair(key)); + return { + comments: comments, + items: items + }; +} + +function resolveFlowMapItems(doc, cst) { + var comments = []; + var items = []; + var key = undefined; + var explicitKey = false; + var next = '{'; + + for (var i = 0; i < cst.items.length; ++i) { + var item = cst.items[i]; + + if (typeof item.char === 'string') { + var char = item.char, + offset = item.offset; + + if (char === '?' && key === undefined && !explicitKey) { + explicitKey = true; + next = ':'; + continue; + } + + if (char === ':') { + if (key === undefined) key = null; + + if (next === ':') { + next = ','; + continue; + } + } else { + if (explicitKey) { + if (key === undefined && char !== ',') key = null; + explicitKey = false; + } + + if (key !== undefined) { + items.push(new Pair(key)); + key = undefined; + + if (char === ',') { + next = ':'; + continue; + } + } + } + + if (char === '}') { + if (i === cst.items.length - 1) continue; + } else if (char === next) { + next = ':'; + continue; + } + + var msg = "Flow map contains an unexpected ".concat(char); + var err = new YAMLSyntaxError(cst, msg); + err.offset = offset; + doc.errors.push(err); + } else if (item.type === Type.BLANK_LINE) { + comments.push({ + afterKey: !!key, + before: items.length + }); + } else if (item.type === Type.COMMENT) { + checkFlowCommentSpace(doc.errors, item); + comments.push({ + afterKey: !!key, + before: items.length, + comment: item.comment + }); + } else if (key === undefined) { + if (next === ',') doc.errors.push(new YAMLSemanticError(item, 'Separator , missing in flow map')); + key = resolveNode(doc, item); + } else { + if (next !== ',') doc.errors.push(new YAMLSemanticError(item, 'Indicator : missing in flow map entry')); + items.push(new Pair(key, resolveNode(doc, item))); + key = undefined; + explicitKey = false; + } + } + + checkFlowCollectionEnd(doc.errors, cst); + if (key !== undefined) items.push(new Pair(key)); + return { + comments: comments, + items: items + }; +} + +function resolveSeq(doc, cst) { + if (cst.type !== Type.SEQ && cst.type !== Type.FLOW_SEQ) { + var msg = "A ".concat(cst.type, " node cannot be resolved as a sequence"); + doc.errors.push(new YAMLSyntaxError(cst, msg)); + return null; + } + + var _ref = cst.type === Type.FLOW_SEQ ? resolveFlowSeqItems(doc, cst) : resolveBlockSeqItems(doc, cst), + comments = _ref.comments, + items = _ref.items; + + var seq = new YAMLSeq(); + seq.items = items; + resolveComments(seq, comments); + + if (!doc.options.mapAsMap && items.some(function (it) { + return it instanceof Pair && it.key instanceof Collection; + })) { + var warn = 'Keys with collection values will be stringified as YAML due to JS Object restrictions. Use mapAsMap: true to avoid this.'; + doc.warnings.push(new YAMLWarning(cst, warn)); + } + + cst.resolved = seq; + return seq; +} + +function resolveBlockSeqItems(doc, cst) { + var comments = []; + var items = []; + + for (var i = 0; i < cst.items.length; ++i) { + var item = cst.items[i]; + + switch (item.type) { + case Type.BLANK_LINE: + comments.push({ + before: items.length + }); + break; + + case Type.COMMENT: + comments.push({ + comment: item.comment, + before: items.length + }); + break; + + case Type.SEQ_ITEM: + if (item.error) doc.errors.push(item.error); + items.push(resolveNode(doc, item.node)); + + if (item.hasProps) { + var msg = 'Sequence items cannot have tags or anchors before the - indicator'; + doc.errors.push(new YAMLSemanticError(item, msg)); + } + + break; + + default: + if (item.error) doc.errors.push(item.error); + doc.errors.push(new YAMLSyntaxError(item, "Unexpected ".concat(item.type, " node in sequence"))); + } + } + + return { + comments: comments, + items: items + }; +} + +function resolveFlowSeqItems(doc, cst) { + var comments = []; + var items = []; + var explicitKey = false; + var key = undefined; + var keyStart = null; + var next = '['; + var prevItem = null; + + for (var i = 0; i < cst.items.length; ++i) { + var item = cst.items[i]; + + if (typeof item.char === 'string') { + var char = item.char, + offset = item.offset; + + if (char !== ':' && (explicitKey || key !== undefined)) { + if (explicitKey && key === undefined) key = next ? items.pop() : null; + items.push(new Pair(key)); + explicitKey = false; + key = undefined; + keyStart = null; + } + + if (char === next) { + next = null; + } else if (!next && char === '?') { + explicitKey = true; + } else if (next !== '[' && char === ':' && key === undefined) { + if (next === ',') { + key = items.pop(); + + if (key instanceof Pair) { + var msg = 'Chaining flow sequence pairs is invalid'; + var err = new YAMLSemanticError(cst, msg); + err.offset = offset; + doc.errors.push(err); + } + + if (!explicitKey && typeof keyStart === 'number') { + var keyEnd = item.range ? item.range.start : item.offset; + if (keyEnd > keyStart + 1024) doc.errors.push(getLongKeyError(cst, key)); + var src = prevItem.context.src; + + for (var _i = keyStart; _i < keyEnd; ++_i) { + if (src[_i] === '\n') { + var _msg = 'Implicit keys of flow sequence pairs need to be on a single line'; + doc.errors.push(new YAMLSemanticError(prevItem, _msg)); + break; + } + } + } + } else { + key = null; + } + + keyStart = null; + explicitKey = false; + next = null; + } else if (next === '[' || char !== ']' || i < cst.items.length - 1) { + var _msg2 = "Flow sequence contains an unexpected ".concat(char); + + var _err = new YAMLSyntaxError(cst, _msg2); + + _err.offset = offset; + doc.errors.push(_err); + } + } else if (item.type === Type.BLANK_LINE) { + comments.push({ + before: items.length + }); + } else if (item.type === Type.COMMENT) { + checkFlowCommentSpace(doc.errors, item); + comments.push({ + comment: item.comment, + before: items.length + }); + } else { + if (next) { + var _msg3 = "Expected a ".concat(next, " in flow sequence"); + + doc.errors.push(new YAMLSemanticError(item, _msg3)); + } + + var value = resolveNode(doc, item); + + if (key === undefined) { + items.push(value); + prevItem = item; + } else { + items.push(new Pair(key, value)); + key = undefined; + } + + keyStart = item.range.start; + next = ','; + } + } + + checkFlowCollectionEnd(doc.errors, cst); + if (key !== undefined) items.push(new Pair(key)); + return { + comments: comments, + items: items + }; +} + +export { Alias as A, Collection as C, Merge as M, Node as N, Pair as P, Scalar as S, YAMLSeq as Y, boolOptions as a, binaryOptions as b, stringifyString as c, YAMLMap as d, isEmptyPath as e, addComment as f, resolveMap as g, resolveSeq as h, intOptions as i, resolveString as j, stringifyNumber as k, findPair as l, nullOptions as n, resolveNode as r, strOptions as s, toJSON as t }; diff --git a/yaml/browser/dist/types.js b/yaml/browser/dist/types.js new file mode 100644 index 0000000000..da2288bc05 --- /dev/null +++ b/yaml/browser/dist/types.js @@ -0,0 +1,4 @@ +export { A as Alias, C as Collection, M as Merge, N as Node, P as Pair, S as Scalar, d as YAMLMap, Y as YAMLSeq, b as binaryOptions, a as boolOptions, i as intOptions, n as nullOptions, s as strOptions } from './resolveSeq-492ab440.js'; +export { S as Schema } from './Schema-e94716c8.js'; +import './PlainValue-b8036b75.js'; +import './warnings-df54cb69.js'; diff --git a/yaml/browser/dist/util.js b/yaml/browser/dist/util.js new file mode 100644 index 0000000000..29f4663d66 --- /dev/null +++ b/yaml/browser/dist/util.js @@ -0,0 +1,2 @@ +export { l as findPair, g as parseMap, h as parseSeq, k as stringifyNumber, c as stringifyString, t as toJSON } from './resolveSeq-492ab440.js'; +export { T as Type, i as YAMLError, o as YAMLReferenceError, g as YAMLSemanticError, Y as YAMLSyntaxError, f as YAMLWarning } from './PlainValue-b8036b75.js'; diff --git a/yaml/browser/dist/warnings-df54cb69.js b/yaml/browser/dist/warnings-df54cb69.js new file mode 100644 index 0000000000..9532e83221 --- /dev/null +++ b/yaml/browser/dist/warnings-df54cb69.js @@ -0,0 +1,499 @@ +import { o as YAMLReferenceError, T as Type, g as YAMLSemanticError, _ as _createForOfIteratorHelper, e as _defineProperty, j as _inherits, k as _createSuper, c as _classCallCheck, p as _assertThisInitialized, b as _createClass, a as _typeof, l as _get, m as _getPrototypeOf } from './PlainValue-b8036b75.js'; +import { j as resolveString, b as binaryOptions, c as stringifyString, h as resolveSeq, P as Pair, d as YAMLMap, Y as YAMLSeq, t as toJSON, S as Scalar, l as findPair, g as resolveMap, k as stringifyNumber } from './resolveSeq-492ab440.js'; + +/* global atob, btoa, Buffer */ +var binary = { + identify: function identify(value) { + return value instanceof Uint8Array; + }, + // Buffer inherits from Uint8Array + default: false, + tag: 'tag:yaml.org,2002:binary', + + /** + * Returns a Buffer in node and an Uint8Array in browsers + * + * To use the resulting buffer as an image, you'll want to do something like: + * + * const blob = new Blob([buffer], { type: 'image/jpeg' }) + * document.querySelector('#photo').src = URL.createObjectURL(blob) + */ + resolve: function resolve(doc, node) { + var src = resolveString(doc, node); + + if (typeof Buffer === 'function') { + return Buffer.from(src, 'base64'); + } else if (typeof atob === 'function') { + // On IE 11, atob() can't handle newlines + var str = atob(src.replace(/[\n\r]/g, '')); + var buffer = new Uint8Array(str.length); + + for (var i = 0; i < str.length; ++i) { + buffer[i] = str.charCodeAt(i); + } + + return buffer; + } else { + var msg = 'This environment does not support reading binary tags; either Buffer or atob is required'; + doc.errors.push(new YAMLReferenceError(node, msg)); + return null; + } + }, + options: binaryOptions, + stringify: function stringify(_ref, ctx, onComment, onChompKeep) { + var comment = _ref.comment, + type = _ref.type, + value = _ref.value; + var src; + + if (typeof Buffer === 'function') { + src = value instanceof Buffer ? value.toString('base64') : Buffer.from(value.buffer).toString('base64'); + } else if (typeof btoa === 'function') { + var s = ''; + + for (var i = 0; i < value.length; ++i) { + s += String.fromCharCode(value[i]); + } + + src = btoa(s); + } else { + throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required'); + } + + if (!type) type = binaryOptions.defaultType; + + if (type === Type.QUOTE_DOUBLE) { + value = src; + } else { + var lineWidth = binaryOptions.lineWidth; + var n = Math.ceil(src.length / lineWidth); + var lines = new Array(n); + + for (var _i = 0, o = 0; _i < n; ++_i, o += lineWidth) { + lines[_i] = src.substr(o, lineWidth); + } + + value = lines.join(type === Type.BLOCK_LITERAL ? '\n' : ' '); + } + + return stringifyString({ + comment: comment, + type: type, + value: value + }, ctx, onComment, onChompKeep); + } +}; + +function parsePairs(doc, cst) { + var seq = resolveSeq(doc, cst); + + for (var i = 0; i < seq.items.length; ++i) { + var item = seq.items[i]; + if (item instanceof Pair) continue;else if (item instanceof YAMLMap) { + if (item.items.length > 1) { + var msg = 'Each pair must have its own sequence indicator'; + throw new YAMLSemanticError(cst, msg); + } + + var pair = item.items[0] || new Pair(); + if (item.commentBefore) pair.commentBefore = pair.commentBefore ? "".concat(item.commentBefore, "\n").concat(pair.commentBefore) : item.commentBefore; + if (item.comment) pair.comment = pair.comment ? "".concat(item.comment, "\n").concat(pair.comment) : item.comment; + item = pair; + } + seq.items[i] = item instanceof Pair ? item : new Pair(item); + } + + return seq; +} +function createPairs(schema, iterable, ctx) { + var pairs = new YAMLSeq(schema); + pairs.tag = 'tag:yaml.org,2002:pairs'; + + var _iterator = _createForOfIteratorHelper(iterable), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var it = _step.value; + var key = void 0, + value = void 0; + + if (Array.isArray(it)) { + if (it.length === 2) { + key = it[0]; + value = it[1]; + } else throw new TypeError("Expected [key, value] tuple: ".concat(it)); + } else if (it && it instanceof Object) { + var keys = Object.keys(it); + + if (keys.length === 1) { + key = keys[0]; + value = it[key]; + } else throw new TypeError("Expected { key: value } tuple: ".concat(it)); + } else { + key = it; + } + + var pair = schema.createPair(key, value, ctx); + pairs.items.push(pair); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return pairs; +} +var pairs = { + default: false, + tag: 'tag:yaml.org,2002:pairs', + resolve: parsePairs, + createNode: createPairs +}; + +var YAMLOMap = /*#__PURE__*/function (_YAMLSeq) { + _inherits(YAMLOMap, _YAMLSeq); + + var _super = _createSuper(YAMLOMap); + + function YAMLOMap() { + var _this; + + _classCallCheck(this, YAMLOMap); + + _this = _super.call(this); + + _defineProperty(_assertThisInitialized(_this), "add", YAMLMap.prototype.add.bind(_assertThisInitialized(_this))); + + _defineProperty(_assertThisInitialized(_this), "delete", YAMLMap.prototype.delete.bind(_assertThisInitialized(_this))); + + _defineProperty(_assertThisInitialized(_this), "get", YAMLMap.prototype.get.bind(_assertThisInitialized(_this))); + + _defineProperty(_assertThisInitialized(_this), "has", YAMLMap.prototype.has.bind(_assertThisInitialized(_this))); + + _defineProperty(_assertThisInitialized(_this), "set", YAMLMap.prototype.set.bind(_assertThisInitialized(_this))); + + _this.tag = YAMLOMap.tag; + return _this; + } + + _createClass(YAMLOMap, [{ + key: "toJSON", + value: function toJSON$1(_, ctx) { + var map = new Map(); + if (ctx && ctx.onCreate) ctx.onCreate(map); + + var _iterator = _createForOfIteratorHelper(this.items), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var pair = _step.value; + var key = void 0, + value = void 0; + + if (pair instanceof Pair) { + key = toJSON(pair.key, '', ctx); + value = toJSON(pair.value, key, ctx); + } else { + key = toJSON(pair, '', ctx); + } + + if (map.has(key)) throw new Error('Ordered maps must not include duplicate keys'); + map.set(key, value); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return map; + } + }]); + + return YAMLOMap; +}(YAMLSeq); + +_defineProperty(YAMLOMap, "tag", 'tag:yaml.org,2002:omap'); + +function parseOMap(doc, cst) { + var pairs = parsePairs(doc, cst); + var seenKeys = []; + + var _iterator2 = _createForOfIteratorHelper(pairs.items), + _step2; + + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var key = _step2.value.key; + + if (key instanceof Scalar) { + if (seenKeys.includes(key.value)) { + var msg = 'Ordered maps must not include duplicate keys'; + throw new YAMLSemanticError(cst, msg); + } else { + seenKeys.push(key.value); + } + } + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + + return Object.assign(new YAMLOMap(), pairs); +} + +function createOMap(schema, iterable, ctx) { + var pairs = createPairs(schema, iterable, ctx); + var omap = new YAMLOMap(); + omap.items = pairs.items; + return omap; +} + +var omap = { + identify: function identify(value) { + return value instanceof Map; + }, + nodeClass: YAMLOMap, + default: false, + tag: 'tag:yaml.org,2002:omap', + resolve: parseOMap, + createNode: createOMap +}; + +var YAMLSet = /*#__PURE__*/function (_YAMLMap) { + _inherits(YAMLSet, _YAMLMap); + + var _super = _createSuper(YAMLSet); + + function YAMLSet() { + var _this; + + _classCallCheck(this, YAMLSet); + + _this = _super.call(this); + _this.tag = YAMLSet.tag; + return _this; + } + + _createClass(YAMLSet, [{ + key: "add", + value: function add(key) { + var pair = key instanceof Pair ? key : new Pair(key); + var prev = findPair(this.items, pair.key); + if (!prev) this.items.push(pair); + } + }, { + key: "get", + value: function get(key, keepPair) { + var pair = findPair(this.items, key); + return !keepPair && pair instanceof Pair ? pair.key instanceof Scalar ? pair.key.value : pair.key : pair; + } + }, { + key: "set", + value: function set(key, value) { + if (typeof value !== 'boolean') throw new Error("Expected boolean value for set(key, value) in a YAML set, not ".concat(_typeof(value))); + var prev = findPair(this.items, key); + + if (prev && !value) { + this.items.splice(this.items.indexOf(prev), 1); + } else if (!prev && value) { + this.items.push(new Pair(key)); + } + } + }, { + key: "toJSON", + value: function toJSON(_, ctx) { + return _get(_getPrototypeOf(YAMLSet.prototype), "toJSON", this).call(this, _, ctx, Set); + } + }, { + key: "toString", + value: function toString(ctx, onComment, onChompKeep) { + if (!ctx) return JSON.stringify(this); + if (this.hasAllNullValues()) return _get(_getPrototypeOf(YAMLSet.prototype), "toString", this).call(this, ctx, onComment, onChompKeep);else throw new Error('Set items must all have null values'); + } + }]); + + return YAMLSet; +}(YAMLMap); + +_defineProperty(YAMLSet, "tag", 'tag:yaml.org,2002:set'); + +function parseSet(doc, cst) { + var map = resolveMap(doc, cst); + if (!map.hasAllNullValues()) throw new YAMLSemanticError(cst, 'Set items must all have null values'); + return Object.assign(new YAMLSet(), map); +} + +function createSet(schema, iterable, ctx) { + var set = new YAMLSet(); + + var _iterator = _createForOfIteratorHelper(iterable), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var value = _step.value; + set.items.push(schema.createPair(value, null, ctx)); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return set; +} + +var set = { + identify: function identify(value) { + return value instanceof Set; + }, + nodeClass: YAMLSet, + default: false, + tag: 'tag:yaml.org,2002:set', + resolve: parseSet, + createNode: createSet +}; + +var parseSexagesimal = function parseSexagesimal(sign, parts) { + var n = parts.split(':').reduce(function (n, p) { + return n * 60 + Number(p); + }, 0); + return sign === '-' ? -n : n; +}; // hhhh:mm:ss.sss + + +var stringifySexagesimal = function stringifySexagesimal(_ref) { + var value = _ref.value; + if (isNaN(value) || !isFinite(value)) return stringifyNumber(value); + var sign = ''; + + if (value < 0) { + sign = '-'; + value = Math.abs(value); + } + + var parts = [value % 60]; // seconds, including ms + + if (value < 60) { + parts.unshift(0); // at least one : is required + } else { + value = Math.round((value - parts[0]) / 60); + parts.unshift(value % 60); // minutes + + if (value >= 60) { + value = Math.round((value - parts[0]) / 60); + parts.unshift(value); // hours + } + } + + return sign + parts.map(function (n) { + return n < 10 ? '0' + String(n) : String(n); + }).join(':').replace(/000000\d*$/, '') // % 60 may introduce error + ; +}; + +var intTime = { + identify: function identify(value) { + return typeof value === 'number'; + }, + default: true, + tag: 'tag:yaml.org,2002:int', + format: 'TIME', + test: /^([-+]?)([0-9][0-9_]*(?::[0-5]?[0-9])+)$/, + resolve: function resolve(str, sign, parts) { + return parseSexagesimal(sign, parts.replace(/_/g, '')); + }, + stringify: stringifySexagesimal +}; +var floatTime = { + identify: function identify(value) { + return typeof value === 'number'; + }, + default: true, + tag: 'tag:yaml.org,2002:float', + format: 'TIME', + test: /^([-+]?)([0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*)$/, + resolve: function resolve(str, sign, parts) { + return parseSexagesimal(sign, parts.replace(/_/g, '')); + }, + stringify: stringifySexagesimal +}; +var timestamp = { + identify: function identify(value) { + return value instanceof Date; + }, + default: true, + tag: 'tag:yaml.org,2002:timestamp', + // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part + // may be omitted altogether, resulting in a date format. In such a case, the time part is + // assumed to be 00:00:00Z (start of day, UTC). + test: RegExp('^(?:' + '([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd + '(?:(?:t|T|[ \\t]+)' + // t | T | whitespace + '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)? + '(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30 + ')?' + ')$'), + resolve: function resolve(str, year, month, day, hour, minute, second, millisec, tz) { + if (millisec) millisec = (millisec + '00').substr(1, 3); + var date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec || 0); + + if (tz && tz !== 'Z') { + var d = parseSexagesimal(tz[0], tz.slice(1)); + if (Math.abs(d) < 30) d *= 60; + date -= 60000 * d; + } + + return new Date(date); + }, + stringify: function stringify(_ref2) { + var value = _ref2.value; + return value.toISOString().replace(/((T00:00)?:00)?\.000Z$/, ''); + } +}; + +/* global console, process, YAML_SILENCE_DEPRECATION_WARNINGS, YAML_SILENCE_WARNINGS */ +function shouldWarn(deprecation) { + var env = typeof process !== 'undefined' && process.env || {}; + + if (deprecation) { + if (typeof YAML_SILENCE_DEPRECATION_WARNINGS !== 'undefined') return !YAML_SILENCE_DEPRECATION_WARNINGS; + return !env.YAML_SILENCE_DEPRECATION_WARNINGS; + } + + if (typeof YAML_SILENCE_WARNINGS !== 'undefined') return !YAML_SILENCE_WARNINGS; + return !env.YAML_SILENCE_WARNINGS; +} + +function warn(warning, type) { + if (shouldWarn(false)) { + var emit = typeof process !== 'undefined' && process.emitWarning; // This will throw in Jest if `warning` is an Error instance due to + // https://github.com/facebook/jest/issues/2549 + + if (emit) emit(warning, type);else { + // eslint-disable-next-line no-console + console.warn(type ? "".concat(type, ": ").concat(warning) : warning); + } + } +} +function warnFileDeprecation(filename) { + if (shouldWarn(true)) { + var path = filename.replace(/.*yaml[/\\]/i, '').replace(/\.js$/, '').replace(/\\/g, '/'); + warn("The endpoint 'yaml/".concat(path, "' will be removed in a future release."), 'DeprecationWarning'); + } +} +var warned = {}; +function warnOptionDeprecation(name, alternative) { + if (!warned[name] && shouldWarn(true)) { + warned[name] = true; + var msg = "The option '".concat(name, "' will be removed in a future release"); + msg += alternative ? ", use '".concat(alternative, "' instead.") : '.'; + warn(msg, 'DeprecationWarning'); + } +} + +export { warnOptionDeprecation as a, binary as b, warnFileDeprecation as c, floatTime as f, intTime as i, omap as o, pairs as p, set as s, timestamp as t, warn as w }; diff --git a/yaml/browser/index.js b/yaml/browser/index.js new file mode 100644 index 0000000000..b501ac4dbf --- /dev/null +++ b/yaml/browser/index.js @@ -0,0 +1 @@ +module.exports = require('./dist').YAML diff --git a/yaml/browser/map.js b/yaml/browser/map.js new file mode 100644 index 0000000000..78f2ebc749 --- /dev/null +++ b/yaml/browser/map.js @@ -0,0 +1,2 @@ +module.exports = require('./dist/types').YAMLMap +require('./dist/legacy-exports').warnFileDeprecation(__filename) diff --git a/yaml/browser/pair.js b/yaml/browser/pair.js new file mode 100644 index 0000000000..b2880a256e --- /dev/null +++ b/yaml/browser/pair.js @@ -0,0 +1,2 @@ +module.exports = require('./dist/types').Pair +require('./dist/legacy-exports').warnFileDeprecation(__filename) diff --git a/yaml/browser/parse-cst.js b/yaml/browser/parse-cst.js new file mode 100644 index 0000000000..806575652e --- /dev/null +++ b/yaml/browser/parse-cst.js @@ -0,0 +1 @@ +module.exports = require('./dist/parse-cst').parse diff --git a/yaml/browser/scalar.js b/yaml/browser/scalar.js new file mode 100644 index 0000000000..deee1b03ae --- /dev/null +++ b/yaml/browser/scalar.js @@ -0,0 +1,2 @@ +module.exports = require('./dist/types').Scalar +require('./dist/legacy-exports').warnFileDeprecation(__filename) diff --git a/yargs-parser/CHANGELOG.md b/yargs-parser/CHANGELOG.md new file mode 100644 index 0000000000..2aad0acbdc --- /dev/null +++ b/yargs-parser/CHANGELOG.md @@ -0,0 +1,263 @@ +# Changelog + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +### [20.2.9](https://www.github.com/yargs/yargs-parser/compare/yargs-parser-v20.2.8...yargs-parser-v20.2.9) (2021-06-20) + + +### Bug Fixes + +* **build:** fixed automated release pipeline ([1fe9135](https://www.github.com/yargs/yargs-parser/commit/1fe9135884790a083615419b2861683e2597dac3)) + +### [20.2.8](https://www.github.com/yargs/yargs-parser/compare/yargs-parser-v20.2.7...yargs-parser-v20.2.8) (2021-06-20) + + +### Bug Fixes + +* **locale:** Turkish camelize and decamelize issues with toLocaleLowerCase/toLocaleUpperCase ([2617303](https://www.github.com/yargs/yargs-parser/commit/261730383e02448562f737b94bbd1f164aed5143)) +* **perf:** address slow parse when using unknown-options-as-args ([#394](https://www.github.com/yargs/yargs-parser/issues/394)) ([441f059](https://www.github.com/yargs/yargs-parser/commit/441f059d585d446551068ad213db79ac91daf83a)) +* **string-utils:** detect [0,1] ranged values as numbers ([#388](https://www.github.com/yargs/yargs-parser/issues/388)) ([efcc32c](https://www.github.com/yargs/yargs-parser/commit/efcc32c2d6b09aba31abfa2db9bd947befe5586b)) + +### [20.2.7](https://www.github.com/yargs/yargs-parser/compare/v20.2.6...v20.2.7) (2021-03-10) + + +### Bug Fixes + +* **deno:** force release for Deno ([6687c97](https://www.github.com/yargs/yargs-parser/commit/6687c972d0f3ca7865a97908dde3080b05f8b026)) + +### [20.2.6](https://www.github.com/yargs/yargs-parser/compare/v20.2.5...v20.2.6) (2021-02-22) + + +### Bug Fixes + +* **populate--:** -- should always be array ([#354](https://www.github.com/yargs/yargs-parser/issues/354)) ([585ae8f](https://www.github.com/yargs/yargs-parser/commit/585ae8ffad74cc02974f92d788e750137fd65146)) + +### [20.2.5](https://www.github.com/yargs/yargs-parser/compare/v20.2.4...v20.2.5) (2021-02-13) + + +### Bug Fixes + +* do not lowercase camel cased string ([#348](https://www.github.com/yargs/yargs-parser/issues/348)) ([5f4da1f](https://www.github.com/yargs/yargs-parser/commit/5f4da1f17d9d50542d2aaa206c9806ce3e320335)) + +### [20.2.4](https://www.github.com/yargs/yargs-parser/compare/v20.2.3...v20.2.4) (2020-11-09) + + +### Bug Fixes + +* **deno:** address import issues in Deno ([#339](https://www.github.com/yargs/yargs-parser/issues/339)) ([3b54e5e](https://www.github.com/yargs/yargs-parser/commit/3b54e5eef6e9a7b7c6eec7c12bab3ba3b8ba8306)) + +### [20.2.3](https://www.github.com/yargs/yargs-parser/compare/v20.2.2...v20.2.3) (2020-10-16) + + +### Bug Fixes + +* **exports:** node 13.0 and 13.1 require the dotted object form _with_ a string fallback ([#336](https://www.github.com/yargs/yargs-parser/issues/336)) ([3ae7242](https://www.github.com/yargs/yargs-parser/commit/3ae7242040ff876d28dabded60ac226e00150c88)) + +### [20.2.2](https://www.github.com/yargs/yargs-parser/compare/v20.2.1...v20.2.2) (2020-10-14) + + +### Bug Fixes + +* **exports:** node 13.0-13.6 require a string fallback ([#333](https://www.github.com/yargs/yargs-parser/issues/333)) ([291aeda](https://www.github.com/yargs/yargs-parser/commit/291aeda06b685b7a015d83bdf2558e180b37388d)) + +### [20.2.1](https://www.github.com/yargs/yargs-parser/compare/v20.2.0...v20.2.1) (2020-10-01) + + +### Bug Fixes + +* **deno:** update types for deno ^1.4.0 ([#330](https://www.github.com/yargs/yargs-parser/issues/330)) ([0ab92e5](https://www.github.com/yargs/yargs-parser/commit/0ab92e50b090f11196334c048c9c92cecaddaf56)) + +## [20.2.0](https://www.github.com/yargs/yargs-parser/compare/v20.1.0...v20.2.0) (2020-09-21) + + +### Features + +* **string-utils:** export looksLikeNumber helper ([#324](https://www.github.com/yargs/yargs-parser/issues/324)) ([c8580a2](https://www.github.com/yargs/yargs-parser/commit/c8580a2327b55f6342acecb6e72b62963d506750)) + + +### Bug Fixes + +* **unknown-options-as-args:** convert positionals that look like numbers ([#326](https://www.github.com/yargs/yargs-parser/issues/326)) ([f85ebb4](https://www.github.com/yargs/yargs-parser/commit/f85ebb4face9d4b0f56147659404cbe0002f3dad)) + +## [20.1.0](https://www.github.com/yargs/yargs-parser/compare/v20.0.0...v20.1.0) (2020-09-20) + + +### Features + +* adds parse-positional-numbers configuration ([#321](https://www.github.com/yargs/yargs-parser/issues/321)) ([9cec00a](https://www.github.com/yargs/yargs-parser/commit/9cec00a622251292ffb7dce6f78f5353afaa0d4c)) + + +### Bug Fixes + +* **build:** update release-please; make labels kick off builds ([#323](https://www.github.com/yargs/yargs-parser/issues/323)) ([09f448b](https://www.github.com/yargs/yargs-parser/commit/09f448b4cd66e25d2872544718df46dab8af062a)) + +## [20.0.0](https://www.github.com/yargs/yargs-parser/compare/v19.0.4...v20.0.0) (2020-09-09) + + +### โš  BREAKING CHANGES + +* do not ship type definitions (#318) + +### Bug Fixes + +* only strip camel case if hyphenated ([#316](https://www.github.com/yargs/yargs-parser/issues/316)) ([95a9e78](https://www.github.com/yargs/yargs-parser/commit/95a9e785127b9bbf2d1db1f1f808ca1fb100e82a)), closes [#315](https://www.github.com/yargs/yargs-parser/issues/315) + + +### Code Refactoring + +* do not ship type definitions ([#318](https://www.github.com/yargs/yargs-parser/issues/318)) ([8fbd56f](https://www.github.com/yargs/yargs-parser/commit/8fbd56f1d0b6c44c30fca62708812151ca0ce330)) + +### [19.0.4](https://www.github.com/yargs/yargs-parser/compare/v19.0.3...v19.0.4) (2020-08-27) + + +### Bug Fixes + +* **build:** fixing publication ([#310](https://www.github.com/yargs/yargs-parser/issues/310)) ([5d3c6c2](https://www.github.com/yargs/yargs-parser/commit/5d3c6c29a9126248ba601920d9cf87c78e161ff5)) + +### [19.0.3](https://www.github.com/yargs/yargs-parser/compare/v19.0.2...v19.0.3) (2020-08-27) + + +### Bug Fixes + +* **build:** switch to action for publish ([#308](https://www.github.com/yargs/yargs-parser/issues/308)) ([5c2f305](https://www.github.com/yargs/yargs-parser/commit/5c2f30585342bcd8aaf926407c863099d256d174)) + +### [19.0.2](https://www.github.com/yargs/yargs-parser/compare/v19.0.1...v19.0.2) (2020-08-27) + + +### Bug Fixes + +* **types:** envPrefix should be optional ([#305](https://www.github.com/yargs/yargs-parser/issues/305)) ([ae3f180](https://www.github.com/yargs/yargs-parser/commit/ae3f180e14df2de2fd962145f4518f9aa0e76523)) + +### [19.0.1](https://www.github.com/yargs/yargs-parser/compare/v19.0.0...v19.0.1) (2020-08-09) + + +### Bug Fixes + +* **build:** push tag created for deno ([2186a14](https://www.github.com/yargs/yargs-parser/commit/2186a14989749887d56189867602e39e6679f8b0)) + +## [19.0.0](https://www.github.com/yargs/yargs-parser/compare/v18.1.3...v19.0.0) (2020-08-09) + + +### โš  BREAKING CHANGES + +* adds support for ESM and Deno (#295) +* **ts:** projects using `@types/yargs-parser` may see variations in type definitions. +* drops Node 6. begin following Node.js LTS schedule (#278) + +### Features + +* adds support for ESM and Deno ([#295](https://www.github.com/yargs/yargs-parser/issues/295)) ([195bc4a](https://www.github.com/yargs/yargs-parser/commit/195bc4a7f20c2a8f8e33fbb6ba96ef6e9a0120a1)) +* expose camelCase and decamelize helpers ([#296](https://www.github.com/yargs/yargs-parser/issues/296)) ([39154ce](https://www.github.com/yargs/yargs-parser/commit/39154ceb5bdcf76b5f59a9219b34cedb79b67f26)) +* **deps:** update to latest camelcase/decamelize ([#281](https://www.github.com/yargs/yargs-parser/issues/281)) ([8931ab0](https://www.github.com/yargs/yargs-parser/commit/8931ab08f686cc55286f33a95a83537da2be5516)) + + +### Bug Fixes + +* boolean numeric short option ([#294](https://www.github.com/yargs/yargs-parser/issues/294)) ([f600082](https://www.github.com/yargs/yargs-parser/commit/f600082c959e092076caf420bbbc9d7a231e2418)) +* raise permission error for Deno if config load fails ([#298](https://www.github.com/yargs/yargs-parser/issues/298)) ([1174e2b](https://www.github.com/yargs/yargs-parser/commit/1174e2b3f0c845a1cd64e14ffc3703e730567a84)) +* **deps:** update dependency decamelize to v3 ([#274](https://www.github.com/yargs/yargs-parser/issues/274)) ([4d98698](https://www.github.com/yargs/yargs-parser/commit/4d98698bc6767e84ec54a0842908191739be73b7)) +* **types:** switch back to using Partial types ([#293](https://www.github.com/yargs/yargs-parser/issues/293)) ([bdc80ba](https://www.github.com/yargs/yargs-parser/commit/bdc80ba59fa13bc3025ce0a85e8bad9f9da24ea7)) + + +### Build System + +* drops Node 6. begin following Node.js LTS schedule ([#278](https://www.github.com/yargs/yargs-parser/issues/278)) ([9014ed7](https://www.github.com/yargs/yargs-parser/commit/9014ed722a32768b96b829e65a31705db5c1458a)) + + +### Code Refactoring + +* **ts:** move index.js to TypeScript ([#292](https://www.github.com/yargs/yargs-parser/issues/292)) ([f78d2b9](https://www.github.com/yargs/yargs-parser/commit/f78d2b97567ac4828624406e420b4047c710b789)) + +### [18.1.3](https://www.github.com/yargs/yargs-parser/compare/v18.1.2...v18.1.3) (2020-04-16) + + +### Bug Fixes + +* **setArg:** options using camel-case and dot-notation populated twice ([#268](https://www.github.com/yargs/yargs-parser/issues/268)) ([f7e15b9](https://www.github.com/yargs/yargs-parser/commit/f7e15b9800900b9856acac1a830a5f35847be73e)) + +### [18.1.2](https://www.github.com/yargs/yargs-parser/compare/v18.1.1...v18.1.2) (2020-03-26) + + +### Bug Fixes + +* **array, nargs:** support -o=--value and --option=--value format ([#262](https://www.github.com/yargs/yargs-parser/issues/262)) ([41d3f81](https://www.github.com/yargs/yargs-parser/commit/41d3f8139e116706b28de9b0de3433feb08d2f13)) + +### [18.1.1](https://www.github.com/yargs/yargs-parser/compare/v18.1.0...v18.1.1) (2020-03-16) + + +### Bug Fixes + +* \_\_proto\_\_ will now be replaced with \_\_\_proto\_\_\_ in parse ([#258](https://www.github.com/yargs/yargs-parser/issues/258)), patching a potential +prototype pollution vulnerability. This was reported by the Snyk Security Research Team.([63810ca](https://www.github.com/yargs/yargs-parser/commit/63810ca1ae1a24b08293a4d971e70e058c7a41e2)) + +## [18.1.0](https://www.github.com/yargs/yargs-parser/compare/v18.0.0...v18.1.0) (2020-03-07) + + +### Features + +* introduce single-digit boolean aliases ([#255](https://www.github.com/yargs/yargs-parser/issues/255)) ([9c60265](https://www.github.com/yargs/yargs-parser/commit/9c60265fd7a03cb98e6df3e32c8c5e7508d9f56f)) + +## [18.0.0](https://www.github.com/yargs/yargs-parser/compare/v17.1.0...v18.0.0) (2020-03-02) + + +### โš  BREAKING CHANGES + +* the narg count is now enforced when parsing arrays. + +### Features + +* NaN can now be provided as a value for nargs, indicating "at least" one value is expected for array ([#251](https://www.github.com/yargs/yargs-parser/issues/251)) ([9db4be8](https://www.github.com/yargs/yargs-parser/commit/9db4be81417a2c7097128db34d86fe70ef4af70c)) + +## [17.1.0](https://www.github.com/yargs/yargs-parser/compare/v17.0.1...v17.1.0) (2020-03-01) + + +### Features + +* introduce greedy-arrays config, for specifying whether arrays consume multiple positionals ([#249](https://www.github.com/yargs/yargs-parser/issues/249)) ([60e880a](https://www.github.com/yargs/yargs-parser/commit/60e880a837046314d89fa4725f923837fd33a9eb)) + +### [17.0.1](https://www.github.com/yargs/yargs-parser/compare/v17.0.0...v17.0.1) (2020-02-29) + + +### Bug Fixes + +* normalized keys were not enumerable ([#247](https://www.github.com/yargs/yargs-parser/issues/247)) ([57119f9](https://www.github.com/yargs/yargs-parser/commit/57119f9f17cf27499bd95e61c2f72d18314f11ba)) + +## [17.0.0](https://www.github.com/yargs/yargs-parser/compare/v16.1.0...v17.0.0) (2020-02-10) + + +### โš  BREAKING CHANGES + +* this reverts parsing behavior of booleans to that of yargs@14 +* objects used during parsing are now created with a null +prototype. There may be some scenarios where this change in behavior +leaks externally. + +### Features + +* boolean arguments will not be collected into an implicit array ([#236](https://www.github.com/yargs/yargs-parser/issues/236)) ([34c4e19](https://www.github.com/yargs/yargs-parser/commit/34c4e19bae4e7af63e3cb6fa654a97ed476e5eb5)) +* introduce nargs-eats-options config option ([#246](https://www.github.com/yargs/yargs-parser/issues/246)) ([d50822a](https://www.github.com/yargs/yargs-parser/commit/d50822ac10e1b05f2e9643671ca131ac251b6732)) + + +### Bug Fixes + +* address bugs with "uknown-options-as-args" ([bc023e3](https://www.github.com/yargs/yargs-parser/commit/bc023e3b13e20a118353f9507d1c999bf388a346)) +* array should take precedence over nargs, but enforce nargs ([#243](https://www.github.com/yargs/yargs-parser/issues/243)) ([4cbc188](https://www.github.com/yargs/yargs-parser/commit/4cbc188b7abb2249529a19c090338debdad2fe6c)) +* support keys that collide with object prototypes ([#234](https://www.github.com/yargs/yargs-parser/issues/234)) ([1587b6d](https://www.github.com/yargs/yargs-parser/commit/1587b6d91db853a9109f1be6b209077993fee4de)) +* unknown options terminated with digits now handled by unknown-options-as-args ([#238](https://www.github.com/yargs/yargs-parser/issues/238)) ([d36cdfa](https://www.github.com/yargs/yargs-parser/commit/d36cdfa854254d7c7e0fe1d583818332ac46c2a5)) + +## [16.1.0](https://www.github.com/yargs/yargs-parser/compare/v16.0.0...v16.1.0) (2019-11-01) + + +### โš  BREAKING CHANGES + +* populate error if incompatible narg/count or array/count options are used (#191) + +### Features + +* options that have had their default value used are now tracked ([#211](https://www.github.com/yargs/yargs-parser/issues/211)) ([a525234](https://www.github.com/yargs/yargs-parser/commit/a525234558c847deedd73f8792e0a3b77b26e2c0)) +* populate error if incompatible narg/count or array/count options are used ([#191](https://www.github.com/yargs/yargs-parser/issues/191)) ([84a401f](https://www.github.com/yargs/yargs-parser/commit/84a401f0fa3095e0a19661670d1570d0c3b9d3c9)) + + +### Reverts + +* revert 16.0.0 CHANGELOG entry ([920320a](https://www.github.com/yargs/yargs-parser/commit/920320ad9861bbfd58eda39221ae211540fc1daf)) diff --git a/yargs-parser/LICENSE.txt b/yargs-parser/LICENSE.txt new file mode 100644 index 0000000000..836440bef7 --- /dev/null +++ b/yargs-parser/LICENSE.txt @@ -0,0 +1,14 @@ +Copyright (c) 2016, Contributors + +Permission to use, copy, modify, and/or distribute this software +for any purpose with or without fee is hereby granted, provided +that the above copyright notice and this permission notice +appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE +LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/yargs-parser/README.md b/yargs-parser/README.md new file mode 100644 index 0000000000..2614840768 --- /dev/null +++ b/yargs-parser/README.md @@ -0,0 +1,518 @@ +# yargs-parser + +![ci](https://github.com/yargs/yargs-parser/workflows/ci/badge.svg) +[![NPM version](https://img.shields.io/npm/v/yargs-parser.svg)](https://www.npmjs.com/package/yargs-parser) +[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org) +![nycrc config on GitHub](https://img.shields.io/nycrc/yargs/yargs-parser) + +The mighty option parser used by [yargs](https://github.com/yargs/yargs). + +visit the [yargs website](http://yargs.js.org/) for more examples, and thorough usage instructions. + + + +## Example + +```sh +npm i yargs-parser --save +``` + +```js +const argv = require('yargs-parser')(process.argv.slice(2)) +console.log(argv) +``` + +```console +$ node example.js --foo=33 --bar hello +{ _: [], foo: 33, bar: 'hello' } +``` + +_or parse a string!_ + +```js +const argv = require('yargs-parser')('--foo=99 --bar=33') +console.log(argv) +``` + +```console +{ _: [], foo: 99, bar: 33 } +``` + +Convert an array of mixed types before passing to `yargs-parser`: + +```js +const parse = require('yargs-parser') +parse(['-f', 11, '--zoom', 55].join(' ')) // <-- array to string +parse(['-f', 11, '--zoom', 55].map(String)) // <-- array of strings +``` + +## Deno Example + +As of `v19` `yargs-parser` supports [Deno](https://github.com/denoland/deno): + +```typescript +import parser from "https://deno.land/x/yargs_parser/deno.ts"; + +const argv = parser('--foo=99 --bar=9987930', { + string: ['bar'] +}) +console.log(argv) +``` + +## ESM Example + +As of `v19` `yargs-parser` supports ESM (_both in Node.js and in the browser_): + +**Node.js:** + +```js +import parser from 'yargs-parser' + +const argv = parser('--foo=99 --bar=9987930', { + string: ['bar'] +}) +console.log(argv) +``` + +**Browsers:** + +```html + + + + +``` + +## API + +### parser(args, opts={}) + +Parses command line arguments returning a simple mapping of keys and values. + +**expects:** + +* `args`: a string or array of strings representing the options to parse. +* `opts`: provide a set of hints indicating how `args` should be parsed: + * `opts.alias`: an object representing the set of aliases for a key: `{alias: {foo: ['f']}}`. + * `opts.array`: indicate that keys should be parsed as an array: `{array: ['foo', 'bar']}`.
+ Indicate that keys should be parsed as an array and coerced to booleans / numbers:
+ `{array: [{ key: 'foo', boolean: true }, {key: 'bar', number: true}]}`. + * `opts.boolean`: arguments should be parsed as booleans: `{boolean: ['x', 'y']}`. + * `opts.coerce`: provide a custom synchronous function that returns a coerced value from the argument provided + (or throws an error). For arrays the function is called only once for the entire array:
+ `{coerce: {foo: function (arg) {return modifiedArg}}}`. + * `opts.config`: indicate a key that represents a path to a configuration file (this file will be loaded and parsed). + * `opts.configObjects`: configuration objects to parse, their properties will be set as arguments:
+ `{configObjects: [{'x': 5, 'y': 33}, {'z': 44}]}`. + * `opts.configuration`: provide configuration options to the yargs-parser (see: [configuration](#configuration)). + * `opts.count`: indicate a key that should be used as a counter, e.g., `-vvv` = `{v: 3}`. + * `opts.default`: provide default values for keys: `{default: {x: 33, y: 'hello world!'}}`. + * `opts.envPrefix`: environment variables (`process.env`) with the prefix provided should be parsed. + * `opts.narg`: specify that a key requires `n` arguments: `{narg: {x: 2}}`. + * `opts.normalize`: `path.normalize()` will be applied to values set to this key. + * `opts.number`: keys should be treated as numbers. + * `opts.string`: keys should be treated as strings (even if they resemble a number `-x 33`). + +**returns:** + +* `obj`: an object representing the parsed value of `args` + * `key/value`: key value pairs for each argument and their aliases. + * `_`: an array representing the positional arguments. + * [optional] `--`: an array with arguments after the end-of-options flag `--`. + +### require('yargs-parser').detailed(args, opts={}) + +Parses a command line string, returning detailed information required by the +yargs engine. + +**expects:** + +* `args`: a string or array of strings representing options to parse. +* `opts`: provide a set of hints indicating how `args`, inputs are identical to `require('yargs-parser')(args, opts={})`. + +**returns:** + +* `argv`: an object representing the parsed value of `args` + * `key/value`: key value pairs for each argument and their aliases. + * `_`: an array representing the positional arguments. + * [optional] `--`: an array with arguments after the end-of-options flag `--`. +* `error`: populated with an error object if an exception occurred during parsing. +* `aliases`: the inferred list of aliases built by combining lists in `opts.alias`. +* `newAliases`: any new aliases added via camel-case expansion: + * `boolean`: `{ fooBar: true }` +* `defaulted`: any new argument created by `opts.default`, no aliases included. + * `boolean`: `{ foo: true }` +* `configuration`: given by default settings and `opts.configuration`. + + + +### Configuration + +The yargs-parser applies several automated transformations on the keys provided +in `args`. These features can be turned on and off using the `configuration` field +of `opts`. + +```js +var parsed = parser(['--no-dice'], { + configuration: { + 'boolean-negation': false + } +}) +``` + +### short option groups + +* default: `true`. +* key: `short-option-groups`. + +Should a group of short-options be treated as boolean flags? + +```console +$ node example.js -abc +{ _: [], a: true, b: true, c: true } +``` + +_if disabled:_ + +```console +$ node example.js -abc +{ _: [], abc: true } +``` + +### camel-case expansion + +* default: `true`. +* key: `camel-case-expansion`. + +Should hyphenated arguments be expanded into camel-case aliases? + +```console +$ node example.js --foo-bar +{ _: [], 'foo-bar': true, fooBar: true } +``` + +_if disabled:_ + +```console +$ node example.js --foo-bar +{ _: [], 'foo-bar': true } +``` + +### dot-notation + +* default: `true` +* key: `dot-notation` + +Should keys that contain `.` be treated as objects? + +```console +$ node example.js --foo.bar +{ _: [], foo: { bar: true } } +``` + +_if disabled:_ + +```console +$ node example.js --foo.bar +{ _: [], "foo.bar": true } +``` + +### parse numbers + +* default: `true` +* key: `parse-numbers` + +Should keys that look like numbers be treated as such? + +```console +$ node example.js --foo=99.3 +{ _: [], foo: 99.3 } +``` + +_if disabled:_ + +```console +$ node example.js --foo=99.3 +{ _: [], foo: "99.3" } +``` + +### parse positional numbers + +* default: `true` +* key: `parse-positional-numbers` + +Should positional keys that look like numbers be treated as such. + +```console +$ node example.js 99.3 +{ _: [99.3] } +``` + +_if disabled:_ + +```console +$ node example.js 99.3 +{ _: ['99.3'] } +``` + +### boolean negation + +* default: `true` +* key: `boolean-negation` + +Should variables prefixed with `--no` be treated as negations? + +```console +$ node example.js --no-foo +{ _: [], foo: false } +``` + +_if disabled:_ + +```console +$ node example.js --no-foo +{ _: [], "no-foo": true } +``` + +### combine arrays + +* default: `false` +* key: `combine-arrays` + +Should arrays be combined when provided by both command line arguments and +a configuration file. + +### duplicate arguments array + +* default: `true` +* key: `duplicate-arguments-array` + +Should arguments be coerced into an array when duplicated: + +```console +$ node example.js -x 1 -x 2 +{ _: [], x: [1, 2] } +``` + +_if disabled:_ + +```console +$ node example.js -x 1 -x 2 +{ _: [], x: 2 } +``` + +### flatten duplicate arrays + +* default: `true` +* key: `flatten-duplicate-arrays` + +Should array arguments be coerced into a single array when duplicated: + +```console +$ node example.js -x 1 2 -x 3 4 +{ _: [], x: [1, 2, 3, 4] } +``` + +_if disabled:_ + +```console +$ node example.js -x 1 2 -x 3 4 +{ _: [], x: [[1, 2], [3, 4]] } +``` + +### greedy arrays + +* default: `true` +* key: `greedy-arrays` + +Should arrays consume more than one positional argument following their flag. + +```console +$ node example --arr 1 2 +{ _: [], arr: [1, 2] } +``` + +_if disabled:_ + +```console +$ node example --arr 1 2 +{ _: [2], arr: [1] } +``` + +**Note: in `v18.0.0` we are considering defaulting greedy arrays to `false`.** + +### nargs eats options + +* default: `false` +* key: `nargs-eats-options` + +Should nargs consume dash options as well as positional arguments. + +### negation prefix + +* default: `no-` +* key: `negation-prefix` + +The prefix to use for negated boolean variables. + +```console +$ node example.js --no-foo +{ _: [], foo: false } +``` + +_if set to `quux`:_ + +```console +$ node example.js --quuxfoo +{ _: [], foo: false } +``` + +### populate -- + +* default: `false`. +* key: `populate--` + +Should unparsed flags be stored in `--` or `_`. + +_If disabled:_ + +```console +$ node example.js a -b -- x y +{ _: [ 'a', 'x', 'y' ], b: true } +``` + +_If enabled:_ + +```console +$ node example.js a -b -- x y +{ _: [ 'a' ], '--': [ 'x', 'y' ], b: true } +``` + +### set placeholder key + +* default: `false`. +* key: `set-placeholder-key`. + +Should a placeholder be added for keys not set via the corresponding CLI argument? + +_If disabled:_ + +```console +$ node example.js -a 1 -c 2 +{ _: [], a: 1, c: 2 } +``` + +_If enabled:_ + +```console +$ node example.js -a 1 -c 2 +{ _: [], a: 1, b: undefined, c: 2 } +``` + +### halt at non-option + +* default: `false`. +* key: `halt-at-non-option`. + +Should parsing stop at the first positional argument? This is similar to how e.g. `ssh` parses its command line. + +_If disabled:_ + +```console +$ node example.js -a run b -x y +{ _: [ 'b' ], a: 'run', x: 'y' } +``` + +_If enabled:_ + +```console +$ node example.js -a run b -x y +{ _: [ 'b', '-x', 'y' ], a: 'run' } +``` + +### strip aliased + +* default: `false` +* key: `strip-aliased` + +Should aliases be removed before returning results? + +_If disabled:_ + +```console +$ node example.js --test-field 1 +{ _: [], 'test-field': 1, testField: 1, 'test-alias': 1, testAlias: 1 } +``` + +_If enabled:_ + +```console +$ node example.js --test-field 1 +{ _: [], 'test-field': 1, testField: 1 } +``` + +### strip dashed + +* default: `false` +* key: `strip-dashed` + +Should dashed keys be removed before returning results? This option has no effect if +`camel-case-expansion` is disabled. + +_If disabled:_ + +```console +$ node example.js --test-field 1 +{ _: [], 'test-field': 1, testField: 1 } +``` + +_If enabled:_ + +```console +$ node example.js --test-field 1 +{ _: [], testField: 1 } +``` + +### unknown options as args + +* default: `false` +* key: `unknown-options-as-args` + +Should unknown options be treated like regular arguments? An unknown option is one that is not +configured in `opts`. + +_If disabled_ + +```console +$ node example.js --unknown-option --known-option 2 --string-option --unknown-option2 +{ _: [], unknownOption: true, knownOption: 2, stringOption: '', unknownOption2: true } +``` + +_If enabled_ + +```console +$ node example.js --unknown-option --known-option 2 --string-option --unknown-option2 +{ _: ['--unknown-option'], knownOption: 2, stringOption: '--unknown-option2' } +``` + +## Supported Node.js Versions + +Libraries in this ecosystem make a best effort to track +[Node.js' release schedule](https://nodejs.org/en/about/releases/). Here's [a +post on why we think this is important](https://medium.com/the-node-js-collection/maintainers-should-consider-following-node-js-release-schedule-ab08ed4de71a). + +## Special Thanks + +The yargs project evolves from optimist and minimist. It owes its +existence to a lot of James Halliday's hard work. Thanks [substack](https://github.com/substack) **beep** **boop** \o/ + +## License + +ISC diff --git a/yargs-parser/browser.js b/yargs-parser/browser.js new file mode 100644 index 0000000000..241202c7e2 --- /dev/null +++ b/yargs-parser/browser.js @@ -0,0 +1,29 @@ +// Main entrypoint for ESM web browser environments. Avoids using Node.js +// specific libraries, such as "path". +// +// TODO: figure out reasonable web equivalents for "resolve", "normalize", etc. +import { camelCase, decamelize, looksLikeNumber } from './build/lib/string-utils.js' +import { YargsParser } from './build/lib/yargs-parser.js' +const parser = new YargsParser({ + cwd: () => { return '' }, + format: (str, arg) => { return str.replace('%s', arg) }, + normalize: (str) => { return str }, + resolve: (str) => { return str }, + require: () => { + throw Error('loading config from files not currently supported in browser') + }, + env: () => {} +}) + +const yargsParser = function Parser (args, opts) { + const result = parser.parse(args.slice(), opts) + return result.argv +} +yargsParser.detailed = function (args, opts) { + return parser.parse(args.slice(), opts) +} +yargsParser.camelCase = camelCase +yargsParser.decamelize = decamelize +yargsParser.looksLikeNumber = looksLikeNumber + +export default yargsParser diff --git a/yargs-parser/build/index.cjs b/yargs-parser/build/index.cjs new file mode 100644 index 0000000000..33b5ebd49a --- /dev/null +++ b/yargs-parser/build/index.cjs @@ -0,0 +1,1042 @@ +'use strict'; + +var util = require('util'); +var fs = require('fs'); +var path = require('path'); + +function camelCase(str) { + const isCamelCase = str !== str.toLowerCase() && str !== str.toUpperCase(); + if (!isCamelCase) { + str = str.toLowerCase(); + } + if (str.indexOf('-') === -1 && str.indexOf('_') === -1) { + return str; + } + else { + let camelcase = ''; + let nextChrUpper = false; + const leadingHyphens = str.match(/^-+/); + for (let i = leadingHyphens ? leadingHyphens[0].length : 0; i < str.length; i++) { + let chr = str.charAt(i); + if (nextChrUpper) { + nextChrUpper = false; + chr = chr.toUpperCase(); + } + if (i !== 0 && (chr === '-' || chr === '_')) { + nextChrUpper = true; + } + else if (chr !== '-' && chr !== '_') { + camelcase += chr; + } + } + return camelcase; + } +} +function decamelize(str, joinString) { + const lowercase = str.toLowerCase(); + joinString = joinString || '-'; + let notCamelcase = ''; + for (let i = 0; i < str.length; i++) { + const chrLower = lowercase.charAt(i); + const chrString = str.charAt(i); + if (chrLower !== chrString && i > 0) { + notCamelcase += `${joinString}${lowercase.charAt(i)}`; + } + else { + notCamelcase += chrString; + } + } + return notCamelcase; +} +function looksLikeNumber(x) { + if (x === null || x === undefined) + return false; + if (typeof x === 'number') + return true; + if (/^0x[0-9a-f]+$/i.test(x)) + return true; + if (/^0[^.]/.test(x)) + return false; + return /^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); +} + +function tokenizeArgString(argString) { + if (Array.isArray(argString)) { + return argString.map(e => typeof e !== 'string' ? e + '' : e); + } + argString = argString.trim(); + let i = 0; + let prevC = null; + let c = null; + let opening = null; + const args = []; + for (let ii = 0; ii < argString.length; ii++) { + prevC = c; + c = argString.charAt(ii); + if (c === ' ' && !opening) { + if (!(prevC === ' ')) { + i++; + } + continue; + } + if (c === opening) { + opening = null; + } + else if ((c === "'" || c === '"') && !opening) { + opening = c; + } + if (!args[i]) + args[i] = ''; + args[i] += c; + } + return args; +} + +var DefaultValuesForTypeKey; +(function (DefaultValuesForTypeKey) { + DefaultValuesForTypeKey["BOOLEAN"] = "boolean"; + DefaultValuesForTypeKey["STRING"] = "string"; + DefaultValuesForTypeKey["NUMBER"] = "number"; + DefaultValuesForTypeKey["ARRAY"] = "array"; +})(DefaultValuesForTypeKey || (DefaultValuesForTypeKey = {})); + +let mixin; +class YargsParser { + constructor(_mixin) { + mixin = _mixin; + } + parse(argsInput, options) { + const opts = Object.assign({ + alias: undefined, + array: undefined, + boolean: undefined, + config: undefined, + configObjects: undefined, + configuration: undefined, + coerce: undefined, + count: undefined, + default: undefined, + envPrefix: undefined, + narg: undefined, + normalize: undefined, + string: undefined, + number: undefined, + __: undefined, + key: undefined + }, options); + const args = tokenizeArgString(argsInput); + const aliases = combineAliases(Object.assign(Object.create(null), opts.alias)); + const configuration = Object.assign({ + 'boolean-negation': true, + 'camel-case-expansion': true, + 'combine-arrays': false, + 'dot-notation': true, + 'duplicate-arguments-array': true, + 'flatten-duplicate-arrays': true, + 'greedy-arrays': true, + 'halt-at-non-option': false, + 'nargs-eats-options': false, + 'negation-prefix': 'no-', + 'parse-numbers': true, + 'parse-positional-numbers': true, + 'populate--': false, + 'set-placeholder-key': false, + 'short-option-groups': true, + 'strip-aliased': false, + 'strip-dashed': false, + 'unknown-options-as-args': false + }, opts.configuration); + const defaults = Object.assign(Object.create(null), opts.default); + const configObjects = opts.configObjects || []; + const envPrefix = opts.envPrefix; + const notFlagsOption = configuration['populate--']; + const notFlagsArgv = notFlagsOption ? '--' : '_'; + const newAliases = Object.create(null); + const defaulted = Object.create(null); + const __ = opts.__ || mixin.format; + const flags = { + aliases: Object.create(null), + arrays: Object.create(null), + bools: Object.create(null), + strings: Object.create(null), + numbers: Object.create(null), + counts: Object.create(null), + normalize: Object.create(null), + configs: Object.create(null), + nargs: Object.create(null), + coercions: Object.create(null), + keys: [] + }; + const negative = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/; + const negatedBoolean = new RegExp('^--' + configuration['negation-prefix'] + '(.+)'); + [].concat(opts.array || []).filter(Boolean).forEach(function (opt) { + const key = typeof opt === 'object' ? opt.key : opt; + const assignment = Object.keys(opt).map(function (key) { + const arrayFlagKeys = { + boolean: 'bools', + string: 'strings', + number: 'numbers' + }; + return arrayFlagKeys[key]; + }).filter(Boolean).pop(); + if (assignment) { + flags[assignment][key] = true; + } + flags.arrays[key] = true; + flags.keys.push(key); + }); + [].concat(opts.boolean || []).filter(Boolean).forEach(function (key) { + flags.bools[key] = true; + flags.keys.push(key); + }); + [].concat(opts.string || []).filter(Boolean).forEach(function (key) { + flags.strings[key] = true; + flags.keys.push(key); + }); + [].concat(opts.number || []).filter(Boolean).forEach(function (key) { + flags.numbers[key] = true; + flags.keys.push(key); + }); + [].concat(opts.count || []).filter(Boolean).forEach(function (key) { + flags.counts[key] = true; + flags.keys.push(key); + }); + [].concat(opts.normalize || []).filter(Boolean).forEach(function (key) { + flags.normalize[key] = true; + flags.keys.push(key); + }); + if (typeof opts.narg === 'object') { + Object.entries(opts.narg).forEach(([key, value]) => { + if (typeof value === 'number') { + flags.nargs[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.coerce === 'object') { + Object.entries(opts.coerce).forEach(([key, value]) => { + if (typeof value === 'function') { + flags.coercions[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.config !== 'undefined') { + if (Array.isArray(opts.config) || typeof opts.config === 'string') { + [].concat(opts.config).filter(Boolean).forEach(function (key) { + flags.configs[key] = true; + }); + } + else if (typeof opts.config === 'object') { + Object.entries(opts.config).forEach(([key, value]) => { + if (typeof value === 'boolean' || typeof value === 'function') { + flags.configs[key] = value; + } + }); + } + } + extendAliases(opts.key, aliases, opts.default, flags.arrays); + Object.keys(defaults).forEach(function (key) { + (flags.aliases[key] || []).forEach(function (alias) { + defaults[alias] = defaults[key]; + }); + }); + let error = null; + checkConfiguration(); + let notFlags = []; + const argv = Object.assign(Object.create(null), { _: [] }); + const argvReturn = {}; + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + const truncatedArg = arg.replace(/^-{3,}/, '---'); + let broken; + let key; + let letters; + let m; + let next; + let value; + if (arg !== '--' && isUnknownOptionAsArg(arg)) { + pushPositional(arg); + } + else if (truncatedArg.match(/---+(=|$)/)) { + pushPositional(arg); + continue; + } + else if (arg.match(/^--.+=/) || (!configuration['short-option-groups'] && arg.match(/^-.+=/))) { + m = arg.match(/^--?([^=]+)=([\s\S]*)$/); + if (m !== null && Array.isArray(m) && m.length >= 3) { + if (checkAllAliases(m[1], flags.arrays)) { + i = eatArray(i, m[1], args, m[2]); + } + else if (checkAllAliases(m[1], flags.nargs) !== false) { + i = eatNargs(i, m[1], args, m[2]); + } + else { + setArg(m[1], m[2]); + } + } + } + else if (arg.match(negatedBoolean) && configuration['boolean-negation']) { + m = arg.match(negatedBoolean); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false); + } + } + else if (arg.match(/^--.+/) || (!configuration['short-option-groups'] && arg.match(/^-[^-]+/))) { + m = arg.match(/^--?(.+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args); + } + else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args); + } + else { + next = args[i + 1]; + if (next !== undefined && (!next.match(/^-/) || + next.match(negative)) && + !checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } + else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } + else { + setArg(key, defaultValue(key)); + } + } + } + } + else if (arg.match(/^-.\..+=/)) { + m = arg.match(/^-([^=]+)=([\s\S]*)$/); + if (m !== null && Array.isArray(m) && m.length >= 3) { + setArg(m[1], m[2]); + } + } + else if (arg.match(/^-.\..+/) && !arg.match(negative)) { + next = args[i + 1]; + m = arg.match(/^-(.\..+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (next !== undefined && !next.match(/^-/) && + !checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } + else { + setArg(key, defaultValue(key)); + } + } + } + else if (arg.match(/^-[^-]+/) && !arg.match(negative)) { + letters = arg.slice(1, -1).split(''); + broken = false; + for (let j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + if (letters[j + 1] && letters[j + 1] === '=') { + value = arg.slice(j + 3); + key = letters[j]; + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args, value); + } + else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args, value); + } + else { + setArg(key, value); + } + broken = true; + break; + } + if (next === '-') { + setArg(letters[j], next); + continue; + } + if (/[A-Za-z]/.test(letters[j]) && + /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) && + checkAllAliases(next, flags.bools) === false) { + setArg(letters[j], next); + broken = true; + break; + } + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], next); + broken = true; + break; + } + else { + setArg(letters[j], defaultValue(letters[j])); + } + } + key = arg.slice(-1)[0]; + if (!broken && key !== '-') { + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args); + } + else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args); + } + else { + next = args[i + 1]; + if (next !== undefined && (!/^(-|--)[^-]/.test(next) || + next.match(negative)) && + !checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } + else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } + else { + setArg(key, defaultValue(key)); + } + } + } + } + else if (arg.match(/^-[0-9]$/) && + arg.match(negative) && + checkAllAliases(arg.slice(1), flags.bools)) { + key = arg.slice(1); + setArg(key, defaultValue(key)); + } + else if (arg === '--') { + notFlags = args.slice(i + 1); + break; + } + else if (configuration['halt-at-non-option']) { + notFlags = args.slice(i); + break; + } + else { + pushPositional(arg); + } + } + applyEnvVars(argv, true); + applyEnvVars(argv, false); + setConfig(argv); + setConfigObjects(); + applyDefaultsAndAliases(argv, flags.aliases, defaults, true); + applyCoercions(argv); + if (configuration['set-placeholder-key']) + setPlaceholderKeys(argv); + Object.keys(flags.counts).forEach(function (key) { + if (!hasKey(argv, key.split('.'))) + setArg(key, 0); + }); + if (notFlagsOption && notFlags.length) + argv[notFlagsArgv] = []; + notFlags.forEach(function (key) { + argv[notFlagsArgv].push(key); + }); + if (configuration['camel-case-expansion'] && configuration['strip-dashed']) { + Object.keys(argv).filter(key => key !== '--' && key.includes('-')).forEach(key => { + delete argv[key]; + }); + } + if (configuration['strip-aliased']) { + [].concat(...Object.keys(aliases).map(k => aliases[k])).forEach(alias => { + if (configuration['camel-case-expansion'] && alias.includes('-')) { + delete argv[alias.split('.').map(prop => camelCase(prop)).join('.')]; + } + delete argv[alias]; + }); + } + function pushPositional(arg) { + const maybeCoercedNumber = maybeCoerceNumber('_', arg); + if (typeof maybeCoercedNumber === 'string' || typeof maybeCoercedNumber === 'number') { + argv._.push(maybeCoercedNumber); + } + } + function eatNargs(i, key, args, argAfterEqualSign) { + let ii; + let toEat = checkAllAliases(key, flags.nargs); + toEat = typeof toEat !== 'number' || isNaN(toEat) ? 1 : toEat; + if (toEat === 0) { + if (!isUndefined(argAfterEqualSign)) { + error = Error(__('Argument unexpected for: %s', key)); + } + setArg(key, defaultValue(key)); + return i; + } + let available = isUndefined(argAfterEqualSign) ? 0 : 1; + if (configuration['nargs-eats-options']) { + if (args.length - (i + 1) + available < toEat) { + error = Error(__('Not enough arguments following: %s', key)); + } + available = toEat; + } + else { + for (ii = i + 1; ii < args.length; ii++) { + if (!args[ii].match(/^-[^0-9]/) || args[ii].match(negative) || isUnknownOptionAsArg(args[ii])) + available++; + else + break; + } + if (available < toEat) + error = Error(__('Not enough arguments following: %s', key)); + } + let consumed = Math.min(available, toEat); + if (!isUndefined(argAfterEqualSign) && consumed > 0) { + setArg(key, argAfterEqualSign); + consumed--; + } + for (ii = i + 1; ii < (consumed + i + 1); ii++) { + setArg(key, args[ii]); + } + return (i + consumed); + } + function eatArray(i, key, args, argAfterEqualSign) { + let argsToSet = []; + let next = argAfterEqualSign || args[i + 1]; + const nargsCount = checkAllAliases(key, flags.nargs); + if (checkAllAliases(key, flags.bools) && !(/^(true|false)$/.test(next))) { + argsToSet.push(true); + } + else if (isUndefined(next) || + (isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))) { + if (defaults[key] !== undefined) { + const defVal = defaults[key]; + argsToSet = Array.isArray(defVal) ? defVal : [defVal]; + } + } + else { + if (!isUndefined(argAfterEqualSign)) { + argsToSet.push(processValue(key, argAfterEqualSign)); + } + for (let ii = i + 1; ii < args.length; ii++) { + if ((!configuration['greedy-arrays'] && argsToSet.length > 0) || + (nargsCount && typeof nargsCount === 'number' && argsToSet.length >= nargsCount)) + break; + next = args[ii]; + if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) + break; + i = ii; + argsToSet.push(processValue(key, next)); + } + } + if (typeof nargsCount === 'number' && ((nargsCount && argsToSet.length < nargsCount) || + (isNaN(nargsCount) && argsToSet.length === 0))) { + error = Error(__('Not enough arguments following: %s', key)); + } + setArg(key, argsToSet); + return i; + } + function setArg(key, val) { + if (/-/.test(key) && configuration['camel-case-expansion']) { + const alias = key.split('.').map(function (prop) { + return camelCase(prop); + }).join('.'); + addNewAlias(key, alias); + } + const value = processValue(key, val); + const splitKey = key.split('.'); + setKey(argv, splitKey, value); + if (flags.aliases[key]) { + flags.aliases[key].forEach(function (x) { + const keyProperties = x.split('.'); + setKey(argv, keyProperties, value); + }); + } + if (splitKey.length > 1 && configuration['dot-notation']) { + (flags.aliases[splitKey[0]] || []).forEach(function (x) { + let keyProperties = x.split('.'); + const a = [].concat(splitKey); + a.shift(); + keyProperties = keyProperties.concat(a); + if (!(flags.aliases[key] || []).includes(keyProperties.join('.'))) { + setKey(argv, keyProperties, value); + } + }); + } + if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) { + const keys = [key].concat(flags.aliases[key] || []); + keys.forEach(function (key) { + Object.defineProperty(argvReturn, key, { + enumerable: true, + get() { + return val; + }, + set(value) { + val = typeof value === 'string' ? mixin.normalize(value) : value; + } + }); + }); + } + } + function addNewAlias(key, alias) { + if (!(flags.aliases[key] && flags.aliases[key].length)) { + flags.aliases[key] = [alias]; + newAliases[alias] = true; + } + if (!(flags.aliases[alias] && flags.aliases[alias].length)) { + addNewAlias(alias, key); + } + } + function processValue(key, val) { + if (typeof val === 'string' && + (val[0] === "'" || val[0] === '"') && + val[val.length - 1] === val[0]) { + val = val.substring(1, val.length - 1); + } + if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) { + if (typeof val === 'string') + val = val === 'true'; + } + let value = Array.isArray(val) + ? val.map(function (v) { return maybeCoerceNumber(key, v); }) + : maybeCoerceNumber(key, val); + if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === 'boolean')) { + value = increment(); + } + if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) { + if (Array.isArray(val)) + value = val.map((val) => { return mixin.normalize(val); }); + else + value = mixin.normalize(val); + } + return value; + } + function maybeCoerceNumber(key, value) { + if (!configuration['parse-positional-numbers'] && key === '_') + return value; + if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) { + const shouldCoerceNumber = looksLikeNumber(value) && configuration['parse-numbers'] && (Number.isSafeInteger(Math.floor(parseFloat(`${value}`)))); + if (shouldCoerceNumber || (!isUndefined(value) && checkAllAliases(key, flags.numbers))) { + value = Number(value); + } + } + return value; + } + function setConfig(argv) { + const configLookup = Object.create(null); + applyDefaultsAndAliases(configLookup, flags.aliases, defaults); + Object.keys(flags.configs).forEach(function (configKey) { + const configPath = argv[configKey] || configLookup[configKey]; + if (configPath) { + try { + let config = null; + const resolvedConfigPath = mixin.resolve(mixin.cwd(), configPath); + const resolveConfig = flags.configs[configKey]; + if (typeof resolveConfig === 'function') { + try { + config = resolveConfig(resolvedConfigPath); + } + catch (e) { + config = e; + } + if (config instanceof Error) { + error = config; + return; + } + } + else { + config = mixin.require(resolvedConfigPath); + } + setConfigObject(config); + } + catch (ex) { + if (ex.name === 'PermissionDenied') + error = ex; + else if (argv[configKey]) + error = Error(__('Invalid JSON config file: %s', configPath)); + } + } + }); + } + function setConfigObject(config, prev) { + Object.keys(config).forEach(function (key) { + const value = config[key]; + const fullKey = prev ? prev + '.' + key : key; + if (typeof value === 'object' && value !== null && !Array.isArray(value) && configuration['dot-notation']) { + setConfigObject(value, fullKey); + } + else { + if (!hasKey(argv, fullKey.split('.')) || (checkAllAliases(fullKey, flags.arrays) && configuration['combine-arrays'])) { + setArg(fullKey, value); + } + } + }); + } + function setConfigObjects() { + if (typeof configObjects !== 'undefined') { + configObjects.forEach(function (configObject) { + setConfigObject(configObject); + }); + } + } + function applyEnvVars(argv, configOnly) { + if (typeof envPrefix === 'undefined') + return; + const prefix = typeof envPrefix === 'string' ? envPrefix : ''; + const env = mixin.env(); + Object.keys(env).forEach(function (envVar) { + if (prefix === '' || envVar.lastIndexOf(prefix, 0) === 0) { + const keys = envVar.split('__').map(function (key, i) { + if (i === 0) { + key = key.substring(prefix.length); + } + return camelCase(key); + }); + if (((configOnly && flags.configs[keys.join('.')]) || !configOnly) && !hasKey(argv, keys)) { + setArg(keys.join('.'), env[envVar]); + } + } + }); + } + function applyCoercions(argv) { + let coerce; + const applied = new Set(); + Object.keys(argv).forEach(function (key) { + if (!applied.has(key)) { + coerce = checkAllAliases(key, flags.coercions); + if (typeof coerce === 'function') { + try { + const value = maybeCoerceNumber(key, coerce(argv[key])); + ([].concat(flags.aliases[key] || [], key)).forEach(ali => { + applied.add(ali); + argv[ali] = value; + }); + } + catch (err) { + error = err; + } + } + } + }); + } + function setPlaceholderKeys(argv) { + flags.keys.forEach((key) => { + if (~key.indexOf('.')) + return; + if (typeof argv[key] === 'undefined') + argv[key] = undefined; + }); + return argv; + } + function applyDefaultsAndAliases(obj, aliases, defaults, canLog = false) { + Object.keys(defaults).forEach(function (key) { + if (!hasKey(obj, key.split('.'))) { + setKey(obj, key.split('.'), defaults[key]); + if (canLog) + defaulted[key] = true; + (aliases[key] || []).forEach(function (x) { + if (hasKey(obj, x.split('.'))) + return; + setKey(obj, x.split('.'), defaults[key]); + }); + } + }); + } + function hasKey(obj, keys) { + let o = obj; + if (!configuration['dot-notation']) + keys = [keys.join('.')]; + keys.slice(0, -1).forEach(function (key) { + o = (o[key] || {}); + }); + const key = keys[keys.length - 1]; + if (typeof o !== 'object') + return false; + else + return key in o; + } + function setKey(obj, keys, value) { + let o = obj; + if (!configuration['dot-notation']) + keys = [keys.join('.')]; + keys.slice(0, -1).forEach(function (key) { + key = sanitizeKey(key); + if (typeof o === 'object' && o[key] === undefined) { + o[key] = {}; + } + if (typeof o[key] !== 'object' || Array.isArray(o[key])) { + if (Array.isArray(o[key])) { + o[key].push({}); + } + else { + o[key] = [o[key], {}]; + } + o = o[key][o[key].length - 1]; + } + else { + o = o[key]; + } + }); + const key = sanitizeKey(keys[keys.length - 1]); + const isTypeArray = checkAllAliases(keys.join('.'), flags.arrays); + const isValueArray = Array.isArray(value); + let duplicate = configuration['duplicate-arguments-array']; + if (!duplicate && checkAllAliases(key, flags.nargs)) { + duplicate = true; + if ((!isUndefined(o[key]) && flags.nargs[key] === 1) || (Array.isArray(o[key]) && o[key].length === flags.nargs[key])) { + o[key] = undefined; + } + } + if (value === increment()) { + o[key] = increment(o[key]); + } + else if (Array.isArray(o[key])) { + if (duplicate && isTypeArray && isValueArray) { + o[key] = configuration['flatten-duplicate-arrays'] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]); + } + else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) { + o[key] = value; + } + else { + o[key] = o[key].concat([value]); + } + } + else if (o[key] === undefined && isTypeArray) { + o[key] = isValueArray ? value : [value]; + } + else if (duplicate && !(o[key] === undefined || + checkAllAliases(key, flags.counts) || + checkAllAliases(key, flags.bools))) { + o[key] = [o[key], value]; + } + else { + o[key] = value; + } + } + function extendAliases(...args) { + args.forEach(function (obj) { + Object.keys(obj || {}).forEach(function (key) { + if (flags.aliases[key]) + return; + flags.aliases[key] = [].concat(aliases[key] || []); + flags.aliases[key].concat(key).forEach(function (x) { + if (/-/.test(x) && configuration['camel-case-expansion']) { + const c = camelCase(x); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + flags.aliases[key].concat(key).forEach(function (x) { + if (x.length > 1 && /[A-Z]/.test(x) && configuration['camel-case-expansion']) { + const c = decamelize(x, '-'); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + flags.aliases[key].forEach(function (x) { + flags.aliases[x] = [key].concat(flags.aliases[key].filter(function (y) { + return x !== y; + })); + }); + }); + }); + } + function checkAllAliases(key, flag) { + const toCheck = [].concat(flags.aliases[key] || [], key); + const keys = Object.keys(flag); + const setAlias = toCheck.find(key => keys.includes(key)); + return setAlias ? flag[setAlias] : false; + } + function hasAnyFlag(key) { + const flagsKeys = Object.keys(flags); + const toCheck = [].concat(flagsKeys.map(k => flags[k])); + return toCheck.some(function (flag) { + return Array.isArray(flag) ? flag.includes(key) : flag[key]; + }); + } + function hasFlagsMatching(arg, ...patterns) { + const toCheck = [].concat(...patterns); + return toCheck.some(function (pattern) { + const match = arg.match(pattern); + return match && hasAnyFlag(match[1]); + }); + } + function hasAllShortFlags(arg) { + if (arg.match(negative) || !arg.match(/^-[^-]+/)) { + return false; + } + let hasAllFlags = true; + let next; + const letters = arg.slice(1).split(''); + for (let j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + if (!hasAnyFlag(letters[j])) { + hasAllFlags = false; + break; + } + if ((letters[j + 1] && letters[j + 1] === '=') || + next === '-' || + (/[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) || + (letters[j + 1] && letters[j + 1].match(/\W/))) { + break; + } + } + return hasAllFlags; + } + function isUnknownOptionAsArg(arg) { + return configuration['unknown-options-as-args'] && isUnknownOption(arg); + } + function isUnknownOption(arg) { + arg = arg.replace(/^-{3,}/, '--'); + if (arg.match(negative)) { + return false; + } + if (hasAllShortFlags(arg)) { + return false; + } + const flagWithEquals = /^-+([^=]+?)=[\s\S]*$/; + const normalFlag = /^-+([^=]+?)$/; + const flagEndingInHyphen = /^-+([^=]+?)-$/; + const flagEndingInDigits = /^-+([^=]+?\d+)$/; + const flagEndingInNonWordCharacters = /^-+([^=]+?)\W+.*$/; + return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters); + } + function defaultValue(key) { + if (!checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts) && + `${key}` in defaults) { + return defaults[key]; + } + else { + return defaultForType(guessType(key)); + } + } + function defaultForType(type) { + const def = { + [DefaultValuesForTypeKey.BOOLEAN]: true, + [DefaultValuesForTypeKey.STRING]: '', + [DefaultValuesForTypeKey.NUMBER]: undefined, + [DefaultValuesForTypeKey.ARRAY]: [] + }; + return def[type]; + } + function guessType(key) { + let type = DefaultValuesForTypeKey.BOOLEAN; + if (checkAllAliases(key, flags.strings)) + type = DefaultValuesForTypeKey.STRING; + else if (checkAllAliases(key, flags.numbers)) + type = DefaultValuesForTypeKey.NUMBER; + else if (checkAllAliases(key, flags.bools)) + type = DefaultValuesForTypeKey.BOOLEAN; + else if (checkAllAliases(key, flags.arrays)) + type = DefaultValuesForTypeKey.ARRAY; + return type; + } + function isUndefined(num) { + return num === undefined; + } + function checkConfiguration() { + Object.keys(flags.counts).find(key => { + if (checkAllAliases(key, flags.arrays)) { + error = Error(__('Invalid configuration: %s, opts.count excludes opts.array.', key)); + return true; + } + else if (checkAllAliases(key, flags.nargs)) { + error = Error(__('Invalid configuration: %s, opts.count excludes opts.narg.', key)); + return true; + } + return false; + }); + } + return { + aliases: Object.assign({}, flags.aliases), + argv: Object.assign(argvReturn, argv), + configuration: configuration, + defaulted: Object.assign({}, defaulted), + error: error, + newAliases: Object.assign({}, newAliases) + }; + } +} +function combineAliases(aliases) { + const aliasArrays = []; + const combined = Object.create(null); + let change = true; + Object.keys(aliases).forEach(function (key) { + aliasArrays.push([].concat(aliases[key], key)); + }); + while (change) { + change = false; + for (let i = 0; i < aliasArrays.length; i++) { + for (let ii = i + 1; ii < aliasArrays.length; ii++) { + const intersect = aliasArrays[i].filter(function (v) { + return aliasArrays[ii].indexOf(v) !== -1; + }); + if (intersect.length) { + aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]); + aliasArrays.splice(ii, 1); + change = true; + break; + } + } + } + } + aliasArrays.forEach(function (aliasArray) { + aliasArray = aliasArray.filter(function (v, i, self) { + return self.indexOf(v) === i; + }); + const lastAlias = aliasArray.pop(); + if (lastAlias !== undefined && typeof lastAlias === 'string') { + combined[lastAlias] = aliasArray; + } + }); + return combined; +} +function increment(orig) { + return orig !== undefined ? orig + 1 : 1; +} +function sanitizeKey(key) { + if (key === '__proto__') + return '___proto___'; + return key; +} + +const minNodeVersion = (process && process.env && process.env.YARGS_MIN_NODE_VERSION) + ? Number(process.env.YARGS_MIN_NODE_VERSION) + : 10; +if (process && process.version) { + const major = Number(process.version.match(/v([^.]+)/)[1]); + if (major < minNodeVersion) { + throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`); + } +} +const env = process ? process.env : {}; +const parser = new YargsParser({ + cwd: process.cwd, + env: () => { + return env; + }, + format: util.format, + normalize: path.normalize, + resolve: path.resolve, + require: (path) => { + if (typeof require !== 'undefined') { + return require(path); + } + else if (path.match(/\.json$/)) { + return fs.readFileSync(path, 'utf8'); + } + else { + throw Error('only .json config files are supported in ESM'); + } + } +}); +const yargsParser = function Parser(args, opts) { + const result = parser.parse(args.slice(), opts); + return result.argv; +}; +yargsParser.detailed = function (args, opts) { + return parser.parse(args.slice(), opts); +}; +yargsParser.camelCase = camelCase; +yargsParser.decamelize = decamelize; +yargsParser.looksLikeNumber = looksLikeNumber; + +module.exports = yargsParser; diff --git a/yargs-parser/build/lib/index.js b/yargs-parser/build/lib/index.js new file mode 100644 index 0000000000..cc5078890a --- /dev/null +++ b/yargs-parser/build/lib/index.js @@ -0,0 +1,59 @@ +/** + * @fileoverview Main entrypoint for libraries using yargs-parser in Node.js + * CJS and ESM environments. + * + * @license + * Copyright (c) 2016, Contributors + * SPDX-License-Identifier: ISC + */ +import { format } from 'util'; +import { readFileSync } from 'fs'; +import { normalize, resolve } from 'path'; +import { camelCase, decamelize, looksLikeNumber } from './string-utils.js'; +import { YargsParser } from './yargs-parser.js'; +// See https://github.com/yargs/yargs-parser#supported-nodejs-versions for our +// version support policy. The YARGS_MIN_NODE_VERSION is used for testing only. +const minNodeVersion = (process && process.env && process.env.YARGS_MIN_NODE_VERSION) + ? Number(process.env.YARGS_MIN_NODE_VERSION) + : 10; +if (process && process.version) { + const major = Number(process.version.match(/v([^.]+)/)[1]); + if (major < minNodeVersion) { + throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`); + } +} +// Creates a yargs-parser instance using Node.js standard libraries: +const env = process ? process.env : {}; +const parser = new YargsParser({ + cwd: process.cwd, + env: () => { + return env; + }, + format, + normalize, + resolve, + // TODO: figure out a way to combine ESM and CJS coverage, such that + // we can exercise all the lines below: + require: (path) => { + if (typeof require !== 'undefined') { + return require(path); + } + else if (path.match(/\.json$/)) { + return readFileSync(path, 'utf8'); + } + else { + throw Error('only .json config files are supported in ESM'); + } + } +}); +const yargsParser = function Parser(args, opts) { + const result = parser.parse(args.slice(), opts); + return result.argv; +}; +yargsParser.detailed = function (args, opts) { + return parser.parse(args.slice(), opts); +}; +yargsParser.camelCase = camelCase; +yargsParser.decamelize = decamelize; +yargsParser.looksLikeNumber = looksLikeNumber; +export default yargsParser; diff --git a/yargs-parser/build/lib/string-utils.js b/yargs-parser/build/lib/string-utils.js new file mode 100644 index 0000000000..4e8bd996e7 --- /dev/null +++ b/yargs-parser/build/lib/string-utils.js @@ -0,0 +1,65 @@ +/** + * @license + * Copyright (c) 2016, Contributors + * SPDX-License-Identifier: ISC + */ +export function camelCase(str) { + // Handle the case where an argument is provided as camel case, e.g., fooBar. + // by ensuring that the string isn't already mixed case: + const isCamelCase = str !== str.toLowerCase() && str !== str.toUpperCase(); + if (!isCamelCase) { + str = str.toLowerCase(); + } + if (str.indexOf('-') === -1 && str.indexOf('_') === -1) { + return str; + } + else { + let camelcase = ''; + let nextChrUpper = false; + const leadingHyphens = str.match(/^-+/); + for (let i = leadingHyphens ? leadingHyphens[0].length : 0; i < str.length; i++) { + let chr = str.charAt(i); + if (nextChrUpper) { + nextChrUpper = false; + chr = chr.toUpperCase(); + } + if (i !== 0 && (chr === '-' || chr === '_')) { + nextChrUpper = true; + } + else if (chr !== '-' && chr !== '_') { + camelcase += chr; + } + } + return camelcase; + } +} +export function decamelize(str, joinString) { + const lowercase = str.toLowerCase(); + joinString = joinString || '-'; + let notCamelcase = ''; + for (let i = 0; i < str.length; i++) { + const chrLower = lowercase.charAt(i); + const chrString = str.charAt(i); + if (chrLower !== chrString && i > 0) { + notCamelcase += `${joinString}${lowercase.charAt(i)}`; + } + else { + notCamelcase += chrString; + } + } + return notCamelcase; +} +export function looksLikeNumber(x) { + if (x === null || x === undefined) + return false; + // if loaded from config, may already be a number. + if (typeof x === 'number') + return true; + // hexadecimal. + if (/^0x[0-9a-f]+$/i.test(x)) + return true; + // don't treat 0123 as a number; as it drops the leading '0'. + if (/^0[^.]/.test(x)) + return false; + return /^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); +} diff --git a/yargs-parser/build/lib/tokenize-arg-string.js b/yargs-parser/build/lib/tokenize-arg-string.js new file mode 100644 index 0000000000..5e732efe01 --- /dev/null +++ b/yargs-parser/build/lib/tokenize-arg-string.js @@ -0,0 +1,40 @@ +/** + * @license + * Copyright (c) 2016, Contributors + * SPDX-License-Identifier: ISC + */ +// take an un-split argv string and tokenize it. +export function tokenizeArgString(argString) { + if (Array.isArray(argString)) { + return argString.map(e => typeof e !== 'string' ? e + '' : e); + } + argString = argString.trim(); + let i = 0; + let prevC = null; + let c = null; + let opening = null; + const args = []; + for (let ii = 0; ii < argString.length; ii++) { + prevC = c; + c = argString.charAt(ii); + // split on spaces unless we're in quotes. + if (c === ' ' && !opening) { + if (!(prevC === ' ')) { + i++; + } + continue; + } + // don't split the string if we're in matching + // opening or closing single and double quotes. + if (c === opening) { + opening = null; + } + else if ((c === "'" || c === '"') && !opening) { + opening = c; + } + if (!args[i]) + args[i] = ''; + args[i] += c; + } + return args; +} diff --git a/yargs-parser/build/lib/yargs-parser-types.js b/yargs-parser/build/lib/yargs-parser-types.js new file mode 100644 index 0000000000..63b7c313aa --- /dev/null +++ b/yargs-parser/build/lib/yargs-parser-types.js @@ -0,0 +1,12 @@ +/** + * @license + * Copyright (c) 2016, Contributors + * SPDX-License-Identifier: ISC + */ +export var DefaultValuesForTypeKey; +(function (DefaultValuesForTypeKey) { + DefaultValuesForTypeKey["BOOLEAN"] = "boolean"; + DefaultValuesForTypeKey["STRING"] = "string"; + DefaultValuesForTypeKey["NUMBER"] = "number"; + DefaultValuesForTypeKey["ARRAY"] = "array"; +})(DefaultValuesForTypeKey || (DefaultValuesForTypeKey = {})); diff --git a/yargs-parser/build/lib/yargs-parser.js b/yargs-parser/build/lib/yargs-parser.js new file mode 100644 index 0000000000..828a440dd7 --- /dev/null +++ b/yargs-parser/build/lib/yargs-parser.js @@ -0,0 +1,1037 @@ +/** + * @license + * Copyright (c) 2016, Contributors + * SPDX-License-Identifier: ISC + */ +import { tokenizeArgString } from './tokenize-arg-string.js'; +import { DefaultValuesForTypeKey } from './yargs-parser-types.js'; +import { camelCase, decamelize, looksLikeNumber } from './string-utils.js'; +let mixin; +export class YargsParser { + constructor(_mixin) { + mixin = _mixin; + } + parse(argsInput, options) { + const opts = Object.assign({ + alias: undefined, + array: undefined, + boolean: undefined, + config: undefined, + configObjects: undefined, + configuration: undefined, + coerce: undefined, + count: undefined, + default: undefined, + envPrefix: undefined, + narg: undefined, + normalize: undefined, + string: undefined, + number: undefined, + __: undefined, + key: undefined + }, options); + // allow a string argument to be passed in rather + // than an argv array. + const args = tokenizeArgString(argsInput); + // aliases might have transitive relationships, normalize this. + const aliases = combineAliases(Object.assign(Object.create(null), opts.alias)); + const configuration = Object.assign({ + 'boolean-negation': true, + 'camel-case-expansion': true, + 'combine-arrays': false, + 'dot-notation': true, + 'duplicate-arguments-array': true, + 'flatten-duplicate-arrays': true, + 'greedy-arrays': true, + 'halt-at-non-option': false, + 'nargs-eats-options': false, + 'negation-prefix': 'no-', + 'parse-numbers': true, + 'parse-positional-numbers': true, + 'populate--': false, + 'set-placeholder-key': false, + 'short-option-groups': true, + 'strip-aliased': false, + 'strip-dashed': false, + 'unknown-options-as-args': false + }, opts.configuration); + const defaults = Object.assign(Object.create(null), opts.default); + const configObjects = opts.configObjects || []; + const envPrefix = opts.envPrefix; + const notFlagsOption = configuration['populate--']; + const notFlagsArgv = notFlagsOption ? '--' : '_'; + const newAliases = Object.create(null); + const defaulted = Object.create(null); + // allow a i18n handler to be passed in, default to a fake one (util.format). + const __ = opts.__ || mixin.format; + const flags = { + aliases: Object.create(null), + arrays: Object.create(null), + bools: Object.create(null), + strings: Object.create(null), + numbers: Object.create(null), + counts: Object.create(null), + normalize: Object.create(null), + configs: Object.create(null), + nargs: Object.create(null), + coercions: Object.create(null), + keys: [] + }; + const negative = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/; + const negatedBoolean = new RegExp('^--' + configuration['negation-prefix'] + '(.+)'); + [].concat(opts.array || []).filter(Boolean).forEach(function (opt) { + const key = typeof opt === 'object' ? opt.key : opt; + // assign to flags[bools|strings|numbers] + const assignment = Object.keys(opt).map(function (key) { + const arrayFlagKeys = { + boolean: 'bools', + string: 'strings', + number: 'numbers' + }; + return arrayFlagKeys[key]; + }).filter(Boolean).pop(); + // assign key to be coerced + if (assignment) { + flags[assignment][key] = true; + } + flags.arrays[key] = true; + flags.keys.push(key); + }); + [].concat(opts.boolean || []).filter(Boolean).forEach(function (key) { + flags.bools[key] = true; + flags.keys.push(key); + }); + [].concat(opts.string || []).filter(Boolean).forEach(function (key) { + flags.strings[key] = true; + flags.keys.push(key); + }); + [].concat(opts.number || []).filter(Boolean).forEach(function (key) { + flags.numbers[key] = true; + flags.keys.push(key); + }); + [].concat(opts.count || []).filter(Boolean).forEach(function (key) { + flags.counts[key] = true; + flags.keys.push(key); + }); + [].concat(opts.normalize || []).filter(Boolean).forEach(function (key) { + flags.normalize[key] = true; + flags.keys.push(key); + }); + if (typeof opts.narg === 'object') { + Object.entries(opts.narg).forEach(([key, value]) => { + if (typeof value === 'number') { + flags.nargs[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.coerce === 'object') { + Object.entries(opts.coerce).forEach(([key, value]) => { + if (typeof value === 'function') { + flags.coercions[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.config !== 'undefined') { + if (Array.isArray(opts.config) || typeof opts.config === 'string') { + ; + [].concat(opts.config).filter(Boolean).forEach(function (key) { + flags.configs[key] = true; + }); + } + else if (typeof opts.config === 'object') { + Object.entries(opts.config).forEach(([key, value]) => { + if (typeof value === 'boolean' || typeof value === 'function') { + flags.configs[key] = value; + } + }); + } + } + // create a lookup table that takes into account all + // combinations of aliases: {f: ['foo'], foo: ['f']} + extendAliases(opts.key, aliases, opts.default, flags.arrays); + // apply default values to all aliases. + Object.keys(defaults).forEach(function (key) { + (flags.aliases[key] || []).forEach(function (alias) { + defaults[alias] = defaults[key]; + }); + }); + let error = null; + checkConfiguration(); + let notFlags = []; + const argv = Object.assign(Object.create(null), { _: [] }); + // TODO(bcoe): for the first pass at removing object prototype we didn't + // remove all prototypes from objects returned by this API, we might want + // to gradually move towards doing so. + const argvReturn = {}; + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + const truncatedArg = arg.replace(/^-{3,}/, '---'); + let broken; + let key; + let letters; + let m; + let next; + let value; + // any unknown option (except for end-of-options, "--") + if (arg !== '--' && isUnknownOptionAsArg(arg)) { + pushPositional(arg); + // ---, ---=, ----, etc, + } + else if (truncatedArg.match(/---+(=|$)/)) { + // options without key name are invalid. + pushPositional(arg); + continue; + // -- separated by = + } + else if (arg.match(/^--.+=/) || (!configuration['short-option-groups'] && arg.match(/^-.+=/))) { + // Using [\s\S] instead of . because js doesn't support the + // 'dotall' regex modifier. See: + // http://stackoverflow.com/a/1068308/13216 + m = arg.match(/^--?([^=]+)=([\s\S]*)$/); + // arrays format = '--f=a b c' + if (m !== null && Array.isArray(m) && m.length >= 3) { + if (checkAllAliases(m[1], flags.arrays)) { + i = eatArray(i, m[1], args, m[2]); + } + else if (checkAllAliases(m[1], flags.nargs) !== false) { + // nargs format = '--f=monkey washing cat' + i = eatNargs(i, m[1], args, m[2]); + } + else { + setArg(m[1], m[2]); + } + } + } + else if (arg.match(negatedBoolean) && configuration['boolean-negation']) { + m = arg.match(negatedBoolean); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false); + } + // -- separated by space. + } + else if (arg.match(/^--.+/) || (!configuration['short-option-groups'] && arg.match(/^-[^-]+/))) { + m = arg.match(/^--?(.+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (checkAllAliases(key, flags.arrays)) { + // array format = '--foo a b c' + i = eatArray(i, key, args); + } + else if (checkAllAliases(key, flags.nargs) !== false) { + // nargs format = '--foo a b c' + // should be truthy even if: flags.nargs[key] === 0 + i = eatNargs(i, key, args); + } + else { + next = args[i + 1]; + if (next !== undefined && (!next.match(/^-/) || + next.match(negative)) && + !checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } + else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } + else { + setArg(key, defaultValue(key)); + } + } + } + // dot-notation flag separated by '='. + } + else if (arg.match(/^-.\..+=/)) { + m = arg.match(/^-([^=]+)=([\s\S]*)$/); + if (m !== null && Array.isArray(m) && m.length >= 3) { + setArg(m[1], m[2]); + } + // dot-notation flag separated by space. + } + else if (arg.match(/^-.\..+/) && !arg.match(negative)) { + next = args[i + 1]; + m = arg.match(/^-(.\..+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (next !== undefined && !next.match(/^-/) && + !checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } + else { + setArg(key, defaultValue(key)); + } + } + } + else if (arg.match(/^-[^-]+/) && !arg.match(negative)) { + letters = arg.slice(1, -1).split(''); + broken = false; + for (let j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + if (letters[j + 1] && letters[j + 1] === '=') { + value = arg.slice(j + 3); + key = letters[j]; + if (checkAllAliases(key, flags.arrays)) { + // array format = '-f=a b c' + i = eatArray(i, key, args, value); + } + else if (checkAllAliases(key, flags.nargs) !== false) { + // nargs format = '-f=monkey washing cat' + i = eatNargs(i, key, args, value); + } + else { + setArg(key, value); + } + broken = true; + break; + } + if (next === '-') { + setArg(letters[j], next); + continue; + } + // current letter is an alphabetic character and next value is a number + if (/[A-Za-z]/.test(letters[j]) && + /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) && + checkAllAliases(next, flags.bools) === false) { + setArg(letters[j], next); + broken = true; + break; + } + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], next); + broken = true; + break; + } + else { + setArg(letters[j], defaultValue(letters[j])); + } + } + key = arg.slice(-1)[0]; + if (!broken && key !== '-') { + if (checkAllAliases(key, flags.arrays)) { + // array format = '-f a b c' + i = eatArray(i, key, args); + } + else if (checkAllAliases(key, flags.nargs) !== false) { + // nargs format = '-f a b c' + // should be truthy even if: flags.nargs[key] === 0 + i = eatNargs(i, key, args); + } + else { + next = args[i + 1]; + if (next !== undefined && (!/^(-|--)[^-]/.test(next) || + next.match(negative)) && + !checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } + else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } + else { + setArg(key, defaultValue(key)); + } + } + } + } + else if (arg.match(/^-[0-9]$/) && + arg.match(negative) && + checkAllAliases(arg.slice(1), flags.bools)) { + // single-digit boolean alias, e.g: xargs -0 + key = arg.slice(1); + setArg(key, defaultValue(key)); + } + else if (arg === '--') { + notFlags = args.slice(i + 1); + break; + } + else if (configuration['halt-at-non-option']) { + notFlags = args.slice(i); + break; + } + else { + pushPositional(arg); + } + } + // order of precedence: + // 1. command line arg + // 2. value from env var + // 3. value from config file + // 4. value from config objects + // 5. configured default value + applyEnvVars(argv, true); // special case: check env vars that point to config file + applyEnvVars(argv, false); + setConfig(argv); + setConfigObjects(); + applyDefaultsAndAliases(argv, flags.aliases, defaults, true); + applyCoercions(argv); + if (configuration['set-placeholder-key']) + setPlaceholderKeys(argv); + // for any counts either not in args or without an explicit default, set to 0 + Object.keys(flags.counts).forEach(function (key) { + if (!hasKey(argv, key.split('.'))) + setArg(key, 0); + }); + // '--' defaults to undefined. + if (notFlagsOption && notFlags.length) + argv[notFlagsArgv] = []; + notFlags.forEach(function (key) { + argv[notFlagsArgv].push(key); + }); + if (configuration['camel-case-expansion'] && configuration['strip-dashed']) { + Object.keys(argv).filter(key => key !== '--' && key.includes('-')).forEach(key => { + delete argv[key]; + }); + } + if (configuration['strip-aliased']) { + ; + [].concat(...Object.keys(aliases).map(k => aliases[k])).forEach(alias => { + if (configuration['camel-case-expansion'] && alias.includes('-')) { + delete argv[alias.split('.').map(prop => camelCase(prop)).join('.')]; + } + delete argv[alias]; + }); + } + // Push argument into positional array, applying numeric coercion: + function pushPositional(arg) { + const maybeCoercedNumber = maybeCoerceNumber('_', arg); + if (typeof maybeCoercedNumber === 'string' || typeof maybeCoercedNumber === 'number') { + argv._.push(maybeCoercedNumber); + } + } + // how many arguments should we consume, based + // on the nargs option? + function eatNargs(i, key, args, argAfterEqualSign) { + let ii; + let toEat = checkAllAliases(key, flags.nargs); + // NaN has a special meaning for the array type, indicating that one or + // more values are expected. + toEat = typeof toEat !== 'number' || isNaN(toEat) ? 1 : toEat; + if (toEat === 0) { + if (!isUndefined(argAfterEqualSign)) { + error = Error(__('Argument unexpected for: %s', key)); + } + setArg(key, defaultValue(key)); + return i; + } + let available = isUndefined(argAfterEqualSign) ? 0 : 1; + if (configuration['nargs-eats-options']) { + // classic behavior, yargs eats positional and dash arguments. + if (args.length - (i + 1) + available < toEat) { + error = Error(__('Not enough arguments following: %s', key)); + } + available = toEat; + } + else { + // nargs will not consume flag arguments, e.g., -abc, --foo, + // and terminates when one is observed. + for (ii = i + 1; ii < args.length; ii++) { + if (!args[ii].match(/^-[^0-9]/) || args[ii].match(negative) || isUnknownOptionAsArg(args[ii])) + available++; + else + break; + } + if (available < toEat) + error = Error(__('Not enough arguments following: %s', key)); + } + let consumed = Math.min(available, toEat); + if (!isUndefined(argAfterEqualSign) && consumed > 0) { + setArg(key, argAfterEqualSign); + consumed--; + } + for (ii = i + 1; ii < (consumed + i + 1); ii++) { + setArg(key, args[ii]); + } + return (i + consumed); + } + // if an option is an array, eat all non-hyphenated arguments + // following it... YUM! + // e.g., --foo apple banana cat becomes ["apple", "banana", "cat"] + function eatArray(i, key, args, argAfterEqualSign) { + let argsToSet = []; + let next = argAfterEqualSign || args[i + 1]; + // If both array and nargs are configured, enforce the nargs count: + const nargsCount = checkAllAliases(key, flags.nargs); + if (checkAllAliases(key, flags.bools) && !(/^(true|false)$/.test(next))) { + argsToSet.push(true); + } + else if (isUndefined(next) || + (isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))) { + // for keys without value ==> argsToSet remains an empty [] + // set user default value, if available + if (defaults[key] !== undefined) { + const defVal = defaults[key]; + argsToSet = Array.isArray(defVal) ? defVal : [defVal]; + } + } + else { + // value in --option=value is eaten as is + if (!isUndefined(argAfterEqualSign)) { + argsToSet.push(processValue(key, argAfterEqualSign)); + } + for (let ii = i + 1; ii < args.length; ii++) { + if ((!configuration['greedy-arrays'] && argsToSet.length > 0) || + (nargsCount && typeof nargsCount === 'number' && argsToSet.length >= nargsCount)) + break; + next = args[ii]; + if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) + break; + i = ii; + argsToSet.push(processValue(key, next)); + } + } + // If both array and nargs are configured, create an error if less than + // nargs positionals were found. NaN has special meaning, indicating + // that at least one value is required (more are okay). + if (typeof nargsCount === 'number' && ((nargsCount && argsToSet.length < nargsCount) || + (isNaN(nargsCount) && argsToSet.length === 0))) { + error = Error(__('Not enough arguments following: %s', key)); + } + setArg(key, argsToSet); + return i; + } + function setArg(key, val) { + if (/-/.test(key) && configuration['camel-case-expansion']) { + const alias = key.split('.').map(function (prop) { + return camelCase(prop); + }).join('.'); + addNewAlias(key, alias); + } + const value = processValue(key, val); + const splitKey = key.split('.'); + setKey(argv, splitKey, value); + // handle populating aliases of the full key + if (flags.aliases[key]) { + flags.aliases[key].forEach(function (x) { + const keyProperties = x.split('.'); + setKey(argv, keyProperties, value); + }); + } + // handle populating aliases of the first element of the dot-notation key + if (splitKey.length > 1 && configuration['dot-notation']) { + ; + (flags.aliases[splitKey[0]] || []).forEach(function (x) { + let keyProperties = x.split('.'); + // expand alias with nested objects in key + const a = [].concat(splitKey); + a.shift(); // nuke the old key. + keyProperties = keyProperties.concat(a); + // populate alias only if is not already an alias of the full key + // (already populated above) + if (!(flags.aliases[key] || []).includes(keyProperties.join('.'))) { + setKey(argv, keyProperties, value); + } + }); + } + // Set normalize getter and setter when key is in 'normalize' but isn't an array + if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) { + const keys = [key].concat(flags.aliases[key] || []); + keys.forEach(function (key) { + Object.defineProperty(argvReturn, key, { + enumerable: true, + get() { + return val; + }, + set(value) { + val = typeof value === 'string' ? mixin.normalize(value) : value; + } + }); + }); + } + } + function addNewAlias(key, alias) { + if (!(flags.aliases[key] && flags.aliases[key].length)) { + flags.aliases[key] = [alias]; + newAliases[alias] = true; + } + if (!(flags.aliases[alias] && flags.aliases[alias].length)) { + addNewAlias(alias, key); + } + } + function processValue(key, val) { + // strings may be quoted, clean this up as we assign values. + if (typeof val === 'string' && + (val[0] === "'" || val[0] === '"') && + val[val.length - 1] === val[0]) { + val = val.substring(1, val.length - 1); + } + // handle parsing boolean arguments --foo=true --bar false. + if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) { + if (typeof val === 'string') + val = val === 'true'; + } + let value = Array.isArray(val) + ? val.map(function (v) { return maybeCoerceNumber(key, v); }) + : maybeCoerceNumber(key, val); + // increment a count given as arg (either no value or value parsed as boolean) + if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === 'boolean')) { + value = increment(); + } + // Set normalized value when key is in 'normalize' and in 'arrays' + if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) { + if (Array.isArray(val)) + value = val.map((val) => { return mixin.normalize(val); }); + else + value = mixin.normalize(val); + } + return value; + } + function maybeCoerceNumber(key, value) { + if (!configuration['parse-positional-numbers'] && key === '_') + return value; + if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) { + const shouldCoerceNumber = looksLikeNumber(value) && configuration['parse-numbers'] && (Number.isSafeInteger(Math.floor(parseFloat(`${value}`)))); + if (shouldCoerceNumber || (!isUndefined(value) && checkAllAliases(key, flags.numbers))) { + value = Number(value); + } + } + return value; + } + // set args from config.json file, this should be + // applied last so that defaults can be applied. + function setConfig(argv) { + const configLookup = Object.create(null); + // expand defaults/aliases, in-case any happen to reference + // the config.json file. + applyDefaultsAndAliases(configLookup, flags.aliases, defaults); + Object.keys(flags.configs).forEach(function (configKey) { + const configPath = argv[configKey] || configLookup[configKey]; + if (configPath) { + try { + let config = null; + const resolvedConfigPath = mixin.resolve(mixin.cwd(), configPath); + const resolveConfig = flags.configs[configKey]; + if (typeof resolveConfig === 'function') { + try { + config = resolveConfig(resolvedConfigPath); + } + catch (e) { + config = e; + } + if (config instanceof Error) { + error = config; + return; + } + } + else { + config = mixin.require(resolvedConfigPath); + } + setConfigObject(config); + } + catch (ex) { + // Deno will receive a PermissionDenied error if an attempt is + // made to load config without the --allow-read flag: + if (ex.name === 'PermissionDenied') + error = ex; + else if (argv[configKey]) + error = Error(__('Invalid JSON config file: %s', configPath)); + } + } + }); + } + // set args from config object. + // it recursively checks nested objects. + function setConfigObject(config, prev) { + Object.keys(config).forEach(function (key) { + const value = config[key]; + const fullKey = prev ? prev + '.' + key : key; + // if the value is an inner object and we have dot-notation + // enabled, treat inner objects in config the same as + // heavily nested dot notations (foo.bar.apple). + if (typeof value === 'object' && value !== null && !Array.isArray(value) && configuration['dot-notation']) { + // if the value is an object but not an array, check nested object + setConfigObject(value, fullKey); + } + else { + // setting arguments via CLI takes precedence over + // values within the config file. + if (!hasKey(argv, fullKey.split('.')) || (checkAllAliases(fullKey, flags.arrays) && configuration['combine-arrays'])) { + setArg(fullKey, value); + } + } + }); + } + // set all config objects passed in opts + function setConfigObjects() { + if (typeof configObjects !== 'undefined') { + configObjects.forEach(function (configObject) { + setConfigObject(configObject); + }); + } + } + function applyEnvVars(argv, configOnly) { + if (typeof envPrefix === 'undefined') + return; + const prefix = typeof envPrefix === 'string' ? envPrefix : ''; + const env = mixin.env(); + Object.keys(env).forEach(function (envVar) { + if (prefix === '' || envVar.lastIndexOf(prefix, 0) === 0) { + // get array of nested keys and convert them to camel case + const keys = envVar.split('__').map(function (key, i) { + if (i === 0) { + key = key.substring(prefix.length); + } + return camelCase(key); + }); + if (((configOnly && flags.configs[keys.join('.')]) || !configOnly) && !hasKey(argv, keys)) { + setArg(keys.join('.'), env[envVar]); + } + } + }); + } + function applyCoercions(argv) { + let coerce; + const applied = new Set(); + Object.keys(argv).forEach(function (key) { + if (!applied.has(key)) { // If we haven't already coerced this option via one of its aliases + coerce = checkAllAliases(key, flags.coercions); + if (typeof coerce === 'function') { + try { + const value = maybeCoerceNumber(key, coerce(argv[key])); + ([].concat(flags.aliases[key] || [], key)).forEach(ali => { + applied.add(ali); + argv[ali] = value; + }); + } + catch (err) { + error = err; + } + } + } + }); + } + function setPlaceholderKeys(argv) { + flags.keys.forEach((key) => { + // don't set placeholder keys for dot notation options 'foo.bar'. + if (~key.indexOf('.')) + return; + if (typeof argv[key] === 'undefined') + argv[key] = undefined; + }); + return argv; + } + function applyDefaultsAndAliases(obj, aliases, defaults, canLog = false) { + Object.keys(defaults).forEach(function (key) { + if (!hasKey(obj, key.split('.'))) { + setKey(obj, key.split('.'), defaults[key]); + if (canLog) + defaulted[key] = true; + (aliases[key] || []).forEach(function (x) { + if (hasKey(obj, x.split('.'))) + return; + setKey(obj, x.split('.'), defaults[key]); + }); + } + }); + } + function hasKey(obj, keys) { + let o = obj; + if (!configuration['dot-notation']) + keys = [keys.join('.')]; + keys.slice(0, -1).forEach(function (key) { + o = (o[key] || {}); + }); + const key = keys[keys.length - 1]; + if (typeof o !== 'object') + return false; + else + return key in o; + } + function setKey(obj, keys, value) { + let o = obj; + if (!configuration['dot-notation']) + keys = [keys.join('.')]; + keys.slice(0, -1).forEach(function (key) { + // TODO(bcoe): in the next major version of yargs, switch to + // Object.create(null) for dot notation: + key = sanitizeKey(key); + if (typeof o === 'object' && o[key] === undefined) { + o[key] = {}; + } + if (typeof o[key] !== 'object' || Array.isArray(o[key])) { + // ensure that o[key] is an array, and that the last item is an empty object. + if (Array.isArray(o[key])) { + o[key].push({}); + } + else { + o[key] = [o[key], {}]; + } + // we want to update the empty object at the end of the o[key] array, so set o to that object + o = o[key][o[key].length - 1]; + } + else { + o = o[key]; + } + }); + // TODO(bcoe): in the next major version of yargs, switch to + // Object.create(null) for dot notation: + const key = sanitizeKey(keys[keys.length - 1]); + const isTypeArray = checkAllAliases(keys.join('.'), flags.arrays); + const isValueArray = Array.isArray(value); + let duplicate = configuration['duplicate-arguments-array']; + // nargs has higher priority than duplicate + if (!duplicate && checkAllAliases(key, flags.nargs)) { + duplicate = true; + if ((!isUndefined(o[key]) && flags.nargs[key] === 1) || (Array.isArray(o[key]) && o[key].length === flags.nargs[key])) { + o[key] = undefined; + } + } + if (value === increment()) { + o[key] = increment(o[key]); + } + else if (Array.isArray(o[key])) { + if (duplicate && isTypeArray && isValueArray) { + o[key] = configuration['flatten-duplicate-arrays'] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]); + } + else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) { + o[key] = value; + } + else { + o[key] = o[key].concat([value]); + } + } + else if (o[key] === undefined && isTypeArray) { + o[key] = isValueArray ? value : [value]; + } + else if (duplicate && !(o[key] === undefined || + checkAllAliases(key, flags.counts) || + checkAllAliases(key, flags.bools))) { + o[key] = [o[key], value]; + } + else { + o[key] = value; + } + } + // extend the aliases list with inferred aliases. + function extendAliases(...args) { + args.forEach(function (obj) { + Object.keys(obj || {}).forEach(function (key) { + // short-circuit if we've already added a key + // to the aliases array, for example it might + // exist in both 'opts.default' and 'opts.key'. + if (flags.aliases[key]) + return; + flags.aliases[key] = [].concat(aliases[key] || []); + // For "--option-name", also set argv.optionName + flags.aliases[key].concat(key).forEach(function (x) { + if (/-/.test(x) && configuration['camel-case-expansion']) { + const c = camelCase(x); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + // For "--optionName", also set argv['option-name'] + flags.aliases[key].concat(key).forEach(function (x) { + if (x.length > 1 && /[A-Z]/.test(x) && configuration['camel-case-expansion']) { + const c = decamelize(x, '-'); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + flags.aliases[key].forEach(function (x) { + flags.aliases[x] = [key].concat(flags.aliases[key].filter(function (y) { + return x !== y; + })); + }); + }); + }); + } + function checkAllAliases(key, flag) { + const toCheck = [].concat(flags.aliases[key] || [], key); + const keys = Object.keys(flag); + const setAlias = toCheck.find(key => keys.includes(key)); + return setAlias ? flag[setAlias] : false; + } + function hasAnyFlag(key) { + const flagsKeys = Object.keys(flags); + const toCheck = [].concat(flagsKeys.map(k => flags[k])); + return toCheck.some(function (flag) { + return Array.isArray(flag) ? flag.includes(key) : flag[key]; + }); + } + function hasFlagsMatching(arg, ...patterns) { + const toCheck = [].concat(...patterns); + return toCheck.some(function (pattern) { + const match = arg.match(pattern); + return match && hasAnyFlag(match[1]); + }); + } + // based on a simplified version of the short flag group parsing logic + function hasAllShortFlags(arg) { + // if this is a negative number, or doesn't start with a single hyphen, it's not a short flag group + if (arg.match(negative) || !arg.match(/^-[^-]+/)) { + return false; + } + let hasAllFlags = true; + let next; + const letters = arg.slice(1).split(''); + for (let j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + if (!hasAnyFlag(letters[j])) { + hasAllFlags = false; + break; + } + if ((letters[j + 1] && letters[j + 1] === '=') || + next === '-' || + (/[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) || + (letters[j + 1] && letters[j + 1].match(/\W/))) { + break; + } + } + return hasAllFlags; + } + function isUnknownOptionAsArg(arg) { + return configuration['unknown-options-as-args'] && isUnknownOption(arg); + } + function isUnknownOption(arg) { + arg = arg.replace(/^-{3,}/, '--'); + // ignore negative numbers + if (arg.match(negative)) { + return false; + } + // if this is a short option group and all of them are configured, it isn't unknown + if (hasAllShortFlags(arg)) { + return false; + } + // e.g. '--count=2' + const flagWithEquals = /^-+([^=]+?)=[\s\S]*$/; + // e.g. '-a' or '--arg' + const normalFlag = /^-+([^=]+?)$/; + // e.g. '-a-' + const flagEndingInHyphen = /^-+([^=]+?)-$/; + // e.g. '-abc123' + const flagEndingInDigits = /^-+([^=]+?\d+)$/; + // e.g. '-a/usr/local' + const flagEndingInNonWordCharacters = /^-+([^=]+?)\W+.*$/; + // check the different types of flag styles, including negatedBoolean, a pattern defined near the start of the parse method + return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters); + } + // make a best effort to pick a default value + // for an option based on name and type. + function defaultValue(key) { + if (!checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts) && + `${key}` in defaults) { + return defaults[key]; + } + else { + return defaultForType(guessType(key)); + } + } + // return a default value, given the type of a flag., + function defaultForType(type) { + const def = { + [DefaultValuesForTypeKey.BOOLEAN]: true, + [DefaultValuesForTypeKey.STRING]: '', + [DefaultValuesForTypeKey.NUMBER]: undefined, + [DefaultValuesForTypeKey.ARRAY]: [] + }; + return def[type]; + } + // given a flag, enforce a default type. + function guessType(key) { + let type = DefaultValuesForTypeKey.BOOLEAN; + if (checkAllAliases(key, flags.strings)) + type = DefaultValuesForTypeKey.STRING; + else if (checkAllAliases(key, flags.numbers)) + type = DefaultValuesForTypeKey.NUMBER; + else if (checkAllAliases(key, flags.bools)) + type = DefaultValuesForTypeKey.BOOLEAN; + else if (checkAllAliases(key, flags.arrays)) + type = DefaultValuesForTypeKey.ARRAY; + return type; + } + function isUndefined(num) { + return num === undefined; + } + // check user configuration settings for inconsistencies + function checkConfiguration() { + // count keys should not be set as array/narg + Object.keys(flags.counts).find(key => { + if (checkAllAliases(key, flags.arrays)) { + error = Error(__('Invalid configuration: %s, opts.count excludes opts.array.', key)); + return true; + } + else if (checkAllAliases(key, flags.nargs)) { + error = Error(__('Invalid configuration: %s, opts.count excludes opts.narg.', key)); + return true; + } + return false; + }); + } + return { + aliases: Object.assign({}, flags.aliases), + argv: Object.assign(argvReturn, argv), + configuration: configuration, + defaulted: Object.assign({}, defaulted), + error: error, + newAliases: Object.assign({}, newAliases) + }; + } +} +// if any aliases reference each other, we should +// merge them together. +function combineAliases(aliases) { + const aliasArrays = []; + const combined = Object.create(null); + let change = true; + // turn alias lookup hash {key: ['alias1', 'alias2']} into + // a simple array ['key', 'alias1', 'alias2'] + Object.keys(aliases).forEach(function (key) { + aliasArrays.push([].concat(aliases[key], key)); + }); + // combine arrays until zero changes are + // made in an iteration. + while (change) { + change = false; + for (let i = 0; i < aliasArrays.length; i++) { + for (let ii = i + 1; ii < aliasArrays.length; ii++) { + const intersect = aliasArrays[i].filter(function (v) { + return aliasArrays[ii].indexOf(v) !== -1; + }); + if (intersect.length) { + aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]); + aliasArrays.splice(ii, 1); + change = true; + break; + } + } + } + } + // map arrays back to the hash-lookup (de-dupe while + // we're at it). + aliasArrays.forEach(function (aliasArray) { + aliasArray = aliasArray.filter(function (v, i, self) { + return self.indexOf(v) === i; + }); + const lastAlias = aliasArray.pop(); + if (lastAlias !== undefined && typeof lastAlias === 'string') { + combined[lastAlias] = aliasArray; + } + }); + return combined; +} +// this function should only be called when a count is given as an arg +// it is NOT called to set a default value +// thus we can start the count at 1 instead of 0 +function increment(orig) { + return orig !== undefined ? orig + 1 : 1; +} +// TODO(bcoe): in the next major version of yargs, switch to +// Object.create(null) for dot notation: +function sanitizeKey(key) { + if (key === '__proto__') + return '___proto___'; + return key; +} diff --git a/yargs-parser/package.json b/yargs-parser/package.json new file mode 100644 index 0000000000..f97aa9e5df --- /dev/null +++ b/yargs-parser/package.json @@ -0,0 +1,87 @@ +{ + "name": "yargs-parser", + "version": "20.2.9", + "description": "the mighty option parser used by yargs", + "main": "build/index.cjs", + "exports": { + ".": [ + { + "import": "./build/lib/index.js", + "require": "./build/index.cjs" + }, + "./build/index.cjs" + ] + }, + "type": "module", + "module": "./build/lib/index.js", + "scripts": { + "check": "standardx '**/*.ts' && standardx '**/*.js' && standardx '**/*.cjs'", + "fix": "standardx --fix '**/*.ts' && standardx --fix '**/*.js' && standardx --fix '**/*.cjs'", + "pretest": "rimraf build && tsc -p tsconfig.test.json && cross-env NODE_ENV=test npm run build:cjs", + "test": "c8 --reporter=text --reporter=html mocha test/*.cjs", + "test:browser": "start-server-and-test 'serve ./ -p 8080' http://127.0.0.1:8080/package.json 'node ./test/browser/yargs-test.cjs'", + "pretest:typescript": "npm run pretest", + "test:typescript": "c8 mocha ./build/test/typescript/*.js", + "coverage": "c8 report --check-coverage", + "precompile": "rimraf build", + "compile": "tsc", + "postcompile": "npm run build:cjs", + "build:cjs": "rollup -c", + "prepare": "npm run compile" + }, + "repository": { + "type": "git", + "url": "https://github.com/yargs/yargs-parser.git" + }, + "keywords": [ + "argument", + "parser", + "yargs", + "command", + "cli", + "parsing", + "option", + "args", + "argument" + ], + "author": "Ben Coe ", + "license": "ISC", + "devDependencies": { + "@types/chai": "^4.2.11", + "@types/mocha": "^8.0.0", + "@types/node": "^14.0.0", + "@typescript-eslint/eslint-plugin": "^3.10.1", + "@typescript-eslint/parser": "^3.10.1", + "@wessberg/rollup-plugin-ts": "^1.2.28", + "c8": "^7.3.0", + "chai": "^4.2.0", + "cross-env": "^7.0.2", + "eslint": "^7.0.0", + "eslint-plugin-import": "^2.20.1", + "eslint-plugin-node": "^11.0.0", + "gts": "^3.0.0", + "mocha": "^9.0.0", + "puppeteer": "^10.0.0", + "rimraf": "^3.0.2", + "rollup": "^2.22.1", + "rollup-plugin-cleanup": "^3.1.1", + "serve": "^12.0.0", + "standardx": "^7.0.0", + "start-server-and-test": "^1.11.2", + "ts-transform-default-export": "^1.0.2", + "typescript": "^4.0.0" + }, + "files": [ + "browser.js", + "build", + "!*.d.ts" + ], + "engines": { + "node": ">=10" + }, + "standardx": { + "ignore": [ + "build" + ] + } +} diff --git a/yargs/browser.mjs b/yargs/browser.mjs new file mode 100644 index 0000000000..d8a9f3de66 --- /dev/null +++ b/yargs/browser.mjs @@ -0,0 +1,7 @@ +// Bootstrap yargs for browser: +import browserPlatformShim from './lib/platform-shims/browser.mjs'; +import {YargsWithShim} from './build/lib/yargs-factory.js'; + +const Yargs = YargsWithShim(browserPlatformShim); + +export default Yargs; diff --git a/yargs/build/index.cjs b/yargs/build/index.cjs new file mode 100644 index 0000000000..34ad9a897b --- /dev/null +++ b/yargs/build/index.cjs @@ -0,0 +1,2920 @@ +'use strict'; + +var assert = require('assert'); + +class YError extends Error { + constructor(msg) { + super(msg || 'yargs error'); + this.name = 'YError'; + Error.captureStackTrace(this, YError); + } +} + +let previouslyVisitedConfigs = []; +let shim; +function applyExtends(config, cwd, mergeExtends, _shim) { + shim = _shim; + let defaultConfig = {}; + if (Object.prototype.hasOwnProperty.call(config, 'extends')) { + if (typeof config.extends !== 'string') + return defaultConfig; + const isPath = /\.json|\..*rc$/.test(config.extends); + let pathToDefault = null; + if (!isPath) { + try { + pathToDefault = require.resolve(config.extends); + } + catch (_err) { + return config; + } + } + else { + pathToDefault = getPathToDefaultConfig(cwd, config.extends); + } + checkForCircularExtends(pathToDefault); + previouslyVisitedConfigs.push(pathToDefault); + defaultConfig = isPath + ? JSON.parse(shim.readFileSync(pathToDefault, 'utf8')) + : require(config.extends); + delete config.extends; + defaultConfig = applyExtends(defaultConfig, shim.path.dirname(pathToDefault), mergeExtends, shim); + } + previouslyVisitedConfigs = []; + return mergeExtends + ? mergeDeep(defaultConfig, config) + : Object.assign({}, defaultConfig, config); +} +function checkForCircularExtends(cfgPath) { + if (previouslyVisitedConfigs.indexOf(cfgPath) > -1) { + throw new YError(`Circular extended configurations: '${cfgPath}'.`); + } +} +function getPathToDefaultConfig(cwd, pathToExtend) { + return shim.path.resolve(cwd, pathToExtend); +} +function mergeDeep(config1, config2) { + const target = {}; + function isObject(obj) { + return obj && typeof obj === 'object' && !Array.isArray(obj); + } + Object.assign(target, config1); + for (const key of Object.keys(config2)) { + if (isObject(config2[key]) && isObject(target[key])) { + target[key] = mergeDeep(config1[key], config2[key]); + } + else { + target[key] = config2[key]; + } + } + return target; +} + +function parseCommand(cmd) { + const extraSpacesStrippedCommand = cmd.replace(/\s{2,}/g, ' '); + const splitCommand = extraSpacesStrippedCommand.split(/\s+(?![^[]*]|[^<]*>)/); + const bregex = /\.*[\][<>]/g; + const firstCommand = splitCommand.shift(); + if (!firstCommand) + throw new Error(`No command found in: ${cmd}`); + const parsedCommand = { + cmd: firstCommand.replace(bregex, ''), + demanded: [], + optional: [], + }; + splitCommand.forEach((cmd, i) => { + let variadic = false; + cmd = cmd.replace(/\s/g, ''); + if (/\.+[\]>]/.test(cmd) && i === splitCommand.length - 1) + variadic = true; + if (/^\[/.test(cmd)) { + parsedCommand.optional.push({ + cmd: cmd.replace(bregex, '').split('|'), + variadic, + }); + } + else { + parsedCommand.demanded.push({ + cmd: cmd.replace(bregex, '').split('|'), + variadic, + }); + } + }); + return parsedCommand; +} + +const positionName = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth']; +function argsert(arg1, arg2, arg3) { + function parseArgs() { + return typeof arg1 === 'object' + ? [{ demanded: [], optional: [] }, arg1, arg2] + : [ + parseCommand(`cmd ${arg1}`), + arg2, + arg3, + ]; + } + try { + let position = 0; + const [parsed, callerArguments, _length] = parseArgs(); + const args = [].slice.call(callerArguments); + while (args.length && args[args.length - 1] === undefined) + args.pop(); + const length = _length || args.length; + if (length < parsed.demanded.length) { + throw new YError(`Not enough arguments provided. Expected ${parsed.demanded.length} but received ${args.length}.`); + } + const totalCommands = parsed.demanded.length + parsed.optional.length; + if (length > totalCommands) { + throw new YError(`Too many arguments provided. Expected max ${totalCommands} but received ${length}.`); + } + parsed.demanded.forEach(demanded => { + const arg = args.shift(); + const observedType = guessType(arg); + const matchingTypes = demanded.cmd.filter(type => type === observedType || type === '*'); + if (matchingTypes.length === 0) + argumentTypeError(observedType, demanded.cmd, position); + position += 1; + }); + parsed.optional.forEach(optional => { + if (args.length === 0) + return; + const arg = args.shift(); + const observedType = guessType(arg); + const matchingTypes = optional.cmd.filter(type => type === observedType || type === '*'); + if (matchingTypes.length === 0) + argumentTypeError(observedType, optional.cmd, position); + position += 1; + }); + } + catch (err) { + console.warn(err.stack); + } +} +function guessType(arg) { + if (Array.isArray(arg)) { + return 'array'; + } + else if (arg === null) { + return 'null'; + } + return typeof arg; +} +function argumentTypeError(observedType, allowedTypes, position) { + throw new YError(`Invalid ${positionName[position] || 'manyith'} argument. Expected ${allowedTypes.join(' or ')} but received ${observedType}.`); +} + +function isPromise(maybePromise) { + return (!!maybePromise && + !!maybePromise.then && + typeof maybePromise.then === 'function'); +} + +function assertNotStrictEqual(actual, expected, shim, message) { + shim.assert.notStrictEqual(actual, expected, message); +} +function assertSingleKey(actual, shim) { + shim.assert.strictEqual(typeof actual, 'string'); +} +function objectKeys(object) { + return Object.keys(object); +} + +function objFilter(original = {}, filter = () => true) { + const obj = {}; + objectKeys(original).forEach(key => { + if (filter(key, original[key])) { + obj[key] = original[key]; + } + }); + return obj; +} + +function globalMiddlewareFactory(globalMiddleware, context) { + return function (callback, applyBeforeValidation = false) { + argsert(' [boolean]', [callback, applyBeforeValidation], arguments.length); + if (Array.isArray(callback)) { + for (let i = 0; i < callback.length; i++) { + if (typeof callback[i] !== 'function') { + throw Error('middleware must be a function'); + } + callback[i].applyBeforeValidation = applyBeforeValidation; + } + Array.prototype.push.apply(globalMiddleware, callback); + } + else if (typeof callback === 'function') { + callback.applyBeforeValidation = applyBeforeValidation; + globalMiddleware.push(callback); + } + return context; + }; +} +function commandMiddlewareFactory(commandMiddleware) { + if (!commandMiddleware) + return []; + return commandMiddleware.map(middleware => { + middleware.applyBeforeValidation = false; + return middleware; + }); +} +function applyMiddleware(argv, yargs, middlewares, beforeValidation) { + const beforeValidationError = new Error('middleware cannot return a promise when applyBeforeValidation is true'); + return middlewares.reduce((acc, middleware) => { + if (middleware.applyBeforeValidation !== beforeValidation) { + return acc; + } + if (isPromise(acc)) { + return acc + .then(initialObj => Promise.all([ + initialObj, + middleware(initialObj, yargs), + ])) + .then(([initialObj, middlewareObj]) => Object.assign(initialObj, middlewareObj)); + } + else { + const result = middleware(acc, yargs); + if (beforeValidation && isPromise(result)) + throw beforeValidationError; + return isPromise(result) + ? result.then(middlewareObj => Object.assign(acc, middlewareObj)) + : Object.assign(acc, result); + } + }, argv); +} + +function getProcessArgvBinIndex() { + if (isBundledElectronApp()) + return 0; + return 1; +} +function isBundledElectronApp() { + return isElectronApp() && !process.defaultApp; +} +function isElectronApp() { + return !!process.versions.electron; +} +function hideBin(argv) { + return argv.slice(getProcessArgvBinIndex() + 1); +} +function getProcessArgvBin() { + return process.argv[getProcessArgvBinIndex()]; +} + +var processArgv = /*#__PURE__*/Object.freeze({ + __proto__: null, + hideBin: hideBin, + getProcessArgvBin: getProcessArgvBin +}); + +function whichModule(exported) { + if (typeof require === 'undefined') + return null; + for (let i = 0, files = Object.keys(require.cache), mod; i < files.length; i++) { + mod = require.cache[files[i]]; + if (mod.exports === exported) + return mod; + } + return null; +} + +const DEFAULT_MARKER = /(^\*)|(^\$0)/; +function command(yargs, usage, validation, globalMiddleware = [], shim) { + const self = {}; + let handlers = {}; + let aliasMap = {}; + let defaultCommand; + self.addHandler = function addHandler(cmd, description, builder, handler, commandMiddleware, deprecated) { + let aliases = []; + const middlewares = commandMiddlewareFactory(commandMiddleware); + handler = handler || (() => { }); + if (Array.isArray(cmd)) { + if (isCommandAndAliases(cmd)) { + [cmd, ...aliases] = cmd; + } + else { + for (const command of cmd) { + self.addHandler(command); + } + } + } + else if (isCommandHandlerDefinition(cmd)) { + let command = Array.isArray(cmd.command) || typeof cmd.command === 'string' + ? cmd.command + : moduleName(cmd); + if (cmd.aliases) + command = [].concat(command).concat(cmd.aliases); + self.addHandler(command, extractDesc(cmd), cmd.builder, cmd.handler, cmd.middlewares, cmd.deprecated); + return; + } + else if (isCommandBuilderDefinition(builder)) { + self.addHandler([cmd].concat(aliases), description, builder.builder, builder.handler, builder.middlewares, builder.deprecated); + return; + } + if (typeof cmd === 'string') { + const parsedCommand = parseCommand(cmd); + aliases = aliases.map(alias => parseCommand(alias).cmd); + let isDefault = false; + const parsedAliases = [parsedCommand.cmd].concat(aliases).filter(c => { + if (DEFAULT_MARKER.test(c)) { + isDefault = true; + return false; + } + return true; + }); + if (parsedAliases.length === 0 && isDefault) + parsedAliases.push('$0'); + if (isDefault) { + parsedCommand.cmd = parsedAliases[0]; + aliases = parsedAliases.slice(1); + cmd = cmd.replace(DEFAULT_MARKER, parsedCommand.cmd); + } + aliases.forEach(alias => { + aliasMap[alias] = parsedCommand.cmd; + }); + if (description !== false) { + usage.command(cmd, description, isDefault, aliases, deprecated); + } + handlers[parsedCommand.cmd] = { + original: cmd, + description, + handler, + builder: builder || {}, + middlewares, + deprecated, + demanded: parsedCommand.demanded, + optional: parsedCommand.optional, + }; + if (isDefault) + defaultCommand = handlers[parsedCommand.cmd]; + } + }; + self.addDirectory = function addDirectory(dir, context, req, callerFile, opts) { + opts = opts || {}; + if (typeof opts.recurse !== 'boolean') + opts.recurse = false; + if (!Array.isArray(opts.extensions)) + opts.extensions = ['js']; + const parentVisit = typeof opts.visit === 'function' ? opts.visit : (o) => o; + opts.visit = function visit(obj, joined, filename) { + const visited = parentVisit(obj, joined, filename); + if (visited) { + if (~context.files.indexOf(joined)) + return visited; + context.files.push(joined); + self.addHandler(visited); + } + return visited; + }; + shim.requireDirectory({ require: req, filename: callerFile }, dir, opts); + }; + function moduleName(obj) { + const mod = whichModule(obj); + if (!mod) + throw new Error(`No command name given for module: ${shim.inspect(obj)}`); + return commandFromFilename(mod.filename); + } + function commandFromFilename(filename) { + return shim.path.basename(filename, shim.path.extname(filename)); + } + function extractDesc({ describe, description, desc, }) { + for (const test of [describe, description, desc]) { + if (typeof test === 'string' || test === false) + return test; + assertNotStrictEqual(test, true, shim); + } + return false; + } + self.getCommands = () => Object.keys(handlers).concat(Object.keys(aliasMap)); + self.getCommandHandlers = () => handlers; + self.hasDefaultCommand = () => !!defaultCommand; + self.runCommand = function runCommand(command, yargs, parsed, commandIndex) { + let aliases = parsed.aliases; + const commandHandler = handlers[command] || handlers[aliasMap[command]] || defaultCommand; + const currentContext = yargs.getContext(); + let numFiles = currentContext.files.length; + const parentCommands = currentContext.commands.slice(); + let innerArgv = parsed.argv; + let positionalMap = {}; + if (command) { + currentContext.commands.push(command); + currentContext.fullCommands.push(commandHandler.original); + } + const builder = commandHandler.builder; + if (isCommandBuilderCallback(builder)) { + const builderOutput = builder(yargs.reset(parsed.aliases)); + const innerYargs = isYargsInstance(builderOutput) ? builderOutput : yargs; + if (shouldUpdateUsage(innerYargs)) { + innerYargs + .getUsageInstance() + .usage(usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description); + } + innerArgv = innerYargs._parseArgs(null, null, true, commandIndex); + aliases = innerYargs.parsed.aliases; + } + else if (isCommandBuilderOptionDefinitions(builder)) { + const innerYargs = yargs.reset(parsed.aliases); + if (shouldUpdateUsage(innerYargs)) { + innerYargs + .getUsageInstance() + .usage(usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description); + } + Object.keys(commandHandler.builder).forEach(key => { + innerYargs.option(key, builder[key]); + }); + innerArgv = innerYargs._parseArgs(null, null, true, commandIndex); + aliases = innerYargs.parsed.aliases; + } + if (!yargs._hasOutput()) { + positionalMap = populatePositionals(commandHandler, innerArgv, currentContext); + } + const middlewares = globalMiddleware + .slice(0) + .concat(commandHandler.middlewares); + applyMiddleware(innerArgv, yargs, middlewares, true); + if (!yargs._hasOutput()) { + yargs._runValidation(innerArgv, aliases, positionalMap, yargs.parsed.error, !command); + } + if (commandHandler.handler && !yargs._hasOutput()) { + yargs._setHasOutput(); + const populateDoubleDash = !!yargs.getOptions().configuration['populate--']; + yargs._postProcess(innerArgv, populateDoubleDash); + innerArgv = applyMiddleware(innerArgv, yargs, middlewares, false); + let handlerResult; + if (isPromise(innerArgv)) { + handlerResult = innerArgv.then(argv => commandHandler.handler(argv)); + } + else { + handlerResult = commandHandler.handler(innerArgv); + } + const handlerFinishCommand = yargs.getHandlerFinishCommand(); + if (isPromise(handlerResult)) { + yargs.getUsageInstance().cacheHelpMessage(); + handlerResult + .then(value => { + if (handlerFinishCommand) { + handlerFinishCommand(value); + } + }) + .catch(error => { + try { + yargs.getUsageInstance().fail(null, error); + } + catch (err) { + } + }) + .then(() => { + yargs.getUsageInstance().clearCachedHelpMessage(); + }); + } + else { + if (handlerFinishCommand) { + handlerFinishCommand(handlerResult); + } + } + } + if (command) { + currentContext.commands.pop(); + currentContext.fullCommands.pop(); + } + numFiles = currentContext.files.length - numFiles; + if (numFiles > 0) + currentContext.files.splice(numFiles * -1, numFiles); + return innerArgv; + }; + function shouldUpdateUsage(yargs) { + return (!yargs.getUsageInstance().getUsageDisabled() && + yargs.getUsageInstance().getUsage().length === 0); + } + function usageFromParentCommandsCommandHandler(parentCommands, commandHandler) { + const c = DEFAULT_MARKER.test(commandHandler.original) + ? commandHandler.original.replace(DEFAULT_MARKER, '').trim() + : commandHandler.original; + const pc = parentCommands.filter(c => { + return !DEFAULT_MARKER.test(c); + }); + pc.push(c); + return `$0 ${pc.join(' ')}`; + } + self.runDefaultBuilderOn = function (yargs) { + assertNotStrictEqual(defaultCommand, undefined, shim); + if (shouldUpdateUsage(yargs)) { + const commandString = DEFAULT_MARKER.test(defaultCommand.original) + ? defaultCommand.original + : defaultCommand.original.replace(/^[^[\]<>]*/, '$0 '); + yargs.getUsageInstance().usage(commandString, defaultCommand.description); + } + const builder = defaultCommand.builder; + if (isCommandBuilderCallback(builder)) { + builder(yargs); + } + else if (!isCommandBuilderDefinition(builder)) { + Object.keys(builder).forEach(key => { + yargs.option(key, builder[key]); + }); + } + }; + function populatePositionals(commandHandler, argv, context) { + argv._ = argv._.slice(context.commands.length); + const demanded = commandHandler.demanded.slice(0); + const optional = commandHandler.optional.slice(0); + const positionalMap = {}; + validation.positionalCount(demanded.length, argv._.length); + while (demanded.length) { + const demand = demanded.shift(); + populatePositional(demand, argv, positionalMap); + } + while (optional.length) { + const maybe = optional.shift(); + populatePositional(maybe, argv, positionalMap); + } + argv._ = context.commands.concat(argv._.map(a => '' + a)); + postProcessPositionals(argv, positionalMap, self.cmdToParseOptions(commandHandler.original)); + return positionalMap; + } + function populatePositional(positional, argv, positionalMap) { + const cmd = positional.cmd[0]; + if (positional.variadic) { + positionalMap[cmd] = argv._.splice(0).map(String); + } + else { + if (argv._.length) + positionalMap[cmd] = [String(argv._.shift())]; + } + } + function postProcessPositionals(argv, positionalMap, parseOptions) { + const options = Object.assign({}, yargs.getOptions()); + options.default = Object.assign(parseOptions.default, options.default); + for (const key of Object.keys(parseOptions.alias)) { + options.alias[key] = (options.alias[key] || []).concat(parseOptions.alias[key]); + } + options.array = options.array.concat(parseOptions.array); + options.config = {}; + const unparsed = []; + Object.keys(positionalMap).forEach(key => { + positionalMap[key].map(value => { + if (options.configuration['unknown-options-as-args']) + options.key[key] = true; + unparsed.push(`--${key}`); + unparsed.push(value); + }); + }); + if (!unparsed.length) + return; + const config = Object.assign({}, options.configuration, { + 'populate--': true, + }); + const parsed = shim.Parser.detailed(unparsed, Object.assign({}, options, { + configuration: config, + })); + if (parsed.error) { + yargs.getUsageInstance().fail(parsed.error.message, parsed.error); + } + else { + const positionalKeys = Object.keys(positionalMap); + Object.keys(positionalMap).forEach(key => { + positionalKeys.push(...parsed.aliases[key]); + }); + Object.keys(parsed.argv).forEach(key => { + if (positionalKeys.indexOf(key) !== -1) { + if (!positionalMap[key]) + positionalMap[key] = parsed.argv[key]; + argv[key] = parsed.argv[key]; + } + }); + } + } + self.cmdToParseOptions = function (cmdString) { + const parseOptions = { + array: [], + default: {}, + alias: {}, + demand: {}, + }; + const parsed = parseCommand(cmdString); + parsed.demanded.forEach(d => { + const [cmd, ...aliases] = d.cmd; + if (d.variadic) { + parseOptions.array.push(cmd); + parseOptions.default[cmd] = []; + } + parseOptions.alias[cmd] = aliases; + parseOptions.demand[cmd] = true; + }); + parsed.optional.forEach(o => { + const [cmd, ...aliases] = o.cmd; + if (o.variadic) { + parseOptions.array.push(cmd); + parseOptions.default[cmd] = []; + } + parseOptions.alias[cmd] = aliases; + }); + return parseOptions; + }; + self.reset = () => { + handlers = {}; + aliasMap = {}; + defaultCommand = undefined; + return self; + }; + const frozens = []; + self.freeze = () => { + frozens.push({ + handlers, + aliasMap, + defaultCommand, + }); + }; + self.unfreeze = () => { + const frozen = frozens.pop(); + assertNotStrictEqual(frozen, undefined, shim); + ({ handlers, aliasMap, defaultCommand } = frozen); + }; + return self; +} +function isCommandBuilderDefinition(builder) { + return (typeof builder === 'object' && + !!builder.builder && + typeof builder.handler === 'function'); +} +function isCommandAndAliases(cmd) { + if (cmd.every(c => typeof c === 'string')) { + return true; + } + else { + return false; + } +} +function isCommandBuilderCallback(builder) { + return typeof builder === 'function'; +} +function isCommandBuilderOptionDefinitions(builder) { + return typeof builder === 'object'; +} +function isCommandHandlerDefinition(cmd) { + return typeof cmd === 'object' && !Array.isArray(cmd); +} + +function setBlocking(blocking) { + if (typeof process === 'undefined') + return; + [process.stdout, process.stderr].forEach(_stream => { + const stream = _stream; + if (stream._handle && + stream.isTTY && + typeof stream._handle.setBlocking === 'function') { + stream._handle.setBlocking(blocking); + } + }); +} + +function usage(yargs, y18n, shim) { + const __ = y18n.__; + const self = {}; + const fails = []; + self.failFn = function failFn(f) { + fails.push(f); + }; + let failMessage = null; + let showHelpOnFail = true; + self.showHelpOnFail = function showHelpOnFailFn(arg1 = true, arg2) { + function parseFunctionArgs() { + return typeof arg1 === 'string' ? [true, arg1] : [arg1, arg2]; + } + const [enabled, message] = parseFunctionArgs(); + failMessage = message; + showHelpOnFail = enabled; + return self; + }; + let failureOutput = false; + self.fail = function fail(msg, err) { + const logger = yargs._getLoggerInstance(); + if (fails.length) { + for (let i = fails.length - 1; i >= 0; --i) { + fails[i](msg, err, self); + } + } + else { + if (yargs.getExitProcess()) + setBlocking(true); + if (!failureOutput) { + failureOutput = true; + if (showHelpOnFail) { + yargs.showHelp('error'); + logger.error(); + } + if (msg || err) + logger.error(msg || err); + if (failMessage) { + if (msg || err) + logger.error(''); + logger.error(failMessage); + } + } + err = err || new YError(msg); + if (yargs.getExitProcess()) { + return yargs.exit(1); + } + else if (yargs._hasParseCallback()) { + return yargs.exit(1, err); + } + else { + throw err; + } + } + }; + let usages = []; + let usageDisabled = false; + self.usage = (msg, description) => { + if (msg === null) { + usageDisabled = true; + usages = []; + return self; + } + usageDisabled = false; + usages.push([msg, description || '']); + return self; + }; + self.getUsage = () => { + return usages; + }; + self.getUsageDisabled = () => { + return usageDisabled; + }; + self.getPositionalGroupName = () => { + return __('Positionals:'); + }; + let examples = []; + self.example = (cmd, description) => { + examples.push([cmd, description || '']); + }; + let commands = []; + self.command = function command(cmd, description, isDefault, aliases, deprecated = false) { + if (isDefault) { + commands = commands.map(cmdArray => { + cmdArray[2] = false; + return cmdArray; + }); + } + commands.push([cmd, description || '', isDefault, aliases, deprecated]); + }; + self.getCommands = () => commands; + let descriptions = {}; + self.describe = function describe(keyOrKeys, desc) { + if (Array.isArray(keyOrKeys)) { + keyOrKeys.forEach(k => { + self.describe(k, desc); + }); + } + else if (typeof keyOrKeys === 'object') { + Object.keys(keyOrKeys).forEach(k => { + self.describe(k, keyOrKeys[k]); + }); + } + else { + descriptions[keyOrKeys] = desc; + } + }; + self.getDescriptions = () => descriptions; + let epilogs = []; + self.epilog = msg => { + epilogs.push(msg); + }; + let wrapSet = false; + let wrap; + self.wrap = cols => { + wrapSet = true; + wrap = cols; + }; + function getWrap() { + if (!wrapSet) { + wrap = windowWidth(); + wrapSet = true; + } + return wrap; + } + const deferY18nLookupPrefix = '__yargsString__:'; + self.deferY18nLookup = str => deferY18nLookupPrefix + str; + self.help = function help() { + if (cachedHelpMessage) + return cachedHelpMessage; + normalizeAliases(); + const base$0 = yargs.customScriptName + ? yargs.$0 + : shim.path.basename(yargs.$0); + const demandedOptions = yargs.getDemandedOptions(); + const demandedCommands = yargs.getDemandedCommands(); + const deprecatedOptions = yargs.getDeprecatedOptions(); + const groups = yargs.getGroups(); + const options = yargs.getOptions(); + let keys = []; + keys = keys.concat(Object.keys(descriptions)); + keys = keys.concat(Object.keys(demandedOptions)); + keys = keys.concat(Object.keys(demandedCommands)); + keys = keys.concat(Object.keys(options.default)); + keys = keys.filter(filterHiddenOptions); + keys = Object.keys(keys.reduce((acc, key) => { + if (key !== '_') + acc[key] = true; + return acc; + }, {})); + const theWrap = getWrap(); + const ui = shim.cliui({ + width: theWrap, + wrap: !!theWrap, + }); + if (!usageDisabled) { + if (usages.length) { + usages.forEach(usage => { + ui.div(`${usage[0].replace(/\$0/g, base$0)}`); + if (usage[1]) { + ui.div({ text: `${usage[1]}`, padding: [1, 0, 0, 0] }); + } + }); + ui.div(); + } + else if (commands.length) { + let u = null; + if (demandedCommands._) { + u = `${base$0} <${__('command')}>\n`; + } + else { + u = `${base$0} [${__('command')}]\n`; + } + ui.div(`${u}`); + } + } + if (commands.length) { + ui.div(__('Commands:')); + const context = yargs.getContext(); + const parentCommands = context.commands.length + ? `${context.commands.join(' ')} ` + : ''; + if (yargs.getParserConfiguration()['sort-commands'] === true) { + commands = commands.sort((a, b) => a[0].localeCompare(b[0])); + } + commands.forEach(command => { + const commandString = `${base$0} ${parentCommands}${command[0].replace(/^\$0 ?/, '')}`; + ui.span({ + text: commandString, + padding: [0, 2, 0, 2], + width: maxWidth(commands, theWrap, `${base$0}${parentCommands}`) + 4, + }, { text: command[1] }); + const hints = []; + if (command[2]) + hints.push(`[${__('default')}]`); + if (command[3] && command[3].length) { + hints.push(`[${__('aliases:')} ${command[3].join(', ')}]`); + } + if (command[4]) { + if (typeof command[4] === 'string') { + hints.push(`[${__('deprecated: %s', command[4])}]`); + } + else { + hints.push(`[${__('deprecated')}]`); + } + } + if (hints.length) { + ui.div({ + text: hints.join(' '), + padding: [0, 0, 0, 2], + align: 'right', + }); + } + else { + ui.div(); + } + }); + ui.div(); + } + const aliasKeys = (Object.keys(options.alias) || []).concat(Object.keys(yargs.parsed.newAliases) || []); + keys = keys.filter(key => !yargs.parsed.newAliases[key] && + aliasKeys.every(alias => (options.alias[alias] || []).indexOf(key) === -1)); + const defaultGroup = __('Options:'); + if (!groups[defaultGroup]) + groups[defaultGroup] = []; + addUngroupedKeys(keys, options.alias, groups, defaultGroup); + const isLongSwitch = (sw) => /^--/.test(getText(sw)); + const displayedGroups = Object.keys(groups) + .filter(groupName => groups[groupName].length > 0) + .map(groupName => { + const normalizedKeys = groups[groupName] + .filter(filterHiddenOptions) + .map(key => { + if (~aliasKeys.indexOf(key)) + return key; + for (let i = 0, aliasKey; (aliasKey = aliasKeys[i]) !== undefined; i++) { + if (~(options.alias[aliasKey] || []).indexOf(key)) + return aliasKey; + } + return key; + }); + return { groupName, normalizedKeys }; + }) + .filter(({ normalizedKeys }) => normalizedKeys.length > 0) + .map(({ groupName, normalizedKeys }) => { + const switches = normalizedKeys.reduce((acc, key) => { + acc[key] = [key] + .concat(options.alias[key] || []) + .map(sw => { + if (groupName === self.getPositionalGroupName()) + return sw; + else { + return ((/^[0-9]$/.test(sw) + ? ~options.boolean.indexOf(key) + ? '-' + : '--' + : sw.length > 1 + ? '--' + : '-') + sw); + } + }) + .sort((sw1, sw2) => isLongSwitch(sw1) === isLongSwitch(sw2) + ? 0 + : isLongSwitch(sw1) + ? 1 + : -1) + .join(', '); + return acc; + }, {}); + return { groupName, normalizedKeys, switches }; + }); + const shortSwitchesUsed = displayedGroups + .filter(({ groupName }) => groupName !== self.getPositionalGroupName()) + .some(({ normalizedKeys, switches }) => !normalizedKeys.every(key => isLongSwitch(switches[key]))); + if (shortSwitchesUsed) { + displayedGroups + .filter(({ groupName }) => groupName !== self.getPositionalGroupName()) + .forEach(({ normalizedKeys, switches }) => { + normalizedKeys.forEach(key => { + if (isLongSwitch(switches[key])) { + switches[key] = addIndentation(switches[key], '-x, '.length); + } + }); + }); + } + displayedGroups.forEach(({ groupName, normalizedKeys, switches }) => { + ui.div(groupName); + normalizedKeys.forEach(key => { + const kswitch = switches[key]; + let desc = descriptions[key] || ''; + let type = null; + if (~desc.lastIndexOf(deferY18nLookupPrefix)) + desc = __(desc.substring(deferY18nLookupPrefix.length)); + if (~options.boolean.indexOf(key)) + type = `[${__('boolean')}]`; + if (~options.count.indexOf(key)) + type = `[${__('count')}]`; + if (~options.string.indexOf(key)) + type = `[${__('string')}]`; + if (~options.normalize.indexOf(key)) + type = `[${__('string')}]`; + if (~options.array.indexOf(key)) + type = `[${__('array')}]`; + if (~options.number.indexOf(key)) + type = `[${__('number')}]`; + const deprecatedExtra = (deprecated) => typeof deprecated === 'string' + ? `[${__('deprecated: %s', deprecated)}]` + : `[${__('deprecated')}]`; + const extra = [ + key in deprecatedOptions + ? deprecatedExtra(deprecatedOptions[key]) + : null, + type, + key in demandedOptions ? `[${__('required')}]` : null, + options.choices && options.choices[key] + ? `[${__('choices:')} ${self.stringifiedValues(options.choices[key])}]` + : null, + defaultString(options.default[key], options.defaultDescription[key]), + ] + .filter(Boolean) + .join(' '); + ui.span({ + text: getText(kswitch), + padding: [0, 2, 0, 2 + getIndentation(kswitch)], + width: maxWidth(switches, theWrap) + 4, + }, desc); + if (extra) + ui.div({ text: extra, padding: [0, 0, 0, 2], align: 'right' }); + else + ui.div(); + }); + ui.div(); + }); + if (examples.length) { + ui.div(__('Examples:')); + examples.forEach(example => { + example[0] = example[0].replace(/\$0/g, base$0); + }); + examples.forEach(example => { + if (example[1] === '') { + ui.div({ + text: example[0], + padding: [0, 2, 0, 2], + }); + } + else { + ui.div({ + text: example[0], + padding: [0, 2, 0, 2], + width: maxWidth(examples, theWrap) + 4, + }, { + text: example[1], + }); + } + }); + ui.div(); + } + if (epilogs.length > 0) { + const e = epilogs + .map(epilog => epilog.replace(/\$0/g, base$0)) + .join('\n'); + ui.div(`${e}\n`); + } + return ui.toString().replace(/\s*$/, ''); + }; + function maxWidth(table, theWrap, modifier) { + let width = 0; + if (!Array.isArray(table)) { + table = Object.values(table).map(v => [v]); + } + table.forEach(v => { + width = Math.max(shim.stringWidth(modifier ? `${modifier} ${getText(v[0])}` : getText(v[0])) + getIndentation(v[0]), width); + }); + if (theWrap) + width = Math.min(width, parseInt((theWrap * 0.5).toString(), 10)); + return width; + } + function normalizeAliases() { + const demandedOptions = yargs.getDemandedOptions(); + const options = yargs.getOptions(); + (Object.keys(options.alias) || []).forEach(key => { + options.alias[key].forEach(alias => { + if (descriptions[alias]) + self.describe(key, descriptions[alias]); + if (alias in demandedOptions) + yargs.demandOption(key, demandedOptions[alias]); + if (~options.boolean.indexOf(alias)) + yargs.boolean(key); + if (~options.count.indexOf(alias)) + yargs.count(key); + if (~options.string.indexOf(alias)) + yargs.string(key); + if (~options.normalize.indexOf(alias)) + yargs.normalize(key); + if (~options.array.indexOf(alias)) + yargs.array(key); + if (~options.number.indexOf(alias)) + yargs.number(key); + }); + }); + } + let cachedHelpMessage; + self.cacheHelpMessage = function () { + cachedHelpMessage = this.help(); + }; + self.clearCachedHelpMessage = function () { + cachedHelpMessage = undefined; + }; + function addUngroupedKeys(keys, aliases, groups, defaultGroup) { + let groupedKeys = []; + let toCheck = null; + Object.keys(groups).forEach(group => { + groupedKeys = groupedKeys.concat(groups[group]); + }); + keys.forEach(key => { + toCheck = [key].concat(aliases[key]); + if (!toCheck.some(k => groupedKeys.indexOf(k) !== -1)) { + groups[defaultGroup].push(key); + } + }); + return groupedKeys; + } + function filterHiddenOptions(key) { + return (yargs.getOptions().hiddenOptions.indexOf(key) < 0 || + yargs.parsed.argv[yargs.getOptions().showHiddenOpt]); + } + self.showHelp = (level) => { + const logger = yargs._getLoggerInstance(); + if (!level) + level = 'error'; + const emit = typeof level === 'function' ? level : logger[level]; + emit(self.help()); + }; + self.functionDescription = fn => { + const description = fn.name + ? shim.Parser.decamelize(fn.name, '-') + : __('generated-value'); + return ['(', description, ')'].join(''); + }; + self.stringifiedValues = function stringifiedValues(values, separator) { + let string = ''; + const sep = separator || ', '; + const array = [].concat(values); + if (!values || !array.length) + return string; + array.forEach(value => { + if (string.length) + string += sep; + string += JSON.stringify(value); + }); + return string; + }; + function defaultString(value, defaultDescription) { + let string = `[${__('default:')} `; + if (value === undefined && !defaultDescription) + return null; + if (defaultDescription) { + string += defaultDescription; + } + else { + switch (typeof value) { + case 'string': + string += `"${value}"`; + break; + case 'object': + string += JSON.stringify(value); + break; + default: + string += value; + } + } + return `${string}]`; + } + function windowWidth() { + const maxWidth = 80; + if (shim.process.stdColumns) { + return Math.min(maxWidth, shim.process.stdColumns); + } + else { + return maxWidth; + } + } + let version = null; + self.version = ver => { + version = ver; + }; + self.showVersion = () => { + const logger = yargs._getLoggerInstance(); + logger.log(version); + }; + self.reset = function reset(localLookup) { + failMessage = null; + failureOutput = false; + usages = []; + usageDisabled = false; + epilogs = []; + examples = []; + commands = []; + descriptions = objFilter(descriptions, k => !localLookup[k]); + return self; + }; + const frozens = []; + self.freeze = function freeze() { + frozens.push({ + failMessage, + failureOutput, + usages, + usageDisabled, + epilogs, + examples, + commands, + descriptions, + }); + }; + self.unfreeze = function unfreeze() { + const frozen = frozens.pop(); + assertNotStrictEqual(frozen, undefined, shim); + ({ + failMessage, + failureOutput, + usages, + usageDisabled, + epilogs, + examples, + commands, + descriptions, + } = frozen); + }; + return self; +} +function isIndentedText(text) { + return typeof text === 'object'; +} +function addIndentation(text, indent) { + return isIndentedText(text) + ? { text: text.text, indentation: text.indentation + indent } + : { text, indentation: indent }; +} +function getIndentation(text) { + return isIndentedText(text) ? text.indentation : 0; +} +function getText(text) { + return isIndentedText(text) ? text.text : text; +} + +const completionShTemplate = `###-begin-{{app_name}}-completions-### +# +# yargs command completion script +# +# Installation: {{app_path}} {{completion_command}} >> ~/.bashrc +# or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX. +# +_yargs_completions() +{ + local cur_word args type_list + + cur_word="\${COMP_WORDS[COMP_CWORD]}" + args=("\${COMP_WORDS[@]}") + + # ask yargs to generate completions. + type_list=$({{app_path}} --get-yargs-completions "\${args[@]}") + + COMPREPLY=( $(compgen -W "\${type_list}" -- \${cur_word}) ) + + # if no match was found, fall back to filename completion + if [ \${#COMPREPLY[@]} -eq 0 ]; then + COMPREPLY=() + fi + + return 0 +} +complete -o default -F _yargs_completions {{app_name}} +###-end-{{app_name}}-completions-### +`; +const completionZshTemplate = `###-begin-{{app_name}}-completions-### +# +# yargs command completion script +# +# Installation: {{app_path}} {{completion_command}} >> ~/.zshrc +# or {{app_path}} {{completion_command}} >> ~/.zsh_profile on OSX. +# +_{{app_name}}_yargs_completions() +{ + local reply + local si=$IFS + IFS=$'\n' reply=($(COMP_CWORD="$((CURRENT-1))" COMP_LINE="$BUFFER" COMP_POINT="$CURSOR" {{app_path}} --get-yargs-completions "\${words[@]}")) + IFS=$si + _describe 'values' reply +} +compdef _{{app_name}}_yargs_completions {{app_name}} +###-end-{{app_name}}-completions-### +`; + +function completion(yargs, usage, command, shim) { + const self = { + completionKey: 'get-yargs-completions', + }; + let aliases; + self.setParsed = function setParsed(parsed) { + aliases = parsed.aliases; + }; + const zshShell = (shim.getEnv('SHELL') && shim.getEnv('SHELL').indexOf('zsh') !== -1) || + (shim.getEnv('ZSH_NAME') && shim.getEnv('ZSH_NAME').indexOf('zsh') !== -1); + self.getCompletion = function getCompletion(args, done) { + const completions = []; + const current = args.length ? args[args.length - 1] : ''; + const argv = yargs.parse(args, true); + const parentCommands = yargs.getContext().commands; + function runCompletionFunction(argv) { + assertNotStrictEqual(completionFunction, null, shim); + if (isSyncCompletionFunction(completionFunction)) { + const result = completionFunction(current, argv); + if (isPromise(result)) { + return result + .then(list => { + shim.process.nextTick(() => { + done(list); + }); + }) + .catch(err => { + shim.process.nextTick(() => { + throw err; + }); + }); + } + return done(result); + } + else { + return completionFunction(current, argv, completions => { + done(completions); + }); + } + } + if (completionFunction) { + return isPromise(argv) + ? argv.then(runCompletionFunction) + : runCompletionFunction(argv); + } + const handlers = command.getCommandHandlers(); + for (let i = 0, ii = args.length; i < ii; ++i) { + if (handlers[args[i]] && handlers[args[i]].builder) { + const builder = handlers[args[i]].builder; + if (isCommandBuilderCallback(builder)) { + const y = yargs.reset(); + builder(y); + return y.argv; + } + } + } + if (!current.match(/^-/) && + parentCommands[parentCommands.length - 1] !== current) { + usage.getCommands().forEach(usageCommand => { + const commandName = parseCommand(usageCommand[0]).cmd; + if (args.indexOf(commandName) === -1) { + if (!zshShell) { + completions.push(commandName); + } + else { + const desc = usageCommand[1] || ''; + completions.push(commandName.replace(/:/g, '\\:') + ':' + desc); + } + } + }); + } + if (current.match(/^-/) || (current === '' && completions.length === 0)) { + const descs = usage.getDescriptions(); + const options = yargs.getOptions(); + Object.keys(options.key).forEach(key => { + const negable = !!options.configuration['boolean-negation'] && + options.boolean.includes(key); + let keyAndAliases = [key].concat(aliases[key] || []); + if (negable) + keyAndAliases = keyAndAliases.concat(keyAndAliases.map(key => `no-${key}`)); + function completeOptionKey(key) { + const notInArgs = keyAndAliases.every(val => args.indexOf(`--${val}`) === -1); + if (notInArgs) { + const startsByTwoDashes = (s) => /^--/.test(s); + const isShortOption = (s) => /^[^0-9]$/.test(s); + const dashes = !startsByTwoDashes(current) && isShortOption(key) ? '-' : '--'; + if (!zshShell) { + completions.push(dashes + key); + } + else { + const desc = descs[key] || ''; + completions.push(dashes + + `${key.replace(/:/g, '\\:')}:${desc.replace('__yargsString__:', '')}`); + } + } + } + completeOptionKey(key); + if (negable && !!options.default[key]) + completeOptionKey(`no-${key}`); + }); + } + done(completions); + }; + self.generateCompletionScript = function generateCompletionScript($0, cmd) { + let script = zshShell + ? completionZshTemplate + : completionShTemplate; + const name = shim.path.basename($0); + if ($0.match(/\.js$/)) + $0 = `./${$0}`; + script = script.replace(/{{app_name}}/g, name); + script = script.replace(/{{completion_command}}/g, cmd); + return script.replace(/{{app_path}}/g, $0); + }; + let completionFunction = null; + self.registerFunction = fn => { + completionFunction = fn; + }; + return self; +} +function isSyncCompletionFunction(completionFunction) { + return completionFunction.length < 3; +} + +function levenshtein(a, b) { + if (a.length === 0) + return b.length; + if (b.length === 0) + return a.length; + const matrix = []; + let i; + for (i = 0; i <= b.length; i++) { + matrix[i] = [i]; + } + let j; + for (j = 0; j <= a.length; j++) { + matrix[0][j] = j; + } + for (i = 1; i <= b.length; i++) { + for (j = 1; j <= a.length; j++) { + if (b.charAt(i - 1) === a.charAt(j - 1)) { + matrix[i][j] = matrix[i - 1][j - 1]; + } + else { + matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1)); + } + } + } + return matrix[b.length][a.length]; +} + +const specialKeys = ['$0', '--', '_']; +function validation(yargs, usage, y18n, shim) { + const __ = y18n.__; + const __n = y18n.__n; + const self = {}; + self.nonOptionCount = function nonOptionCount(argv) { + const demandedCommands = yargs.getDemandedCommands(); + const positionalCount = argv._.length + (argv['--'] ? argv['--'].length : 0); + const _s = positionalCount - yargs.getContext().commands.length; + if (demandedCommands._ && + (_s < demandedCommands._.min || _s > demandedCommands._.max)) { + if (_s < demandedCommands._.min) { + if (demandedCommands._.minMsg !== undefined) { + usage.fail(demandedCommands._.minMsg + ? demandedCommands._.minMsg + .replace(/\$0/g, _s.toString()) + .replace(/\$1/, demandedCommands._.min.toString()) + : null); + } + else { + usage.fail(__n('Not enough non-option arguments: got %s, need at least %s', 'Not enough non-option arguments: got %s, need at least %s', _s, _s.toString(), demandedCommands._.min.toString())); + } + } + else if (_s > demandedCommands._.max) { + if (demandedCommands._.maxMsg !== undefined) { + usage.fail(demandedCommands._.maxMsg + ? demandedCommands._.maxMsg + .replace(/\$0/g, _s.toString()) + .replace(/\$1/, demandedCommands._.max.toString()) + : null); + } + else { + usage.fail(__n('Too many non-option arguments: got %s, maximum of %s', 'Too many non-option arguments: got %s, maximum of %s', _s, _s.toString(), demandedCommands._.max.toString())); + } + } + } + }; + self.positionalCount = function positionalCount(required, observed) { + if (observed < required) { + usage.fail(__n('Not enough non-option arguments: got %s, need at least %s', 'Not enough non-option arguments: got %s, need at least %s', observed, observed + '', required + '')); + } + }; + self.requiredArguments = function requiredArguments(argv) { + const demandedOptions = yargs.getDemandedOptions(); + let missing = null; + for (const key of Object.keys(demandedOptions)) { + if (!Object.prototype.hasOwnProperty.call(argv, key) || + typeof argv[key] === 'undefined') { + missing = missing || {}; + missing[key] = demandedOptions[key]; + } + } + if (missing) { + const customMsgs = []; + for (const key of Object.keys(missing)) { + const msg = missing[key]; + if (msg && customMsgs.indexOf(msg) < 0) { + customMsgs.push(msg); + } + } + const customMsg = customMsgs.length ? `\n${customMsgs.join('\n')}` : ''; + usage.fail(__n('Missing required argument: %s', 'Missing required arguments: %s', Object.keys(missing).length, Object.keys(missing).join(', ') + customMsg)); + } + }; + self.unknownArguments = function unknownArguments(argv, aliases, positionalMap, isDefaultCommand, checkPositionals = true) { + const commandKeys = yargs.getCommandInstance().getCommands(); + const unknown = []; + const currentContext = yargs.getContext(); + Object.keys(argv).forEach(key => { + if (specialKeys.indexOf(key) === -1 && + !Object.prototype.hasOwnProperty.call(positionalMap, key) && + !Object.prototype.hasOwnProperty.call(yargs._getParseContext(), key) && + !self.isValidAndSomeAliasIsNotNew(key, aliases)) { + unknown.push(key); + } + }); + if (checkPositionals && + (currentContext.commands.length > 0 || + commandKeys.length > 0 || + isDefaultCommand)) { + argv._.slice(currentContext.commands.length).forEach(key => { + if (commandKeys.indexOf('' + key) === -1) { + unknown.push('' + key); + } + }); + } + if (unknown.length > 0) { + usage.fail(__n('Unknown argument: %s', 'Unknown arguments: %s', unknown.length, unknown.join(', '))); + } + }; + self.unknownCommands = function unknownCommands(argv) { + const commandKeys = yargs.getCommandInstance().getCommands(); + const unknown = []; + const currentContext = yargs.getContext(); + if (currentContext.commands.length > 0 || commandKeys.length > 0) { + argv._.slice(currentContext.commands.length).forEach(key => { + if (commandKeys.indexOf('' + key) === -1) { + unknown.push('' + key); + } + }); + } + if (unknown.length > 0) { + usage.fail(__n('Unknown command: %s', 'Unknown commands: %s', unknown.length, unknown.join(', '))); + return true; + } + else { + return false; + } + }; + self.isValidAndSomeAliasIsNotNew = function isValidAndSomeAliasIsNotNew(key, aliases) { + if (!Object.prototype.hasOwnProperty.call(aliases, key)) { + return false; + } + const newAliases = yargs.parsed.newAliases; + for (const a of [key, ...aliases[key]]) { + if (!Object.prototype.hasOwnProperty.call(newAliases, a) || + !newAliases[key]) { + return true; + } + } + return false; + }; + self.limitedChoices = function limitedChoices(argv) { + const options = yargs.getOptions(); + const invalid = {}; + if (!Object.keys(options.choices).length) + return; + Object.keys(argv).forEach(key => { + if (specialKeys.indexOf(key) === -1 && + Object.prototype.hasOwnProperty.call(options.choices, key)) { + [].concat(argv[key]).forEach(value => { + if (options.choices[key].indexOf(value) === -1 && + value !== undefined) { + invalid[key] = (invalid[key] || []).concat(value); + } + }); + } + }); + const invalidKeys = Object.keys(invalid); + if (!invalidKeys.length) + return; + let msg = __('Invalid values:'); + invalidKeys.forEach(key => { + msg += `\n ${__('Argument: %s, Given: %s, Choices: %s', key, usage.stringifiedValues(invalid[key]), usage.stringifiedValues(options.choices[key]))}`; + }); + usage.fail(msg); + }; + let checks = []; + self.check = function check(f, global) { + checks.push({ + func: f, + global, + }); + }; + self.customChecks = function customChecks(argv, aliases) { + for (let i = 0, f; (f = checks[i]) !== undefined; i++) { + const func = f.func; + let result = null; + try { + result = func(argv, aliases); + } + catch (err) { + usage.fail(err.message ? err.message : err, err); + continue; + } + if (!result) { + usage.fail(__('Argument check failed: %s', func.toString())); + } + else if (typeof result === 'string' || result instanceof Error) { + usage.fail(result.toString(), result); + } + } + }; + let implied = {}; + self.implies = function implies(key, value) { + argsert(' [array|number|string]', [key, value], arguments.length); + if (typeof key === 'object') { + Object.keys(key).forEach(k => { + self.implies(k, key[k]); + }); + } + else { + yargs.global(key); + if (!implied[key]) { + implied[key] = []; + } + if (Array.isArray(value)) { + value.forEach(i => self.implies(key, i)); + } + else { + assertNotStrictEqual(value, undefined, shim); + implied[key].push(value); + } + } + }; + self.getImplied = function getImplied() { + return implied; + }; + function keyExists(argv, val) { + const num = Number(val); + val = isNaN(num) ? val : num; + if (typeof val === 'number') { + val = argv._.length >= val; + } + else if (val.match(/^--no-.+/)) { + val = val.match(/^--no-(.+)/)[1]; + val = !argv[val]; + } + else { + val = argv[val]; + } + return val; + } + self.implications = function implications(argv) { + const implyFail = []; + Object.keys(implied).forEach(key => { + const origKey = key; + (implied[key] || []).forEach(value => { + let key = origKey; + const origValue = value; + key = keyExists(argv, key); + value = keyExists(argv, value); + if (key && !value) { + implyFail.push(` ${origKey} -> ${origValue}`); + } + }); + }); + if (implyFail.length) { + let msg = `${__('Implications failed:')}\n`; + implyFail.forEach(value => { + msg += value; + }); + usage.fail(msg); + } + }; + let conflicting = {}; + self.conflicts = function conflicts(key, value) { + argsert(' [array|string]', [key, value], arguments.length); + if (typeof key === 'object') { + Object.keys(key).forEach(k => { + self.conflicts(k, key[k]); + }); + } + else { + yargs.global(key); + if (!conflicting[key]) { + conflicting[key] = []; + } + if (Array.isArray(value)) { + value.forEach(i => self.conflicts(key, i)); + } + else { + conflicting[key].push(value); + } + } + }; + self.getConflicting = () => conflicting; + self.conflicting = function conflictingFn(argv) { + Object.keys(argv).forEach(key => { + if (conflicting[key]) { + conflicting[key].forEach(value => { + if (value && argv[key] !== undefined && argv[value] !== undefined) { + usage.fail(__('Arguments %s and %s are mutually exclusive', key, value)); + } + }); + } + }); + }; + self.recommendCommands = function recommendCommands(cmd, potentialCommands) { + const threshold = 3; + potentialCommands = potentialCommands.sort((a, b) => b.length - a.length); + let recommended = null; + let bestDistance = Infinity; + for (let i = 0, candidate; (candidate = potentialCommands[i]) !== undefined; i++) { + const d = levenshtein(cmd, candidate); + if (d <= threshold && d < bestDistance) { + bestDistance = d; + recommended = candidate; + } + } + if (recommended) + usage.fail(__('Did you mean %s?', recommended)); + }; + self.reset = function reset(localLookup) { + implied = objFilter(implied, k => !localLookup[k]); + conflicting = objFilter(conflicting, k => !localLookup[k]); + checks = checks.filter(c => c.global); + return self; + }; + const frozens = []; + self.freeze = function freeze() { + frozens.push({ + implied, + checks, + conflicting, + }); + }; + self.unfreeze = function unfreeze() { + const frozen = frozens.pop(); + assertNotStrictEqual(frozen, undefined, shim); + ({ implied, checks, conflicting } = frozen); + }; + return self; +} + +let shim$1; +function YargsWithShim(_shim) { + shim$1 = _shim; + return Yargs; +} +function Yargs(processArgs = [], cwd = shim$1.process.cwd(), parentRequire) { + const self = {}; + let command$1; + let completion$1 = null; + let groups = {}; + const globalMiddleware = []; + let output = ''; + const preservedGroups = {}; + let usage$1; + let validation$1; + let handlerFinishCommand = null; + const y18n = shim$1.y18n; + self.middleware = globalMiddlewareFactory(globalMiddleware, self); + self.scriptName = function (scriptName) { + self.customScriptName = true; + self.$0 = scriptName; + return self; + }; + let default$0; + if (/\b(node|iojs|electron)(\.exe)?$/.test(shim$1.process.argv()[0])) { + default$0 = shim$1.process.argv().slice(1, 2); + } + else { + default$0 = shim$1.process.argv().slice(0, 1); + } + self.$0 = default$0 + .map(x => { + const b = rebase(cwd, x); + return x.match(/^(\/|([a-zA-Z]:)?\\)/) && b.length < x.length ? b : x; + }) + .join(' ') + .trim(); + if (shim$1.getEnv('_') && shim$1.getProcessArgvBin() === shim$1.getEnv('_')) { + self.$0 = shim$1 + .getEnv('_') + .replace(`${shim$1.path.dirname(shim$1.process.execPath())}/`, ''); + } + const context = { resets: -1, commands: [], fullCommands: [], files: [] }; + self.getContext = () => context; + let hasOutput = false; + let exitError = null; + self.exit = (code, err) => { + hasOutput = true; + exitError = err; + if (exitProcess) + shim$1.process.exit(code); + }; + let completionCommand = null; + self.completion = function (cmd, desc, fn) { + argsert('[string] [string|boolean|function] [function]', [cmd, desc, fn], arguments.length); + if (typeof desc === 'function') { + fn = desc; + desc = undefined; + } + completionCommand = cmd || completionCommand || 'completion'; + if (!desc && desc !== false) { + desc = 'generate completion script'; + } + self.command(completionCommand, desc); + if (fn) + completion$1.registerFunction(fn); + return self; + }; + let options; + self.resetOptions = self.reset = function resetOptions(aliases = {}) { + context.resets++; + options = options || {}; + const tmpOptions = {}; + tmpOptions.local = options.local ? options.local : []; + tmpOptions.configObjects = options.configObjects + ? options.configObjects + : []; + const localLookup = {}; + tmpOptions.local.forEach(l => { + localLookup[l] = true; + (aliases[l] || []).forEach(a => { + localLookup[a] = true; + }); + }); + Object.assign(preservedGroups, Object.keys(groups).reduce((acc, groupName) => { + const keys = groups[groupName].filter(key => !(key in localLookup)); + if (keys.length > 0) { + acc[groupName] = keys; + } + return acc; + }, {})); + groups = {}; + const arrayOptions = [ + 'array', + 'boolean', + 'string', + 'skipValidation', + 'count', + 'normalize', + 'number', + 'hiddenOptions', + ]; + const objectOptions = [ + 'narg', + 'key', + 'alias', + 'default', + 'defaultDescription', + 'config', + 'choices', + 'demandedOptions', + 'demandedCommands', + 'coerce', + 'deprecatedOptions', + ]; + arrayOptions.forEach(k => { + tmpOptions[k] = (options[k] || []).filter((k) => !localLookup[k]); + }); + objectOptions.forEach((k) => { + tmpOptions[k] = objFilter(options[k], k => !localLookup[k]); + }); + tmpOptions.envPrefix = options.envPrefix; + options = tmpOptions; + usage$1 = usage$1 ? usage$1.reset(localLookup) : usage(self, y18n, shim$1); + validation$1 = validation$1 + ? validation$1.reset(localLookup) + : validation(self, usage$1, y18n, shim$1); + command$1 = command$1 + ? command$1.reset() + : command(self, usage$1, validation$1, globalMiddleware, shim$1); + if (!completion$1) + completion$1 = completion(self, usage$1, command$1, shim$1); + completionCommand = null; + output = ''; + exitError = null; + hasOutput = false; + self.parsed = false; + return self; + }; + self.resetOptions(); + const frozens = []; + function freeze() { + frozens.push({ + options, + configObjects: options.configObjects.slice(0), + exitProcess, + groups, + strict, + strictCommands, + strictOptions, + completionCommand, + output, + exitError, + hasOutput, + parsed: self.parsed, + parseFn, + parseContext, + handlerFinishCommand, + }); + usage$1.freeze(); + validation$1.freeze(); + command$1.freeze(); + } + function unfreeze() { + const frozen = frozens.pop(); + assertNotStrictEqual(frozen, undefined, shim$1); + let configObjects; + ({ + options, + configObjects, + exitProcess, + groups, + output, + exitError, + hasOutput, + parsed: self.parsed, + strict, + strictCommands, + strictOptions, + completionCommand, + parseFn, + parseContext, + handlerFinishCommand, + } = frozen); + options.configObjects = configObjects; + usage$1.unfreeze(); + validation$1.unfreeze(); + command$1.unfreeze(); + } + self.boolean = function (keys) { + argsert('', [keys], arguments.length); + populateParserHintArray('boolean', keys); + return self; + }; + self.array = function (keys) { + argsert('', [keys], arguments.length); + populateParserHintArray('array', keys); + return self; + }; + self.number = function (keys) { + argsert('', [keys], arguments.length); + populateParserHintArray('number', keys); + return self; + }; + self.normalize = function (keys) { + argsert('', [keys], arguments.length); + populateParserHintArray('normalize', keys); + return self; + }; + self.count = function (keys) { + argsert('', [keys], arguments.length); + populateParserHintArray('count', keys); + return self; + }; + self.string = function (keys) { + argsert('', [keys], arguments.length); + populateParserHintArray('string', keys); + return self; + }; + self.requiresArg = function (keys) { + argsert(' [number]', [keys], arguments.length); + if (typeof keys === 'string' && options.narg[keys]) { + return self; + } + else { + populateParserHintSingleValueDictionary(self.requiresArg, 'narg', keys, NaN); + } + return self; + }; + self.skipValidation = function (keys) { + argsert('', [keys], arguments.length); + populateParserHintArray('skipValidation', keys); + return self; + }; + function populateParserHintArray(type, keys) { + keys = [].concat(keys); + keys.forEach(key => { + key = sanitizeKey(key); + options[type].push(key); + }); + } + self.nargs = function (key, value) { + argsert(' [number]', [key, value], arguments.length); + populateParserHintSingleValueDictionary(self.nargs, 'narg', key, value); + return self; + }; + self.choices = function (key, value) { + argsert(' [string|array]', [key, value], arguments.length); + populateParserHintArrayDictionary(self.choices, 'choices', key, value); + return self; + }; + self.alias = function (key, value) { + argsert(' [string|array]', [key, value], arguments.length); + populateParserHintArrayDictionary(self.alias, 'alias', key, value); + return self; + }; + self.default = self.defaults = function (key, value, defaultDescription) { + argsert(' [*] [string]', [key, value, defaultDescription], arguments.length); + if (defaultDescription) { + assertSingleKey(key, shim$1); + options.defaultDescription[key] = defaultDescription; + } + if (typeof value === 'function') { + assertSingleKey(key, shim$1); + if (!options.defaultDescription[key]) + options.defaultDescription[key] = usage$1.functionDescription(value); + value = value.call(); + } + populateParserHintSingleValueDictionary(self.default, 'default', key, value); + return self; + }; + self.describe = function (key, desc) { + argsert(' [string]', [key, desc], arguments.length); + setKey(key, true); + usage$1.describe(key, desc); + return self; + }; + function setKey(key, set) { + populateParserHintSingleValueDictionary(setKey, 'key', key, set); + return self; + } + function demandOption(keys, msg) { + argsert(' [string]', [keys, msg], arguments.length); + populateParserHintSingleValueDictionary(self.demandOption, 'demandedOptions', keys, msg); + return self; + } + self.demandOption = demandOption; + self.coerce = function (keys, value) { + argsert(' [function]', [keys, value], arguments.length); + populateParserHintSingleValueDictionary(self.coerce, 'coerce', keys, value); + return self; + }; + function populateParserHintSingleValueDictionary(builder, type, key, value) { + populateParserHintDictionary(builder, type, key, value, (type, key, value) => { + options[type][key] = value; + }); + } + function populateParserHintArrayDictionary(builder, type, key, value) { + populateParserHintDictionary(builder, type, key, value, (type, key, value) => { + options[type][key] = (options[type][key] || []).concat(value); + }); + } + function populateParserHintDictionary(builder, type, key, value, singleKeyHandler) { + if (Array.isArray(key)) { + key.forEach(k => { + builder(k, value); + }); + } + else if (((key) => typeof key === 'object')(key)) { + for (const k of objectKeys(key)) { + builder(k, key[k]); + } + } + else { + singleKeyHandler(type, sanitizeKey(key), value); + } + } + function sanitizeKey(key) { + if (key === '__proto__') + return '___proto___'; + return key; + } + function deleteFromParserHintObject(optionKey) { + objectKeys(options).forEach((hintKey) => { + if (((key) => key === 'configObjects')(hintKey)) + return; + const hint = options[hintKey]; + if (Array.isArray(hint)) { + if (~hint.indexOf(optionKey)) + hint.splice(hint.indexOf(optionKey), 1); + } + else if (typeof hint === 'object') { + delete hint[optionKey]; + } + }); + delete usage$1.getDescriptions()[optionKey]; + } + self.config = function config(key = 'config', msg, parseFn) { + argsert('[object|string] [string|function] [function]', [key, msg, parseFn], arguments.length); + if (typeof key === 'object' && !Array.isArray(key)) { + key = applyExtends(key, cwd, self.getParserConfiguration()['deep-merge-config'] || false, shim$1); + options.configObjects = (options.configObjects || []).concat(key); + return self; + } + if (typeof msg === 'function') { + parseFn = msg; + msg = undefined; + } + self.describe(key, msg || usage$1.deferY18nLookup('Path to JSON config file')); + (Array.isArray(key) ? key : [key]).forEach(k => { + options.config[k] = parseFn || true; + }); + return self; + }; + self.example = function (cmd, description) { + argsert(' [string]', [cmd, description], arguments.length); + if (Array.isArray(cmd)) { + cmd.forEach(exampleParams => self.example(...exampleParams)); + } + else { + usage$1.example(cmd, description); + } + return self; + }; + self.command = function (cmd, description, builder, handler, middlewares, deprecated) { + argsert(' [string|boolean] [function|object] [function] [array] [boolean|string]', [cmd, description, builder, handler, middlewares, deprecated], arguments.length); + command$1.addHandler(cmd, description, builder, handler, middlewares, deprecated); + return self; + }; + self.commandDir = function (dir, opts) { + argsert(' [object]', [dir, opts], arguments.length); + const req = parentRequire || shim$1.require; + command$1.addDirectory(dir, self.getContext(), req, shim$1.getCallerFile(), opts); + return self; + }; + self.demand = self.required = self.require = function demand(keys, max, msg) { + if (Array.isArray(max)) { + max.forEach(key => { + assertNotStrictEqual(msg, true, shim$1); + demandOption(key, msg); + }); + max = Infinity; + } + else if (typeof max !== 'number') { + msg = max; + max = Infinity; + } + if (typeof keys === 'number') { + assertNotStrictEqual(msg, true, shim$1); + self.demandCommand(keys, max, msg, msg); + } + else if (Array.isArray(keys)) { + keys.forEach(key => { + assertNotStrictEqual(msg, true, shim$1); + demandOption(key, msg); + }); + } + else { + if (typeof msg === 'string') { + demandOption(keys, msg); + } + else if (msg === true || typeof msg === 'undefined') { + demandOption(keys); + } + } + return self; + }; + self.demandCommand = function demandCommand(min = 1, max, minMsg, maxMsg) { + argsert('[number] [number|string] [string|null|undefined] [string|null|undefined]', [min, max, minMsg, maxMsg], arguments.length); + if (typeof max !== 'number') { + minMsg = max; + max = Infinity; + } + self.global('_', false); + options.demandedCommands._ = { + min, + max, + minMsg, + maxMsg, + }; + return self; + }; + self.getDemandedOptions = () => { + argsert([], 0); + return options.demandedOptions; + }; + self.getDemandedCommands = () => { + argsert([], 0); + return options.demandedCommands; + }; + self.deprecateOption = function deprecateOption(option, message) { + argsert(' [string|boolean]', [option, message], arguments.length); + options.deprecatedOptions[option] = message; + return self; + }; + self.getDeprecatedOptions = () => { + argsert([], 0); + return options.deprecatedOptions; + }; + self.implies = function (key, value) { + argsert(' [number|string|array]', [key, value], arguments.length); + validation$1.implies(key, value); + return self; + }; + self.conflicts = function (key1, key2) { + argsert(' [string|array]', [key1, key2], arguments.length); + validation$1.conflicts(key1, key2); + return self; + }; + self.usage = function (msg, description, builder, handler) { + argsert(' [string|boolean] [function|object] [function]', [msg, description, builder, handler], arguments.length); + if (description !== undefined) { + assertNotStrictEqual(msg, null, shim$1); + if ((msg || '').match(/^\$0( |$)/)) { + return self.command(msg, description, builder, handler); + } + else { + throw new YError('.usage() description must start with $0 if being used as alias for .command()'); + } + } + else { + usage$1.usage(msg); + return self; + } + }; + self.epilogue = self.epilog = function (msg) { + argsert('', [msg], arguments.length); + usage$1.epilog(msg); + return self; + }; + self.fail = function (f) { + argsert('', [f], arguments.length); + usage$1.failFn(f); + return self; + }; + self.onFinishCommand = function (f) { + argsert('', [f], arguments.length); + handlerFinishCommand = f; + return self; + }; + self.getHandlerFinishCommand = () => handlerFinishCommand; + self.check = function (f, _global) { + argsert(' [boolean]', [f, _global], arguments.length); + validation$1.check(f, _global !== false); + return self; + }; + self.global = function global(globals, global) { + argsert(' [boolean]', [globals, global], arguments.length); + globals = [].concat(globals); + if (global !== false) { + options.local = options.local.filter(l => globals.indexOf(l) === -1); + } + else { + globals.forEach(g => { + if (options.local.indexOf(g) === -1) + options.local.push(g); + }); + } + return self; + }; + self.pkgConf = function pkgConf(key, rootPath) { + argsert(' [string]', [key, rootPath], arguments.length); + let conf = null; + const obj = pkgUp(rootPath || cwd); + if (obj[key] && typeof obj[key] === 'object') { + conf = applyExtends(obj[key], rootPath || cwd, self.getParserConfiguration()['deep-merge-config'] || false, shim$1); + options.configObjects = (options.configObjects || []).concat(conf); + } + return self; + }; + const pkgs = {}; + function pkgUp(rootPath) { + const npath = rootPath || '*'; + if (pkgs[npath]) + return pkgs[npath]; + let obj = {}; + try { + let startDir = rootPath || shim$1.mainFilename; + if (!rootPath && shim$1.path.extname(startDir)) { + startDir = shim$1.path.dirname(startDir); + } + const pkgJsonPath = shim$1.findUp(startDir, (dir, names) => { + if (names.includes('package.json')) { + return 'package.json'; + } + else { + return undefined; + } + }); + assertNotStrictEqual(pkgJsonPath, undefined, shim$1); + obj = JSON.parse(shim$1.readFileSync(pkgJsonPath, 'utf8')); + } + catch (_noop) { } + pkgs[npath] = obj || {}; + return pkgs[npath]; + } + let parseFn = null; + let parseContext = null; + self.parse = function parse(args, shortCircuit, _parseFn) { + argsert('[string|array] [function|boolean|object] [function]', [args, shortCircuit, _parseFn], arguments.length); + freeze(); + if (typeof args === 'undefined') { + const argv = self._parseArgs(processArgs); + const tmpParsed = self.parsed; + unfreeze(); + self.parsed = tmpParsed; + return argv; + } + if (typeof shortCircuit === 'object') { + parseContext = shortCircuit; + shortCircuit = _parseFn; + } + if (typeof shortCircuit === 'function') { + parseFn = shortCircuit; + shortCircuit = false; + } + if (!shortCircuit) + processArgs = args; + if (parseFn) + exitProcess = false; + const parsed = self._parseArgs(args, !!shortCircuit); + completion$1.setParsed(self.parsed); + if (parseFn) + parseFn(exitError, parsed, output); + unfreeze(); + return parsed; + }; + self._getParseContext = () => parseContext || {}; + self._hasParseCallback = () => !!parseFn; + self.option = self.options = function option(key, opt) { + argsert(' [object]', [key, opt], arguments.length); + if (typeof key === 'object') { + Object.keys(key).forEach(k => { + self.options(k, key[k]); + }); + } + else { + if (typeof opt !== 'object') { + opt = {}; + } + options.key[key] = true; + if (opt.alias) + self.alias(key, opt.alias); + const deprecate = opt.deprecate || opt.deprecated; + if (deprecate) { + self.deprecateOption(key, deprecate); + } + const demand = opt.demand || opt.required || opt.require; + if (demand) { + self.demand(key, demand); + } + if (opt.demandOption) { + self.demandOption(key, typeof opt.demandOption === 'string' ? opt.demandOption : undefined); + } + if (opt.conflicts) { + self.conflicts(key, opt.conflicts); + } + if ('default' in opt) { + self.default(key, opt.default); + } + if (opt.implies !== undefined) { + self.implies(key, opt.implies); + } + if (opt.nargs !== undefined) { + self.nargs(key, opt.nargs); + } + if (opt.config) { + self.config(key, opt.configParser); + } + if (opt.normalize) { + self.normalize(key); + } + if (opt.choices) { + self.choices(key, opt.choices); + } + if (opt.coerce) { + self.coerce(key, opt.coerce); + } + if (opt.group) { + self.group(key, opt.group); + } + if (opt.boolean || opt.type === 'boolean') { + self.boolean(key); + if (opt.alias) + self.boolean(opt.alias); + } + if (opt.array || opt.type === 'array') { + self.array(key); + if (opt.alias) + self.array(opt.alias); + } + if (opt.number || opt.type === 'number') { + self.number(key); + if (opt.alias) + self.number(opt.alias); + } + if (opt.string || opt.type === 'string') { + self.string(key); + if (opt.alias) + self.string(opt.alias); + } + if (opt.count || opt.type === 'count') { + self.count(key); + } + if (typeof opt.global === 'boolean') { + self.global(key, opt.global); + } + if (opt.defaultDescription) { + options.defaultDescription[key] = opt.defaultDescription; + } + if (opt.skipValidation) { + self.skipValidation(key); + } + const desc = opt.describe || opt.description || opt.desc; + self.describe(key, desc); + if (opt.hidden) { + self.hide(key); + } + if (opt.requiresArg) { + self.requiresArg(key); + } + } + return self; + }; + self.getOptions = () => options; + self.positional = function (key, opts) { + argsert(' ', [key, opts], arguments.length); + if (context.resets === 0) { + throw new YError(".positional() can only be called in a command's builder function"); + } + const supportedOpts = [ + 'default', + 'defaultDescription', + 'implies', + 'normalize', + 'choices', + 'conflicts', + 'coerce', + 'type', + 'describe', + 'desc', + 'description', + 'alias', + ]; + opts = objFilter(opts, (k, v) => { + let accept = supportedOpts.indexOf(k) !== -1; + if (k === 'type' && ['string', 'number', 'boolean'].indexOf(v) === -1) + accept = false; + return accept; + }); + const fullCommand = context.fullCommands[context.fullCommands.length - 1]; + const parseOptions = fullCommand + ? command$1.cmdToParseOptions(fullCommand) + : { + array: [], + alias: {}, + default: {}, + demand: {}, + }; + objectKeys(parseOptions).forEach(pk => { + const parseOption = parseOptions[pk]; + if (Array.isArray(parseOption)) { + if (parseOption.indexOf(key) !== -1) + opts[pk] = true; + } + else { + if (parseOption[key] && !(pk in opts)) + opts[pk] = parseOption[key]; + } + }); + self.group(key, usage$1.getPositionalGroupName()); + return self.option(key, opts); + }; + self.group = function group(opts, groupName) { + argsert(' ', [opts, groupName], arguments.length); + const existing = preservedGroups[groupName] || groups[groupName]; + if (preservedGroups[groupName]) { + delete preservedGroups[groupName]; + } + const seen = {}; + groups[groupName] = (existing || []).concat(opts).filter(key => { + if (seen[key]) + return false; + return (seen[key] = true); + }); + return self; + }; + self.getGroups = () => Object.assign({}, groups, preservedGroups); + self.env = function (prefix) { + argsert('[string|boolean]', [prefix], arguments.length); + if (prefix === false) + delete options.envPrefix; + else + options.envPrefix = prefix || ''; + return self; + }; + self.wrap = function (cols) { + argsert('', [cols], arguments.length); + usage$1.wrap(cols); + return self; + }; + let strict = false; + self.strict = function (enabled) { + argsert('[boolean]', [enabled], arguments.length); + strict = enabled !== false; + return self; + }; + self.getStrict = () => strict; + let strictCommands = false; + self.strictCommands = function (enabled) { + argsert('[boolean]', [enabled], arguments.length); + strictCommands = enabled !== false; + return self; + }; + self.getStrictCommands = () => strictCommands; + let strictOptions = false; + self.strictOptions = function (enabled) { + argsert('[boolean]', [enabled], arguments.length); + strictOptions = enabled !== false; + return self; + }; + self.getStrictOptions = () => strictOptions; + let parserConfig = {}; + self.parserConfiguration = function parserConfiguration(config) { + argsert('', [config], arguments.length); + parserConfig = config; + return self; + }; + self.getParserConfiguration = () => parserConfig; + self.showHelp = function (level) { + argsert('[string|function]', [level], arguments.length); + if (!self.parsed) + self._parseArgs(processArgs); + if (command$1.hasDefaultCommand()) { + context.resets++; + command$1.runDefaultBuilderOn(self); + } + usage$1.showHelp(level); + return self; + }; + let versionOpt = null; + self.version = function version(opt, msg, ver) { + const defaultVersionOpt = 'version'; + argsert('[boolean|string] [string] [string]', [opt, msg, ver], arguments.length); + if (versionOpt) { + deleteFromParserHintObject(versionOpt); + usage$1.version(undefined); + versionOpt = null; + } + if (arguments.length === 0) { + ver = guessVersion(); + opt = defaultVersionOpt; + } + else if (arguments.length === 1) { + if (opt === false) { + return self; + } + ver = opt; + opt = defaultVersionOpt; + } + else if (arguments.length === 2) { + ver = msg; + msg = undefined; + } + versionOpt = typeof opt === 'string' ? opt : defaultVersionOpt; + msg = msg || usage$1.deferY18nLookup('Show version number'); + usage$1.version(ver || undefined); + self.boolean(versionOpt); + self.describe(versionOpt, msg); + return self; + }; + function guessVersion() { + const obj = pkgUp(); + return obj.version || 'unknown'; + } + let helpOpt = null; + self.addHelpOpt = self.help = function addHelpOpt(opt, msg) { + const defaultHelpOpt = 'help'; + argsert('[string|boolean] [string]', [opt, msg], arguments.length); + if (helpOpt) { + deleteFromParserHintObject(helpOpt); + helpOpt = null; + } + if (arguments.length === 1) { + if (opt === false) + return self; + } + helpOpt = typeof opt === 'string' ? opt : defaultHelpOpt; + self.boolean(helpOpt); + self.describe(helpOpt, msg || usage$1.deferY18nLookup('Show help')); + return self; + }; + const defaultShowHiddenOpt = 'show-hidden'; + options.showHiddenOpt = defaultShowHiddenOpt; + self.addShowHiddenOpt = self.showHidden = function addShowHiddenOpt(opt, msg) { + argsert('[string|boolean] [string]', [opt, msg], arguments.length); + if (arguments.length === 1) { + if (opt === false) + return self; + } + const showHiddenOpt = typeof opt === 'string' ? opt : defaultShowHiddenOpt; + self.boolean(showHiddenOpt); + self.describe(showHiddenOpt, msg || usage$1.deferY18nLookup('Show hidden options')); + options.showHiddenOpt = showHiddenOpt; + return self; + }; + self.hide = function hide(key) { + argsert('', [key], arguments.length); + options.hiddenOptions.push(key); + return self; + }; + self.showHelpOnFail = function showHelpOnFail(enabled, message) { + argsert('[boolean|string] [string]', [enabled, message], arguments.length); + usage$1.showHelpOnFail(enabled, message); + return self; + }; + let exitProcess = true; + self.exitProcess = function (enabled = true) { + argsert('[boolean]', [enabled], arguments.length); + exitProcess = enabled; + return self; + }; + self.getExitProcess = () => exitProcess; + self.showCompletionScript = function ($0, cmd) { + argsert('[string] [string]', [$0, cmd], arguments.length); + $0 = $0 || self.$0; + _logger.log(completion$1.generateCompletionScript($0, cmd || completionCommand || 'completion')); + return self; + }; + self.getCompletion = function (args, done) { + argsert(' ', [args, done], arguments.length); + completion$1.getCompletion(args, done); + }; + self.locale = function (locale) { + argsert('[string]', [locale], arguments.length); + if (!locale) { + guessLocale(); + return y18n.getLocale(); + } + detectLocale = false; + y18n.setLocale(locale); + return self; + }; + self.updateStrings = self.updateLocale = function (obj) { + argsert('', [obj], arguments.length); + detectLocale = false; + y18n.updateLocale(obj); + return self; + }; + let detectLocale = true; + self.detectLocale = function (detect) { + argsert('', [detect], arguments.length); + detectLocale = detect; + return self; + }; + self.getDetectLocale = () => detectLocale; + const _logger = { + log(...args) { + if (!self._hasParseCallback()) + console.log(...args); + hasOutput = true; + if (output.length) + output += '\n'; + output += args.join(' '); + }, + error(...args) { + if (!self._hasParseCallback()) + console.error(...args); + hasOutput = true; + if (output.length) + output += '\n'; + output += args.join(' '); + }, + }; + self._getLoggerInstance = () => _logger; + self._hasOutput = () => hasOutput; + self._setHasOutput = () => { + hasOutput = true; + }; + let recommendCommands; + self.recommendCommands = function (recommend = true) { + argsert('[boolean]', [recommend], arguments.length); + recommendCommands = recommend; + return self; + }; + self.getUsageInstance = () => usage$1; + self.getValidationInstance = () => validation$1; + self.getCommandInstance = () => command$1; + self.terminalWidth = () => { + argsert([], 0); + return shim$1.process.stdColumns; + }; + Object.defineProperty(self, 'argv', { + get: () => self._parseArgs(processArgs), + enumerable: true, + }); + self._parseArgs = function parseArgs(args, shortCircuit, _calledFromCommand, commandIndex) { + let skipValidation = !!_calledFromCommand; + args = args || processArgs; + options.__ = y18n.__; + options.configuration = self.getParserConfiguration(); + const populateDoubleDash = !!options.configuration['populate--']; + const config = Object.assign({}, options.configuration, { + 'populate--': true, + }); + const parsed = shim$1.Parser.detailed(args, Object.assign({}, options, { + configuration: Object.assign({ 'parse-positional-numbers': false }, config), + })); + let argv = parsed.argv; + if (parseContext) + argv = Object.assign({}, argv, parseContext); + const aliases = parsed.aliases; + argv.$0 = self.$0; + self.parsed = parsed; + try { + guessLocale(); + if (shortCircuit) { + return self._postProcess(argv, populateDoubleDash, _calledFromCommand); + } + if (helpOpt) { + const helpCmds = [helpOpt] + .concat(aliases[helpOpt] || []) + .filter(k => k.length > 1); + if (~helpCmds.indexOf('' + argv._[argv._.length - 1])) { + argv._.pop(); + argv[helpOpt] = true; + } + } + const handlerKeys = command$1.getCommands(); + const requestCompletions = completion$1.completionKey in argv; + const skipRecommendation = argv[helpOpt] || requestCompletions; + const skipDefaultCommand = skipRecommendation && + (handlerKeys.length > 1 || handlerKeys[0] !== '$0'); + if (argv._.length) { + if (handlerKeys.length) { + let firstUnknownCommand; + for (let i = commandIndex || 0, cmd; argv._[i] !== undefined; i++) { + cmd = String(argv._[i]); + if (~handlerKeys.indexOf(cmd) && cmd !== completionCommand) { + const innerArgv = command$1.runCommand(cmd, self, parsed, i + 1); + return self._postProcess(innerArgv, populateDoubleDash); + } + else if (!firstUnknownCommand && cmd !== completionCommand) { + firstUnknownCommand = cmd; + break; + } + } + if (command$1.hasDefaultCommand() && !skipDefaultCommand) { + const innerArgv = command$1.runCommand(null, self, parsed); + return self._postProcess(innerArgv, populateDoubleDash); + } + if (recommendCommands && firstUnknownCommand && !skipRecommendation) { + validation$1.recommendCommands(firstUnknownCommand, handlerKeys); + } + } + if (completionCommand && + ~argv._.indexOf(completionCommand) && + !requestCompletions) { + if (exitProcess) + setBlocking(true); + self.showCompletionScript(); + self.exit(0); + } + } + else if (command$1.hasDefaultCommand() && !skipDefaultCommand) { + const innerArgv = command$1.runCommand(null, self, parsed); + return self._postProcess(innerArgv, populateDoubleDash); + } + if (requestCompletions) { + if (exitProcess) + setBlocking(true); + args = [].concat(args); + const completionArgs = args.slice(args.indexOf(`--${completion$1.completionKey}`) + 1); + completion$1.getCompletion(completionArgs, completions => { + (completions || []).forEach(completion => { + _logger.log(completion); + }); + self.exit(0); + }); + return self._postProcess(argv, !populateDoubleDash, _calledFromCommand); + } + if (!hasOutput) { + Object.keys(argv).forEach(key => { + if (key === helpOpt && argv[key]) { + if (exitProcess) + setBlocking(true); + skipValidation = true; + self.showHelp('log'); + self.exit(0); + } + else if (key === versionOpt && argv[key]) { + if (exitProcess) + setBlocking(true); + skipValidation = true; + usage$1.showVersion(); + self.exit(0); + } + }); + } + if (!skipValidation && options.skipValidation.length > 0) { + skipValidation = Object.keys(argv).some(key => options.skipValidation.indexOf(key) >= 0 && argv[key] === true); + } + if (!skipValidation) { + if (parsed.error) + throw new YError(parsed.error.message); + if (!requestCompletions) { + self._runValidation(argv, aliases, {}, parsed.error); + } + } + } + catch (err) { + if (err instanceof YError) + usage$1.fail(err.message, err); + else + throw err; + } + return self._postProcess(argv, populateDoubleDash, _calledFromCommand); + }; + self._postProcess = function (argv, populateDoubleDash, calledFromCommand = false) { + if (isPromise(argv)) + return argv; + if (calledFromCommand) + return argv; + if (!populateDoubleDash) { + argv = self._copyDoubleDash(argv); + } + const parsePositionalNumbers = self.getParserConfiguration()['parse-positional-numbers'] || + self.getParserConfiguration()['parse-positional-numbers'] === undefined; + if (parsePositionalNumbers) { + argv = self._parsePositionalNumbers(argv); + } + return argv; + }; + self._copyDoubleDash = function (argv) { + if (!argv._ || !argv['--']) + return argv; + argv._.push.apply(argv._, argv['--']); + try { + delete argv['--']; + } + catch (_err) { } + return argv; + }; + self._parsePositionalNumbers = function (argv) { + const args = argv['--'] ? argv['--'] : argv._; + for (let i = 0, arg; (arg = args[i]) !== undefined; i++) { + if (shim$1.Parser.looksLikeNumber(arg) && + Number.isSafeInteger(Math.floor(parseFloat(`${arg}`)))) { + args[i] = Number(arg); + } + } + return argv; + }; + self._runValidation = function runValidation(argv, aliases, positionalMap, parseErrors, isDefaultCommand = false) { + if (parseErrors) + throw new YError(parseErrors.message); + validation$1.nonOptionCount(argv); + validation$1.requiredArguments(argv); + let failedStrictCommands = false; + if (strictCommands) { + failedStrictCommands = validation$1.unknownCommands(argv); + } + if (strict && !failedStrictCommands) { + validation$1.unknownArguments(argv, aliases, positionalMap, isDefaultCommand); + } + else if (strictOptions) { + validation$1.unknownArguments(argv, aliases, {}, false, false); + } + validation$1.customChecks(argv, aliases); + validation$1.limitedChoices(argv); + validation$1.implications(argv); + validation$1.conflicting(argv); + }; + function guessLocale() { + if (!detectLocale) + return; + const locale = shim$1.getEnv('LC_ALL') || + shim$1.getEnv('LC_MESSAGES') || + shim$1.getEnv('LANG') || + shim$1.getEnv('LANGUAGE') || + 'en_US'; + self.locale(locale.replace(/[.:].*/, '')); + } + self.help(); + self.version(); + return self; +} +const rebase = (base, dir) => shim$1.path.relative(base, dir); +function isYargsInstance(y) { + return !!y && typeof y._parseArgs === 'function'; +} + +var _a, _b; +const { readFileSync } = require('fs'); +const { inspect } = require('util'); +const { resolve } = require('path'); +const y18n = require('y18n'); +const Parser = require('yargs-parser'); +var cjsPlatformShim = { + assert: { + notStrictEqual: assert.notStrictEqual, + strictEqual: assert.strictEqual, + }, + cliui: require('cliui'), + findUp: require('escalade/sync'), + getEnv: (key) => { + return process.env[key]; + }, + getCallerFile: require('get-caller-file'), + getProcessArgvBin: getProcessArgvBin, + inspect, + mainFilename: (_b = (_a = require === null || require === void 0 ? void 0 : require.main) === null || _a === void 0 ? void 0 : _a.filename) !== null && _b !== void 0 ? _b : process.cwd(), + Parser, + path: require('path'), + process: { + argv: () => process.argv, + cwd: process.cwd, + execPath: () => process.execPath, + exit: (code) => { + process.exit(code); + }, + nextTick: process.nextTick, + stdColumns: typeof process.stdout.columns !== 'undefined' + ? process.stdout.columns + : null, + }, + readFileSync, + require: require, + requireDirectory: require('require-directory'), + stringWidth: require('string-width'), + y18n: y18n({ + directory: resolve(__dirname, '../locales'), + updateFiles: false, + }), +}; + +const minNodeVersion = process && process.env && process.env.YARGS_MIN_NODE_VERSION + ? Number(process.env.YARGS_MIN_NODE_VERSION) + : 10; +if (process && process.version) { + const major = Number(process.version.match(/v([^.]+)/)[1]); + if (major < minNodeVersion) { + throw Error(`yargs supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs#supported-nodejs-versions`); + } +} +const Parser$1 = require('yargs-parser'); +const Yargs$1 = YargsWithShim(cjsPlatformShim); +var cjs = { + applyExtends, + cjsPlatformShim, + Yargs: Yargs$1, + argsert, + globalMiddlewareFactory, + isPromise, + objFilter, + parseCommand, + Parser: Parser$1, + processArgv, + rebase, + YError, +}; + +module.exports = cjs; diff --git a/yargs/build/lib/argsert.js b/yargs/build/lib/argsert.js new file mode 100644 index 0000000000..be5b3aa69f --- /dev/null +++ b/yargs/build/lib/argsert.js @@ -0,0 +1,62 @@ +import { YError } from './yerror.js'; +import { parseCommand } from './parse-command.js'; +const positionName = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth']; +export function argsert(arg1, arg2, arg3) { + function parseArgs() { + return typeof arg1 === 'object' + ? [{ demanded: [], optional: [] }, arg1, arg2] + : [ + parseCommand(`cmd ${arg1}`), + arg2, + arg3, + ]; + } + try { + let position = 0; + const [parsed, callerArguments, _length] = parseArgs(); + const args = [].slice.call(callerArguments); + while (args.length && args[args.length - 1] === undefined) + args.pop(); + const length = _length || args.length; + if (length < parsed.demanded.length) { + throw new YError(`Not enough arguments provided. Expected ${parsed.demanded.length} but received ${args.length}.`); + } + const totalCommands = parsed.demanded.length + parsed.optional.length; + if (length > totalCommands) { + throw new YError(`Too many arguments provided. Expected max ${totalCommands} but received ${length}.`); + } + parsed.demanded.forEach(demanded => { + const arg = args.shift(); + const observedType = guessType(arg); + const matchingTypes = demanded.cmd.filter(type => type === observedType || type === '*'); + if (matchingTypes.length === 0) + argumentTypeError(observedType, demanded.cmd, position); + position += 1; + }); + parsed.optional.forEach(optional => { + if (args.length === 0) + return; + const arg = args.shift(); + const observedType = guessType(arg); + const matchingTypes = optional.cmd.filter(type => type === observedType || type === '*'); + if (matchingTypes.length === 0) + argumentTypeError(observedType, optional.cmd, position); + position += 1; + }); + } + catch (err) { + console.warn(err.stack); + } +} +function guessType(arg) { + if (Array.isArray(arg)) { + return 'array'; + } + else if (arg === null) { + return 'null'; + } + return typeof arg; +} +function argumentTypeError(observedType, allowedTypes, position) { + throw new YError(`Invalid ${positionName[position] || 'manyith'} argument. Expected ${allowedTypes.join(' or ')} but received ${observedType}.`); +} diff --git a/yargs/build/lib/command.js b/yargs/build/lib/command.js new file mode 100644 index 0000000000..9a55dae224 --- /dev/null +++ b/yargs/build/lib/command.js @@ -0,0 +1,382 @@ +import { assertNotStrictEqual, } from './typings/common-types.js'; +import { isPromise } from './utils/is-promise.js'; +import { applyMiddleware, commandMiddlewareFactory, } from './middleware.js'; +import { parseCommand } from './parse-command.js'; +import { isYargsInstance, } from './yargs-factory.js'; +import whichModule from './utils/which-module.js'; +const DEFAULT_MARKER = /(^\*)|(^\$0)/; +export function command(yargs, usage, validation, globalMiddleware = [], shim) { + const self = {}; + let handlers = {}; + let aliasMap = {}; + let defaultCommand; + self.addHandler = function addHandler(cmd, description, builder, handler, commandMiddleware, deprecated) { + let aliases = []; + const middlewares = commandMiddlewareFactory(commandMiddleware); + handler = handler || (() => { }); + if (Array.isArray(cmd)) { + if (isCommandAndAliases(cmd)) { + [cmd, ...aliases] = cmd; + } + else { + for (const command of cmd) { + self.addHandler(command); + } + } + } + else if (isCommandHandlerDefinition(cmd)) { + let command = Array.isArray(cmd.command) || typeof cmd.command === 'string' + ? cmd.command + : moduleName(cmd); + if (cmd.aliases) + command = [].concat(command).concat(cmd.aliases); + self.addHandler(command, extractDesc(cmd), cmd.builder, cmd.handler, cmd.middlewares, cmd.deprecated); + return; + } + else if (isCommandBuilderDefinition(builder)) { + self.addHandler([cmd].concat(aliases), description, builder.builder, builder.handler, builder.middlewares, builder.deprecated); + return; + } + if (typeof cmd === 'string') { + const parsedCommand = parseCommand(cmd); + aliases = aliases.map(alias => parseCommand(alias).cmd); + let isDefault = false; + const parsedAliases = [parsedCommand.cmd].concat(aliases).filter(c => { + if (DEFAULT_MARKER.test(c)) { + isDefault = true; + return false; + } + return true; + }); + if (parsedAliases.length === 0 && isDefault) + parsedAliases.push('$0'); + if (isDefault) { + parsedCommand.cmd = parsedAliases[0]; + aliases = parsedAliases.slice(1); + cmd = cmd.replace(DEFAULT_MARKER, parsedCommand.cmd); + } + aliases.forEach(alias => { + aliasMap[alias] = parsedCommand.cmd; + }); + if (description !== false) { + usage.command(cmd, description, isDefault, aliases, deprecated); + } + handlers[parsedCommand.cmd] = { + original: cmd, + description, + handler, + builder: builder || {}, + middlewares, + deprecated, + demanded: parsedCommand.demanded, + optional: parsedCommand.optional, + }; + if (isDefault) + defaultCommand = handlers[parsedCommand.cmd]; + } + }; + self.addDirectory = function addDirectory(dir, context, req, callerFile, opts) { + opts = opts || {}; + if (typeof opts.recurse !== 'boolean') + opts.recurse = false; + if (!Array.isArray(opts.extensions)) + opts.extensions = ['js']; + const parentVisit = typeof opts.visit === 'function' ? opts.visit : (o) => o; + opts.visit = function visit(obj, joined, filename) { + const visited = parentVisit(obj, joined, filename); + if (visited) { + if (~context.files.indexOf(joined)) + return visited; + context.files.push(joined); + self.addHandler(visited); + } + return visited; + }; + shim.requireDirectory({ require: req, filename: callerFile }, dir, opts); + }; + function moduleName(obj) { + const mod = whichModule(obj); + if (!mod) + throw new Error(`No command name given for module: ${shim.inspect(obj)}`); + return commandFromFilename(mod.filename); + } + function commandFromFilename(filename) { + return shim.path.basename(filename, shim.path.extname(filename)); + } + function extractDesc({ describe, description, desc, }) { + for (const test of [describe, description, desc]) { + if (typeof test === 'string' || test === false) + return test; + assertNotStrictEqual(test, true, shim); + } + return false; + } + self.getCommands = () => Object.keys(handlers).concat(Object.keys(aliasMap)); + self.getCommandHandlers = () => handlers; + self.hasDefaultCommand = () => !!defaultCommand; + self.runCommand = function runCommand(command, yargs, parsed, commandIndex) { + let aliases = parsed.aliases; + const commandHandler = handlers[command] || handlers[aliasMap[command]] || defaultCommand; + const currentContext = yargs.getContext(); + let numFiles = currentContext.files.length; + const parentCommands = currentContext.commands.slice(); + let innerArgv = parsed.argv; + let positionalMap = {}; + if (command) { + currentContext.commands.push(command); + currentContext.fullCommands.push(commandHandler.original); + } + const builder = commandHandler.builder; + if (isCommandBuilderCallback(builder)) { + const builderOutput = builder(yargs.reset(parsed.aliases)); + const innerYargs = isYargsInstance(builderOutput) ? builderOutput : yargs; + if (shouldUpdateUsage(innerYargs)) { + innerYargs + .getUsageInstance() + .usage(usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description); + } + innerArgv = innerYargs._parseArgs(null, null, true, commandIndex); + aliases = innerYargs.parsed.aliases; + } + else if (isCommandBuilderOptionDefinitions(builder)) { + const innerYargs = yargs.reset(parsed.aliases); + if (shouldUpdateUsage(innerYargs)) { + innerYargs + .getUsageInstance() + .usage(usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description); + } + Object.keys(commandHandler.builder).forEach(key => { + innerYargs.option(key, builder[key]); + }); + innerArgv = innerYargs._parseArgs(null, null, true, commandIndex); + aliases = innerYargs.parsed.aliases; + } + if (!yargs._hasOutput()) { + positionalMap = populatePositionals(commandHandler, innerArgv, currentContext); + } + const middlewares = globalMiddleware + .slice(0) + .concat(commandHandler.middlewares); + applyMiddleware(innerArgv, yargs, middlewares, true); + if (!yargs._hasOutput()) { + yargs._runValidation(innerArgv, aliases, positionalMap, yargs.parsed.error, !command); + } + if (commandHandler.handler && !yargs._hasOutput()) { + yargs._setHasOutput(); + const populateDoubleDash = !!yargs.getOptions().configuration['populate--']; + yargs._postProcess(innerArgv, populateDoubleDash); + innerArgv = applyMiddleware(innerArgv, yargs, middlewares, false); + let handlerResult; + if (isPromise(innerArgv)) { + handlerResult = innerArgv.then(argv => commandHandler.handler(argv)); + } + else { + handlerResult = commandHandler.handler(innerArgv); + } + const handlerFinishCommand = yargs.getHandlerFinishCommand(); + if (isPromise(handlerResult)) { + yargs.getUsageInstance().cacheHelpMessage(); + handlerResult + .then(value => { + if (handlerFinishCommand) { + handlerFinishCommand(value); + } + }) + .catch(error => { + try { + yargs.getUsageInstance().fail(null, error); + } + catch (err) { + } + }) + .then(() => { + yargs.getUsageInstance().clearCachedHelpMessage(); + }); + } + else { + if (handlerFinishCommand) { + handlerFinishCommand(handlerResult); + } + } + } + if (command) { + currentContext.commands.pop(); + currentContext.fullCommands.pop(); + } + numFiles = currentContext.files.length - numFiles; + if (numFiles > 0) + currentContext.files.splice(numFiles * -1, numFiles); + return innerArgv; + }; + function shouldUpdateUsage(yargs) { + return (!yargs.getUsageInstance().getUsageDisabled() && + yargs.getUsageInstance().getUsage().length === 0); + } + function usageFromParentCommandsCommandHandler(parentCommands, commandHandler) { + const c = DEFAULT_MARKER.test(commandHandler.original) + ? commandHandler.original.replace(DEFAULT_MARKER, '').trim() + : commandHandler.original; + const pc = parentCommands.filter(c => { + return !DEFAULT_MARKER.test(c); + }); + pc.push(c); + return `$0 ${pc.join(' ')}`; + } + self.runDefaultBuilderOn = function (yargs) { + assertNotStrictEqual(defaultCommand, undefined, shim); + if (shouldUpdateUsage(yargs)) { + const commandString = DEFAULT_MARKER.test(defaultCommand.original) + ? defaultCommand.original + : defaultCommand.original.replace(/^[^[\]<>]*/, '$0 '); + yargs.getUsageInstance().usage(commandString, defaultCommand.description); + } + const builder = defaultCommand.builder; + if (isCommandBuilderCallback(builder)) { + builder(yargs); + } + else if (!isCommandBuilderDefinition(builder)) { + Object.keys(builder).forEach(key => { + yargs.option(key, builder[key]); + }); + } + }; + function populatePositionals(commandHandler, argv, context) { + argv._ = argv._.slice(context.commands.length); + const demanded = commandHandler.demanded.slice(0); + const optional = commandHandler.optional.slice(0); + const positionalMap = {}; + validation.positionalCount(demanded.length, argv._.length); + while (demanded.length) { + const demand = demanded.shift(); + populatePositional(demand, argv, positionalMap); + } + while (optional.length) { + const maybe = optional.shift(); + populatePositional(maybe, argv, positionalMap); + } + argv._ = context.commands.concat(argv._.map(a => '' + a)); + postProcessPositionals(argv, positionalMap, self.cmdToParseOptions(commandHandler.original)); + return positionalMap; + } + function populatePositional(positional, argv, positionalMap) { + const cmd = positional.cmd[0]; + if (positional.variadic) { + positionalMap[cmd] = argv._.splice(0).map(String); + } + else { + if (argv._.length) + positionalMap[cmd] = [String(argv._.shift())]; + } + } + function postProcessPositionals(argv, positionalMap, parseOptions) { + const options = Object.assign({}, yargs.getOptions()); + options.default = Object.assign(parseOptions.default, options.default); + for (const key of Object.keys(parseOptions.alias)) { + options.alias[key] = (options.alias[key] || []).concat(parseOptions.alias[key]); + } + options.array = options.array.concat(parseOptions.array); + options.config = {}; + const unparsed = []; + Object.keys(positionalMap).forEach(key => { + positionalMap[key].map(value => { + if (options.configuration['unknown-options-as-args']) + options.key[key] = true; + unparsed.push(`--${key}`); + unparsed.push(value); + }); + }); + if (!unparsed.length) + return; + const config = Object.assign({}, options.configuration, { + 'populate--': true, + }); + const parsed = shim.Parser.detailed(unparsed, Object.assign({}, options, { + configuration: config, + })); + if (parsed.error) { + yargs.getUsageInstance().fail(parsed.error.message, parsed.error); + } + else { + const positionalKeys = Object.keys(positionalMap); + Object.keys(positionalMap).forEach(key => { + positionalKeys.push(...parsed.aliases[key]); + }); + Object.keys(parsed.argv).forEach(key => { + if (positionalKeys.indexOf(key) !== -1) { + if (!positionalMap[key]) + positionalMap[key] = parsed.argv[key]; + argv[key] = parsed.argv[key]; + } + }); + } + } + self.cmdToParseOptions = function (cmdString) { + const parseOptions = { + array: [], + default: {}, + alias: {}, + demand: {}, + }; + const parsed = parseCommand(cmdString); + parsed.demanded.forEach(d => { + const [cmd, ...aliases] = d.cmd; + if (d.variadic) { + parseOptions.array.push(cmd); + parseOptions.default[cmd] = []; + } + parseOptions.alias[cmd] = aliases; + parseOptions.demand[cmd] = true; + }); + parsed.optional.forEach(o => { + const [cmd, ...aliases] = o.cmd; + if (o.variadic) { + parseOptions.array.push(cmd); + parseOptions.default[cmd] = []; + } + parseOptions.alias[cmd] = aliases; + }); + return parseOptions; + }; + self.reset = () => { + handlers = {}; + aliasMap = {}; + defaultCommand = undefined; + return self; + }; + const frozens = []; + self.freeze = () => { + frozens.push({ + handlers, + aliasMap, + defaultCommand, + }); + }; + self.unfreeze = () => { + const frozen = frozens.pop(); + assertNotStrictEqual(frozen, undefined, shim); + ({ handlers, aliasMap, defaultCommand } = frozen); + }; + return self; +} +export function isCommandBuilderDefinition(builder) { + return (typeof builder === 'object' && + !!builder.builder && + typeof builder.handler === 'function'); +} +function isCommandAndAliases(cmd) { + if (cmd.every(c => typeof c === 'string')) { + return true; + } + else { + return false; + } +} +export function isCommandBuilderCallback(builder) { + return typeof builder === 'function'; +} +function isCommandBuilderOptionDefinitions(builder) { + return typeof builder === 'object'; +} +export function isCommandHandlerDefinition(cmd) { + return typeof cmd === 'object' && !Array.isArray(cmd); +} diff --git a/yargs/build/lib/completion-templates.js b/yargs/build/lib/completion-templates.js new file mode 100644 index 0000000000..990d34d00b --- /dev/null +++ b/yargs/build/lib/completion-templates.js @@ -0,0 +1,47 @@ +export const completionShTemplate = `###-begin-{{app_name}}-completions-### +# +# yargs command completion script +# +# Installation: {{app_path}} {{completion_command}} >> ~/.bashrc +# or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX. +# +_yargs_completions() +{ + local cur_word args type_list + + cur_word="\${COMP_WORDS[COMP_CWORD]}" + args=("\${COMP_WORDS[@]}") + + # ask yargs to generate completions. + type_list=$({{app_path}} --get-yargs-completions "\${args[@]}") + + COMPREPLY=( $(compgen -W "\${type_list}" -- \${cur_word}) ) + + # if no match was found, fall back to filename completion + if [ \${#COMPREPLY[@]} -eq 0 ]; then + COMPREPLY=() + fi + + return 0 +} +complete -o default -F _yargs_completions {{app_name}} +###-end-{{app_name}}-completions-### +`; +export const completionZshTemplate = `###-begin-{{app_name}}-completions-### +# +# yargs command completion script +# +# Installation: {{app_path}} {{completion_command}} >> ~/.zshrc +# or {{app_path}} {{completion_command}} >> ~/.zsh_profile on OSX. +# +_{{app_name}}_yargs_completions() +{ + local reply + local si=$IFS + IFS=$'\n' reply=($(COMP_CWORD="$((CURRENT-1))" COMP_LINE="$BUFFER" COMP_POINT="$CURSOR" {{app_path}} --get-yargs-completions "\${words[@]}")) + IFS=$si + _describe 'values' reply +} +compdef _{{app_name}}_yargs_completions {{app_name}} +###-end-{{app_name}}-completions-### +`; diff --git a/yargs/build/lib/completion.js b/yargs/build/lib/completion.js new file mode 100644 index 0000000000..1c2e9249a7 --- /dev/null +++ b/yargs/build/lib/completion.js @@ -0,0 +1,128 @@ +import { isCommandBuilderCallback } from './command.js'; +import { assertNotStrictEqual } from './typings/common-types.js'; +import * as templates from './completion-templates.js'; +import { isPromise } from './utils/is-promise.js'; +import { parseCommand } from './parse-command.js'; +export function completion(yargs, usage, command, shim) { + const self = { + completionKey: 'get-yargs-completions', + }; + let aliases; + self.setParsed = function setParsed(parsed) { + aliases = parsed.aliases; + }; + const zshShell = (shim.getEnv('SHELL') && shim.getEnv('SHELL').indexOf('zsh') !== -1) || + (shim.getEnv('ZSH_NAME') && shim.getEnv('ZSH_NAME').indexOf('zsh') !== -1); + self.getCompletion = function getCompletion(args, done) { + const completions = []; + const current = args.length ? args[args.length - 1] : ''; + const argv = yargs.parse(args, true); + const parentCommands = yargs.getContext().commands; + function runCompletionFunction(argv) { + assertNotStrictEqual(completionFunction, null, shim); + if (isSyncCompletionFunction(completionFunction)) { + const result = completionFunction(current, argv); + if (isPromise(result)) { + return result + .then(list => { + shim.process.nextTick(() => { + done(list); + }); + }) + .catch(err => { + shim.process.nextTick(() => { + throw err; + }); + }); + } + return done(result); + } + else { + return completionFunction(current, argv, completions => { + done(completions); + }); + } + } + if (completionFunction) { + return isPromise(argv) + ? argv.then(runCompletionFunction) + : runCompletionFunction(argv); + } + const handlers = command.getCommandHandlers(); + for (let i = 0, ii = args.length; i < ii; ++i) { + if (handlers[args[i]] && handlers[args[i]].builder) { + const builder = handlers[args[i]].builder; + if (isCommandBuilderCallback(builder)) { + const y = yargs.reset(); + builder(y); + return y.argv; + } + } + } + if (!current.match(/^-/) && + parentCommands[parentCommands.length - 1] !== current) { + usage.getCommands().forEach(usageCommand => { + const commandName = parseCommand(usageCommand[0]).cmd; + if (args.indexOf(commandName) === -1) { + if (!zshShell) { + completions.push(commandName); + } + else { + const desc = usageCommand[1] || ''; + completions.push(commandName.replace(/:/g, '\\:') + ':' + desc); + } + } + }); + } + if (current.match(/^-/) || (current === '' && completions.length === 0)) { + const descs = usage.getDescriptions(); + const options = yargs.getOptions(); + Object.keys(options.key).forEach(key => { + const negable = !!options.configuration['boolean-negation'] && + options.boolean.includes(key); + let keyAndAliases = [key].concat(aliases[key] || []); + if (negable) + keyAndAliases = keyAndAliases.concat(keyAndAliases.map(key => `no-${key}`)); + function completeOptionKey(key) { + const notInArgs = keyAndAliases.every(val => args.indexOf(`--${val}`) === -1); + if (notInArgs) { + const startsByTwoDashes = (s) => /^--/.test(s); + const isShortOption = (s) => /^[^0-9]$/.test(s); + const dashes = !startsByTwoDashes(current) && isShortOption(key) ? '-' : '--'; + if (!zshShell) { + completions.push(dashes + key); + } + else { + const desc = descs[key] || ''; + completions.push(dashes + + `${key.replace(/:/g, '\\:')}:${desc.replace('__yargsString__:', '')}`); + } + } + } + completeOptionKey(key); + if (negable && !!options.default[key]) + completeOptionKey(`no-${key}`); + }); + } + done(completions); + }; + self.generateCompletionScript = function generateCompletionScript($0, cmd) { + let script = zshShell + ? templates.completionZshTemplate + : templates.completionShTemplate; + const name = shim.path.basename($0); + if ($0.match(/\.js$/)) + $0 = `./${$0}`; + script = script.replace(/{{app_name}}/g, name); + script = script.replace(/{{completion_command}}/g, cmd); + return script.replace(/{{app_path}}/g, $0); + }; + let completionFunction = null; + self.registerFunction = fn => { + completionFunction = fn; + }; + return self; +} +function isSyncCompletionFunction(completionFunction) { + return completionFunction.length < 3; +} diff --git a/yargs/build/lib/middleware.js b/yargs/build/lib/middleware.js new file mode 100644 index 0000000000..680094cd89 --- /dev/null +++ b/yargs/build/lib/middleware.js @@ -0,0 +1,53 @@ +import { argsert } from './argsert.js'; +import { isPromise } from './utils/is-promise.js'; +export function globalMiddlewareFactory(globalMiddleware, context) { + return function (callback, applyBeforeValidation = false) { + argsert(' [boolean]', [callback, applyBeforeValidation], arguments.length); + if (Array.isArray(callback)) { + for (let i = 0; i < callback.length; i++) { + if (typeof callback[i] !== 'function') { + throw Error('middleware must be a function'); + } + callback[i].applyBeforeValidation = applyBeforeValidation; + } + Array.prototype.push.apply(globalMiddleware, callback); + } + else if (typeof callback === 'function') { + callback.applyBeforeValidation = applyBeforeValidation; + globalMiddleware.push(callback); + } + return context; + }; +} +export function commandMiddlewareFactory(commandMiddleware) { + if (!commandMiddleware) + return []; + return commandMiddleware.map(middleware => { + middleware.applyBeforeValidation = false; + return middleware; + }); +} +export function applyMiddleware(argv, yargs, middlewares, beforeValidation) { + const beforeValidationError = new Error('middleware cannot return a promise when applyBeforeValidation is true'); + return middlewares.reduce((acc, middleware) => { + if (middleware.applyBeforeValidation !== beforeValidation) { + return acc; + } + if (isPromise(acc)) { + return acc + .then(initialObj => Promise.all([ + initialObj, + middleware(initialObj, yargs), + ])) + .then(([initialObj, middlewareObj]) => Object.assign(initialObj, middlewareObj)); + } + else { + const result = middleware(acc, yargs); + if (beforeValidation && isPromise(result)) + throw beforeValidationError; + return isPromise(result) + ? result.then(middlewareObj => Object.assign(acc, middlewareObj)) + : Object.assign(acc, result); + } + }, argv); +} diff --git a/yargs/build/lib/parse-command.js b/yargs/build/lib/parse-command.js new file mode 100644 index 0000000000..4989f53102 --- /dev/null +++ b/yargs/build/lib/parse-command.js @@ -0,0 +1,32 @@ +export function parseCommand(cmd) { + const extraSpacesStrippedCommand = cmd.replace(/\s{2,}/g, ' '); + const splitCommand = extraSpacesStrippedCommand.split(/\s+(?![^[]*]|[^<]*>)/); + const bregex = /\.*[\][<>]/g; + const firstCommand = splitCommand.shift(); + if (!firstCommand) + throw new Error(`No command found in: ${cmd}`); + const parsedCommand = { + cmd: firstCommand.replace(bregex, ''), + demanded: [], + optional: [], + }; + splitCommand.forEach((cmd, i) => { + let variadic = false; + cmd = cmd.replace(/\s/g, ''); + if (/\.+[\]>]/.test(cmd) && i === splitCommand.length - 1) + variadic = true; + if (/^\[/.test(cmd)) { + parsedCommand.optional.push({ + cmd: cmd.replace(bregex, '').split('|'), + variadic, + }); + } + else { + parsedCommand.demanded.push({ + cmd: cmd.replace(bregex, '').split('|'), + variadic, + }); + } + }); + return parsedCommand; +} diff --git a/yargs/build/lib/typings/common-types.js b/yargs/build/lib/typings/common-types.js new file mode 100644 index 0000000000..73e1773a26 --- /dev/null +++ b/yargs/build/lib/typings/common-types.js @@ -0,0 +1,9 @@ +export function assertNotStrictEqual(actual, expected, shim, message) { + shim.assert.notStrictEqual(actual, expected, message); +} +export function assertSingleKey(actual, shim) { + shim.assert.strictEqual(typeof actual, 'string'); +} +export function objectKeys(object) { + return Object.keys(object); +} diff --git a/yargs/build/lib/typings/yargs-parser-types.js b/yargs/build/lib/typings/yargs-parser-types.js new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/yargs/build/lib/typings/yargs-parser-types.js @@ -0,0 +1 @@ +export {}; diff --git a/yargs/build/lib/usage.js b/yargs/build/lib/usage.js new file mode 100644 index 0000000000..ecd1aacad9 --- /dev/null +++ b/yargs/build/lib/usage.js @@ -0,0 +1,548 @@ +import { assertNotStrictEqual, } from './typings/common-types.js'; +import { objFilter } from './utils/obj-filter.js'; +import { YError } from './yerror.js'; +import setBlocking from './utils/set-blocking.js'; +export function usage(yargs, y18n, shim) { + const __ = y18n.__; + const self = {}; + const fails = []; + self.failFn = function failFn(f) { + fails.push(f); + }; + let failMessage = null; + let showHelpOnFail = true; + self.showHelpOnFail = function showHelpOnFailFn(arg1 = true, arg2) { + function parseFunctionArgs() { + return typeof arg1 === 'string' ? [true, arg1] : [arg1, arg2]; + } + const [enabled, message] = parseFunctionArgs(); + failMessage = message; + showHelpOnFail = enabled; + return self; + }; + let failureOutput = false; + self.fail = function fail(msg, err) { + const logger = yargs._getLoggerInstance(); + if (fails.length) { + for (let i = fails.length - 1; i >= 0; --i) { + fails[i](msg, err, self); + } + } + else { + if (yargs.getExitProcess()) + setBlocking(true); + if (!failureOutput) { + failureOutput = true; + if (showHelpOnFail) { + yargs.showHelp('error'); + logger.error(); + } + if (msg || err) + logger.error(msg || err); + if (failMessage) { + if (msg || err) + logger.error(''); + logger.error(failMessage); + } + } + err = err || new YError(msg); + if (yargs.getExitProcess()) { + return yargs.exit(1); + } + else if (yargs._hasParseCallback()) { + return yargs.exit(1, err); + } + else { + throw err; + } + } + }; + let usages = []; + let usageDisabled = false; + self.usage = (msg, description) => { + if (msg === null) { + usageDisabled = true; + usages = []; + return self; + } + usageDisabled = false; + usages.push([msg, description || '']); + return self; + }; + self.getUsage = () => { + return usages; + }; + self.getUsageDisabled = () => { + return usageDisabled; + }; + self.getPositionalGroupName = () => { + return __('Positionals:'); + }; + let examples = []; + self.example = (cmd, description) => { + examples.push([cmd, description || '']); + }; + let commands = []; + self.command = function command(cmd, description, isDefault, aliases, deprecated = false) { + if (isDefault) { + commands = commands.map(cmdArray => { + cmdArray[2] = false; + return cmdArray; + }); + } + commands.push([cmd, description || '', isDefault, aliases, deprecated]); + }; + self.getCommands = () => commands; + let descriptions = {}; + self.describe = function describe(keyOrKeys, desc) { + if (Array.isArray(keyOrKeys)) { + keyOrKeys.forEach(k => { + self.describe(k, desc); + }); + } + else if (typeof keyOrKeys === 'object') { + Object.keys(keyOrKeys).forEach(k => { + self.describe(k, keyOrKeys[k]); + }); + } + else { + descriptions[keyOrKeys] = desc; + } + }; + self.getDescriptions = () => descriptions; + let epilogs = []; + self.epilog = msg => { + epilogs.push(msg); + }; + let wrapSet = false; + let wrap; + self.wrap = cols => { + wrapSet = true; + wrap = cols; + }; + function getWrap() { + if (!wrapSet) { + wrap = windowWidth(); + wrapSet = true; + } + return wrap; + } + const deferY18nLookupPrefix = '__yargsString__:'; + self.deferY18nLookup = str => deferY18nLookupPrefix + str; + self.help = function help() { + if (cachedHelpMessage) + return cachedHelpMessage; + normalizeAliases(); + const base$0 = yargs.customScriptName + ? yargs.$0 + : shim.path.basename(yargs.$0); + const demandedOptions = yargs.getDemandedOptions(); + const demandedCommands = yargs.getDemandedCommands(); + const deprecatedOptions = yargs.getDeprecatedOptions(); + const groups = yargs.getGroups(); + const options = yargs.getOptions(); + let keys = []; + keys = keys.concat(Object.keys(descriptions)); + keys = keys.concat(Object.keys(demandedOptions)); + keys = keys.concat(Object.keys(demandedCommands)); + keys = keys.concat(Object.keys(options.default)); + keys = keys.filter(filterHiddenOptions); + keys = Object.keys(keys.reduce((acc, key) => { + if (key !== '_') + acc[key] = true; + return acc; + }, {})); + const theWrap = getWrap(); + const ui = shim.cliui({ + width: theWrap, + wrap: !!theWrap, + }); + if (!usageDisabled) { + if (usages.length) { + usages.forEach(usage => { + ui.div(`${usage[0].replace(/\$0/g, base$0)}`); + if (usage[1]) { + ui.div({ text: `${usage[1]}`, padding: [1, 0, 0, 0] }); + } + }); + ui.div(); + } + else if (commands.length) { + let u = null; + if (demandedCommands._) { + u = `${base$0} <${__('command')}>\n`; + } + else { + u = `${base$0} [${__('command')}]\n`; + } + ui.div(`${u}`); + } + } + if (commands.length) { + ui.div(__('Commands:')); + const context = yargs.getContext(); + const parentCommands = context.commands.length + ? `${context.commands.join(' ')} ` + : ''; + if (yargs.getParserConfiguration()['sort-commands'] === true) { + commands = commands.sort((a, b) => a[0].localeCompare(b[0])); + } + commands.forEach(command => { + const commandString = `${base$0} ${parentCommands}${command[0].replace(/^\$0 ?/, '')}`; + ui.span({ + text: commandString, + padding: [0, 2, 0, 2], + width: maxWidth(commands, theWrap, `${base$0}${parentCommands}`) + 4, + }, { text: command[1] }); + const hints = []; + if (command[2]) + hints.push(`[${__('default')}]`); + if (command[3] && command[3].length) { + hints.push(`[${__('aliases:')} ${command[3].join(', ')}]`); + } + if (command[4]) { + if (typeof command[4] === 'string') { + hints.push(`[${__('deprecated: %s', command[4])}]`); + } + else { + hints.push(`[${__('deprecated')}]`); + } + } + if (hints.length) { + ui.div({ + text: hints.join(' '), + padding: [0, 0, 0, 2], + align: 'right', + }); + } + else { + ui.div(); + } + }); + ui.div(); + } + const aliasKeys = (Object.keys(options.alias) || []).concat(Object.keys(yargs.parsed.newAliases) || []); + keys = keys.filter(key => !yargs.parsed.newAliases[key] && + aliasKeys.every(alias => (options.alias[alias] || []).indexOf(key) === -1)); + const defaultGroup = __('Options:'); + if (!groups[defaultGroup]) + groups[defaultGroup] = []; + addUngroupedKeys(keys, options.alias, groups, defaultGroup); + const isLongSwitch = (sw) => /^--/.test(getText(sw)); + const displayedGroups = Object.keys(groups) + .filter(groupName => groups[groupName].length > 0) + .map(groupName => { + const normalizedKeys = groups[groupName] + .filter(filterHiddenOptions) + .map(key => { + if (~aliasKeys.indexOf(key)) + return key; + for (let i = 0, aliasKey; (aliasKey = aliasKeys[i]) !== undefined; i++) { + if (~(options.alias[aliasKey] || []).indexOf(key)) + return aliasKey; + } + return key; + }); + return { groupName, normalizedKeys }; + }) + .filter(({ normalizedKeys }) => normalizedKeys.length > 0) + .map(({ groupName, normalizedKeys }) => { + const switches = normalizedKeys.reduce((acc, key) => { + acc[key] = [key] + .concat(options.alias[key] || []) + .map(sw => { + if (groupName === self.getPositionalGroupName()) + return sw; + else { + return ((/^[0-9]$/.test(sw) + ? ~options.boolean.indexOf(key) + ? '-' + : '--' + : sw.length > 1 + ? '--' + : '-') + sw); + } + }) + .sort((sw1, sw2) => isLongSwitch(sw1) === isLongSwitch(sw2) + ? 0 + : isLongSwitch(sw1) + ? 1 + : -1) + .join(', '); + return acc; + }, {}); + return { groupName, normalizedKeys, switches }; + }); + const shortSwitchesUsed = displayedGroups + .filter(({ groupName }) => groupName !== self.getPositionalGroupName()) + .some(({ normalizedKeys, switches }) => !normalizedKeys.every(key => isLongSwitch(switches[key]))); + if (shortSwitchesUsed) { + displayedGroups + .filter(({ groupName }) => groupName !== self.getPositionalGroupName()) + .forEach(({ normalizedKeys, switches }) => { + normalizedKeys.forEach(key => { + if (isLongSwitch(switches[key])) { + switches[key] = addIndentation(switches[key], '-x, '.length); + } + }); + }); + } + displayedGroups.forEach(({ groupName, normalizedKeys, switches }) => { + ui.div(groupName); + normalizedKeys.forEach(key => { + const kswitch = switches[key]; + let desc = descriptions[key] || ''; + let type = null; + if (~desc.lastIndexOf(deferY18nLookupPrefix)) + desc = __(desc.substring(deferY18nLookupPrefix.length)); + if (~options.boolean.indexOf(key)) + type = `[${__('boolean')}]`; + if (~options.count.indexOf(key)) + type = `[${__('count')}]`; + if (~options.string.indexOf(key)) + type = `[${__('string')}]`; + if (~options.normalize.indexOf(key)) + type = `[${__('string')}]`; + if (~options.array.indexOf(key)) + type = `[${__('array')}]`; + if (~options.number.indexOf(key)) + type = `[${__('number')}]`; + const deprecatedExtra = (deprecated) => typeof deprecated === 'string' + ? `[${__('deprecated: %s', deprecated)}]` + : `[${__('deprecated')}]`; + const extra = [ + key in deprecatedOptions + ? deprecatedExtra(deprecatedOptions[key]) + : null, + type, + key in demandedOptions ? `[${__('required')}]` : null, + options.choices && options.choices[key] + ? `[${__('choices:')} ${self.stringifiedValues(options.choices[key])}]` + : null, + defaultString(options.default[key], options.defaultDescription[key]), + ] + .filter(Boolean) + .join(' '); + ui.span({ + text: getText(kswitch), + padding: [0, 2, 0, 2 + getIndentation(kswitch)], + width: maxWidth(switches, theWrap) + 4, + }, desc); + if (extra) + ui.div({ text: extra, padding: [0, 0, 0, 2], align: 'right' }); + else + ui.div(); + }); + ui.div(); + }); + if (examples.length) { + ui.div(__('Examples:')); + examples.forEach(example => { + example[0] = example[0].replace(/\$0/g, base$0); + }); + examples.forEach(example => { + if (example[1] === '') { + ui.div({ + text: example[0], + padding: [0, 2, 0, 2], + }); + } + else { + ui.div({ + text: example[0], + padding: [0, 2, 0, 2], + width: maxWidth(examples, theWrap) + 4, + }, { + text: example[1], + }); + } + }); + ui.div(); + } + if (epilogs.length > 0) { + const e = epilogs + .map(epilog => epilog.replace(/\$0/g, base$0)) + .join('\n'); + ui.div(`${e}\n`); + } + return ui.toString().replace(/\s*$/, ''); + }; + function maxWidth(table, theWrap, modifier) { + let width = 0; + if (!Array.isArray(table)) { + table = Object.values(table).map(v => [v]); + } + table.forEach(v => { + width = Math.max(shim.stringWidth(modifier ? `${modifier} ${getText(v[0])}` : getText(v[0])) + getIndentation(v[0]), width); + }); + if (theWrap) + width = Math.min(width, parseInt((theWrap * 0.5).toString(), 10)); + return width; + } + function normalizeAliases() { + const demandedOptions = yargs.getDemandedOptions(); + const options = yargs.getOptions(); + (Object.keys(options.alias) || []).forEach(key => { + options.alias[key].forEach(alias => { + if (descriptions[alias]) + self.describe(key, descriptions[alias]); + if (alias in demandedOptions) + yargs.demandOption(key, demandedOptions[alias]); + if (~options.boolean.indexOf(alias)) + yargs.boolean(key); + if (~options.count.indexOf(alias)) + yargs.count(key); + if (~options.string.indexOf(alias)) + yargs.string(key); + if (~options.normalize.indexOf(alias)) + yargs.normalize(key); + if (~options.array.indexOf(alias)) + yargs.array(key); + if (~options.number.indexOf(alias)) + yargs.number(key); + }); + }); + } + let cachedHelpMessage; + self.cacheHelpMessage = function () { + cachedHelpMessage = this.help(); + }; + self.clearCachedHelpMessage = function () { + cachedHelpMessage = undefined; + }; + function addUngroupedKeys(keys, aliases, groups, defaultGroup) { + let groupedKeys = []; + let toCheck = null; + Object.keys(groups).forEach(group => { + groupedKeys = groupedKeys.concat(groups[group]); + }); + keys.forEach(key => { + toCheck = [key].concat(aliases[key]); + if (!toCheck.some(k => groupedKeys.indexOf(k) !== -1)) { + groups[defaultGroup].push(key); + } + }); + return groupedKeys; + } + function filterHiddenOptions(key) { + return (yargs.getOptions().hiddenOptions.indexOf(key) < 0 || + yargs.parsed.argv[yargs.getOptions().showHiddenOpt]); + } + self.showHelp = (level) => { + const logger = yargs._getLoggerInstance(); + if (!level) + level = 'error'; + const emit = typeof level === 'function' ? level : logger[level]; + emit(self.help()); + }; + self.functionDescription = fn => { + const description = fn.name + ? shim.Parser.decamelize(fn.name, '-') + : __('generated-value'); + return ['(', description, ')'].join(''); + }; + self.stringifiedValues = function stringifiedValues(values, separator) { + let string = ''; + const sep = separator || ', '; + const array = [].concat(values); + if (!values || !array.length) + return string; + array.forEach(value => { + if (string.length) + string += sep; + string += JSON.stringify(value); + }); + return string; + }; + function defaultString(value, defaultDescription) { + let string = `[${__('default:')} `; + if (value === undefined && !defaultDescription) + return null; + if (defaultDescription) { + string += defaultDescription; + } + else { + switch (typeof value) { + case 'string': + string += `"${value}"`; + break; + case 'object': + string += JSON.stringify(value); + break; + default: + string += value; + } + } + return `${string}]`; + } + function windowWidth() { + const maxWidth = 80; + if (shim.process.stdColumns) { + return Math.min(maxWidth, shim.process.stdColumns); + } + else { + return maxWidth; + } + } + let version = null; + self.version = ver => { + version = ver; + }; + self.showVersion = () => { + const logger = yargs._getLoggerInstance(); + logger.log(version); + }; + self.reset = function reset(localLookup) { + failMessage = null; + failureOutput = false; + usages = []; + usageDisabled = false; + epilogs = []; + examples = []; + commands = []; + descriptions = objFilter(descriptions, k => !localLookup[k]); + return self; + }; + const frozens = []; + self.freeze = function freeze() { + frozens.push({ + failMessage, + failureOutput, + usages, + usageDisabled, + epilogs, + examples, + commands, + descriptions, + }); + }; + self.unfreeze = function unfreeze() { + const frozen = frozens.pop(); + assertNotStrictEqual(frozen, undefined, shim); + ({ + failMessage, + failureOutput, + usages, + usageDisabled, + epilogs, + examples, + commands, + descriptions, + } = frozen); + }; + return self; +} +function isIndentedText(text) { + return typeof text === 'object'; +} +function addIndentation(text, indent) { + return isIndentedText(text) + ? { text: text.text, indentation: text.indentation + indent } + : { text, indentation: indent }; +} +function getIndentation(text) { + return isIndentedText(text) ? text.indentation : 0; +} +function getText(text) { + return isIndentedText(text) ? text.text : text; +} diff --git a/yargs/build/lib/utils/apply-extends.js b/yargs/build/lib/utils/apply-extends.js new file mode 100644 index 0000000000..0e593b4fe6 --- /dev/null +++ b/yargs/build/lib/utils/apply-extends.js @@ -0,0 +1,59 @@ +import { YError } from '../yerror.js'; +let previouslyVisitedConfigs = []; +let shim; +export function applyExtends(config, cwd, mergeExtends, _shim) { + shim = _shim; + let defaultConfig = {}; + if (Object.prototype.hasOwnProperty.call(config, 'extends')) { + if (typeof config.extends !== 'string') + return defaultConfig; + const isPath = /\.json|\..*rc$/.test(config.extends); + let pathToDefault = null; + if (!isPath) { + try { + pathToDefault = require.resolve(config.extends); + } + catch (_err) { + return config; + } + } + else { + pathToDefault = getPathToDefaultConfig(cwd, config.extends); + } + checkForCircularExtends(pathToDefault); + previouslyVisitedConfigs.push(pathToDefault); + defaultConfig = isPath + ? JSON.parse(shim.readFileSync(pathToDefault, 'utf8')) + : require(config.extends); + delete config.extends; + defaultConfig = applyExtends(defaultConfig, shim.path.dirname(pathToDefault), mergeExtends, shim); + } + previouslyVisitedConfigs = []; + return mergeExtends + ? mergeDeep(defaultConfig, config) + : Object.assign({}, defaultConfig, config); +} +function checkForCircularExtends(cfgPath) { + if (previouslyVisitedConfigs.indexOf(cfgPath) > -1) { + throw new YError(`Circular extended configurations: '${cfgPath}'.`); + } +} +function getPathToDefaultConfig(cwd, pathToExtend) { + return shim.path.resolve(cwd, pathToExtend); +} +function mergeDeep(config1, config2) { + const target = {}; + function isObject(obj) { + return obj && typeof obj === 'object' && !Array.isArray(obj); + } + Object.assign(target, config1); + for (const key of Object.keys(config2)) { + if (isObject(config2[key]) && isObject(target[key])) { + target[key] = mergeDeep(config1[key], config2[key]); + } + else { + target[key] = config2[key]; + } + } + return target; +} diff --git a/yargs/build/lib/utils/is-promise.js b/yargs/build/lib/utils/is-promise.js new file mode 100644 index 0000000000..d250c08aaf --- /dev/null +++ b/yargs/build/lib/utils/is-promise.js @@ -0,0 +1,5 @@ +export function isPromise(maybePromise) { + return (!!maybePromise && + !!maybePromise.then && + typeof maybePromise.then === 'function'); +} diff --git a/yargs/build/lib/utils/levenshtein.js b/yargs/build/lib/utils/levenshtein.js new file mode 100644 index 0000000000..068168eb7f --- /dev/null +++ b/yargs/build/lib/utils/levenshtein.js @@ -0,0 +1,26 @@ +export function levenshtein(a, b) { + if (a.length === 0) + return b.length; + if (b.length === 0) + return a.length; + const matrix = []; + let i; + for (i = 0; i <= b.length; i++) { + matrix[i] = [i]; + } + let j; + for (j = 0; j <= a.length; j++) { + matrix[0][j] = j; + } + for (i = 1; i <= b.length; i++) { + for (j = 1; j <= a.length; j++) { + if (b.charAt(i - 1) === a.charAt(j - 1)) { + matrix[i][j] = matrix[i - 1][j - 1]; + } + else { + matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1)); + } + } + } + return matrix[b.length][a.length]; +} diff --git a/yargs/build/lib/utils/obj-filter.js b/yargs/build/lib/utils/obj-filter.js new file mode 100644 index 0000000000..cd68ad2983 --- /dev/null +++ b/yargs/build/lib/utils/obj-filter.js @@ -0,0 +1,10 @@ +import { objectKeys } from '../typings/common-types.js'; +export function objFilter(original = {}, filter = () => true) { + const obj = {}; + objectKeys(original).forEach(key => { + if (filter(key, original[key])) { + obj[key] = original[key]; + } + }); + return obj; +} diff --git a/yargs/build/lib/utils/process-argv.js b/yargs/build/lib/utils/process-argv.js new file mode 100644 index 0000000000..74dc9e4c45 --- /dev/null +++ b/yargs/build/lib/utils/process-argv.js @@ -0,0 +1,17 @@ +function getProcessArgvBinIndex() { + if (isBundledElectronApp()) + return 0; + return 1; +} +function isBundledElectronApp() { + return isElectronApp() && !process.defaultApp; +} +function isElectronApp() { + return !!process.versions.electron; +} +export function hideBin(argv) { + return argv.slice(getProcessArgvBinIndex() + 1); +} +export function getProcessArgvBin() { + return process.argv[getProcessArgvBinIndex()]; +} diff --git a/yargs/build/lib/utils/set-blocking.js b/yargs/build/lib/utils/set-blocking.js new file mode 100644 index 0000000000..88fb806df3 --- /dev/null +++ b/yargs/build/lib/utils/set-blocking.js @@ -0,0 +1,12 @@ +export default function setBlocking(blocking) { + if (typeof process === 'undefined') + return; + [process.stdout, process.stderr].forEach(_stream => { + const stream = _stream; + if (stream._handle && + stream.isTTY && + typeof stream._handle.setBlocking === 'function') { + stream._handle.setBlocking(blocking); + } + }); +} diff --git a/yargs/build/lib/utils/which-module.js b/yargs/build/lib/utils/which-module.js new file mode 100644 index 0000000000..5974e22689 --- /dev/null +++ b/yargs/build/lib/utils/which-module.js @@ -0,0 +1,10 @@ +export default function whichModule(exported) { + if (typeof require === 'undefined') + return null; + for (let i = 0, files = Object.keys(require.cache), mod; i < files.length; i++) { + mod = require.cache[files[i]]; + if (mod.exports === exported) + return mod; + } + return null; +} diff --git a/yocto-queue/index.d.ts b/yocto-queue/index.d.ts new file mode 100644 index 0000000000..9541986b44 --- /dev/null +++ b/yocto-queue/index.d.ts @@ -0,0 +1,56 @@ +declare class Queue implements Iterable { + /** + The size of the queue. + */ + readonly size: number; + + /** + Tiny queue data structure. + + The instance is an [`Iterable`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols), which means you can iterate over the queue front to back with a โ€œforโ€ฆofโ€ loop, or use spreading to convert the queue to an array. Don't do this unless you really need to though, since it's slow. + + @example + ``` + import Queue = require('yocto-queue'); + + const queue = new Queue(); + + queue.enqueue('๐Ÿฆ„'); + queue.enqueue('๐ŸŒˆ'); + + console.log(queue.size); + //=> 2 + + console.log(...queue); + //=> '๐Ÿฆ„ ๐ŸŒˆ' + + console.log(queue.dequeue()); + //=> '๐Ÿฆ„' + + console.log(queue.dequeue()); + //=> '๐ŸŒˆ' + ``` + */ + constructor(); + + [Symbol.iterator](): IterableIterator; + + /** + Add a value to the queue. + */ + enqueue(value: ValueType): void; + + /** + Remove the next value in the queue. + + @returns The removed value or `undefined` if the queue is empty. + */ + dequeue(): ValueType | undefined; + + /** + Clear the queue. + */ + clear(): void; +} + +export = Queue; diff --git a/yocto-queue/index.js b/yocto-queue/index.js new file mode 100644 index 0000000000..2f3e6dcd72 --- /dev/null +++ b/yocto-queue/index.js @@ -0,0 +1,68 @@ +class Node { + /// value; + /// next; + + constructor(value) { + this.value = value; + + // TODO: Remove this when targeting Node.js 12. + this.next = undefined; + } +} + +class Queue { + // TODO: Use private class fields when targeting Node.js 12. + // #_head; + // #_tail; + // #_size; + + constructor() { + this.clear(); + } + + enqueue(value) { + const node = new Node(value); + + if (this._head) { + this._tail.next = node; + this._tail = node; + } else { + this._head = node; + this._tail = node; + } + + this._size++; + } + + dequeue() { + const current = this._head; + if (!current) { + return; + } + + this._head = this._head.next; + this._size--; + return current.value; + } + + clear() { + this._head = undefined; + this._tail = undefined; + this._size = 0; + } + + get size() { + return this._size; + } + + * [Symbol.iterator]() { + let current = this._head; + + while (current) { + yield current.value; + current = current.next; + } + } +} + +module.exports = Queue; diff --git a/yocto-queue/license b/yocto-queue/license new file mode 100644 index 0000000000..fa7ceba3eb --- /dev/null +++ b/yocto-queue/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/yocto-queue/package.json b/yocto-queue/package.json new file mode 100644 index 0000000000..71a91017b6 --- /dev/null +++ b/yocto-queue/package.json @@ -0,0 +1,43 @@ +{ + "name": "yocto-queue", + "version": "0.1.0", + "description": "Tiny queue data structure", + "license": "MIT", + "repository": "sindresorhus/yocto-queue", + "funding": "https://github.com/sponsors/sindresorhus", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "https://sindresorhus.com" + }, + "engines": { + "node": ">=10" + }, + "scripts": { + "test": "xo && ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "queue", + "data", + "structure", + "algorithm", + "queues", + "queuing", + "list", + "array", + "linkedlist", + "fifo", + "enqueue", + "dequeue", + "data-structure" + ], + "devDependencies": { + "ava": "^2.4.0", + "tsd": "^0.13.1", + "xo": "^0.35.0" + } +} diff --git a/yocto-queue/readme.md b/yocto-queue/readme.md new file mode 100644 index 0000000000..c72fefc486 --- /dev/null +++ b/yocto-queue/readme.md @@ -0,0 +1,64 @@ +# yocto-queue [![](https://badgen.net/bundlephobia/minzip/yocto-queue)](https://bundlephobia.com/result?p=yocto-queue) + +> Tiny queue data structure + +You should use this package instead of an array if you do a lot of `Array#push()` and `Array#shift()` on large arrays, since `Array#shift()` has [linear time complexity](https://medium.com/@ariel.salem1989/an-easy-to-use-guide-to-big-o-time-complexity-5dcf4be8a444#:~:text=O(N)%E2%80%94Linear%20Time) *O(n)* while `Queue#dequeue()` has [constant time complexity](https://medium.com/@ariel.salem1989/an-easy-to-use-guide-to-big-o-time-complexity-5dcf4be8a444#:~:text=O(1)%20%E2%80%94%20Constant%20Time) *O(1)*. That makes a huge difference for large arrays. + +> A [queue](https://en.wikipedia.org/wiki/Queue_(abstract_data_type)) is an ordered list of elements where an element is inserted at the end of the queue and is removed from the front of the queue. A queue works based on the first-in, first-out ([FIFO](https://en.wikipedia.org/wiki/FIFO_(computing_and_electronics))) principle. + +## Install + +``` +$ npm install yocto-queue +``` + +## Usage + +```js +const Queue = require('yocto-queue'); + +const queue = new Queue(); + +queue.enqueue('๐Ÿฆ„'); +queue.enqueue('๐ŸŒˆ'); + +console.log(queue.size); +//=> 2 + +console.log(...queue); +//=> '๐Ÿฆ„ ๐ŸŒˆ' + +console.log(queue.dequeue()); +//=> '๐Ÿฆ„' + +console.log(queue.dequeue()); +//=> '๐ŸŒˆ' +``` + +## API + +### `queue = new Queue()` + +The instance is an [`Iterable`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols), which means you can iterate over the queue front to back with a โ€œforโ€ฆofโ€ loop, or use spreading to convert the queue to an array. Don't do this unless you really need to though, since it's slow. + +#### `.enqueue(value)` + +Add a value to the queue. + +#### `.dequeue()` + +Remove the next value in the queue. + +Returns the removed value or `undefined` if the queue is empty. + +#### `.clear()` + +Clear the queue. + +#### `.size` + +The size of the queue. + +## Related + +- [quick-lru](https://github.com/sindresorhus/quick-lru) - Simple โ€œLeast Recently Usedโ€ (LRU) cache
+

dfuuijh

+ +
+ + +
+
+ Grade Overview for Pete Griffin +
+
+
+
+ CGPA: 3.5 +
+
+
+

+ Go to Grade report for more details +

+
+ +
+
    + {notifications.map((notification) => ( +
  • +
    {notification.message}
    +
    {notification.timestamp}
    +
  • + ))} +
+
+ +
+ +