diff --git a/.commitlintrc.json b/.commitlintrc.json
new file mode 100644
index 000000000..7293d5af9
--- /dev/null
+++ b/.commitlintrc.json
@@ -0,0 +1,28 @@
+{
+ "extends": ["@commitlint/config-conventional"],
+ "rules": {
+ "subject-case": [
+ 2,
+ "always",
+ ["sentence-case", "start-case", "pascal-case", "upper-case", "lower-case"]
+ ],
+ "type-enum": [
+ 2,
+ "always",
+ [
+ "build",
+ "chore",
+ "ci",
+ "docs",
+ "feat",
+ "fix",
+ "perf",
+ "refactor",
+ "revert",
+ "style",
+ "test",
+ "sample"
+ ]
+ ]
+ }
+}
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 000000000..4ac4973fb
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,11 @@
+# EditorConfig is awesome: https://EditorConfig.org
+
+# top-most EditorConfig file
+root = true
+
+# Unix-style newlines with a newline ending every file
+[*]
+end_of_line = lf
+insert_final_newline = true
+indent_style = space
+indent_size = 2
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 000000000..df95e3b5c
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,12 @@
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# node-waf configuration
+.lock-wscript
+
+# Dependency directory
+# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
+node_modules
+
+# OSX
+.DS_Store
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 000000000..3408a06eb
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,95 @@
+module.exports = {
+ root: true,
+ extends: [
+ 'airbnb-typescript',
+ 'plugin:import/typescript',
+ 'plugin:@typescript-eslint/recommended',
+ 'prettier',
+ 'plugin:prettier/recommended',
+ 'plugin:promise/recommended',
+ ],
+ ignorePatterns: ['.eslintrc.js', '*.json', 'jest.config.js'],
+ plugins: ['import', 'promise', '@typescript-eslint', 'prettier'],
+ parser: '@typescript-eslint/parser',
+ settings: {
+ 'import/parsers': {
+ '@typescript-eslint/parser': ['.ts', '.tsx'],
+ },
+ },
+ parserOptions: {
+ project: './tsconfig.json',
+ ecmaVersion: 2020,
+ sourceType: 'module',
+ },
+ rules: {
+ '@typescript-eslint/space-before-blocks': 'off',
+ '@typescript-eslint/lines-between-class-members': 'off',
+ 'react/jsx-wrap-multilines': 'off',
+ 'react/jsx-filename-extension': 'off',
+ 'multiline-comment-style': ['error', 'starred-block'],
+ 'promise/catch-or-return': 'off',
+ '@typescript-eslint/explicit-module-boundary-types': 'off',
+ '@typescript-eslint/no-unused-expressions': 'off',
+ '@typescript-eslint/explicit-function-return-type': 'off',
+ 'react/jsx-closing-bracket-location': 'off',
+ '@typescript-eslint/no-var-requires': 'off',
+ 'no-unused-vars': 'error',
+ '@typescript-eslint/no-unused-vars': ['error'],
+ 'mocha/no-mocha-arrows': 'off',
+ '@typescript-eslint/default-param-last': 'off',
+ 'no-return-await': 'off',
+ 'no-await-in-loop': 'off',
+ 'no-continue': 'off',
+ 'no-console': 'warn',
+ 'no-magic-numbers': 'error',
+ 'no-prototype-builtins': 'off',
+ 'import/no-cycle': 'off',
+ 'class-methods-use-this': 'off',
+ '@typescript-eslint/no-use-before-define': 'off',
+ '@typescript-eslint/no-explicit-any': 1,
+ 'no-restricted-syntax': 'off',
+ '@typescript-eslint/interface-name-prefix': 'off',
+ 'no-underscore-dangle': 'off',
+ 'import/prefer-default-export': 'off',
+ // A temporary hack related to IDE not resolving correct package.json
+ 'import/no-extraneous-dependencies': 'off',
+ 'react/jsx-one-expression-per-line': 'off',
+ 'react/jsx-no-bind': 'off',
+ 'lines-between-class-members': 'off',
+ 'max-classes-per-file': 'off',
+ 'react/react-in-jsx-scope': 'off',
+ 'max-len': ['warn', { code: 140 }],
+ '@typescript-eslint/return-await': 'off',
+ 'no-restricted-imports': [
+ 'error',
+ {
+ patterns: ['@impler/shared/*', '@impler/dal/*', '!import2/good'],
+ },
+ ],
+ 'padding-line-between-statements': [
+ 'error',
+ { blankLine: 'any', prev: ['const', 'let', 'var'], next: ['if', 'for'] },
+ { blankLine: 'any', prev: ['const', 'let', 'var'], next: ['const', 'let', 'var'] },
+ { blankLine: 'always', prev: '*', next: 'return' },
+ ],
+ 'id-length': ['error', { min: 2, exceptions: ['i', 'e', 'a', 'b', '_', 't'], properties: 'never' }],
+ '@typescript-eslint/naming-convention': [
+ 'error',
+
+ { selector: 'enumMember', format: ['UPPER_CASE'] },
+ { selector: 'enum', format: ['PascalCase'], suffix: ['Enum'] },
+ { selector: 'class', format: ['PascalCase'] },
+ { selector: 'variableLike', format: ['camelCase', 'UPPER_CASE', 'PascalCase'], leadingUnderscore: 'allow' },
+ {
+ selector: 'interface',
+ format: ['PascalCase'],
+ prefix: ['I'],
+ },
+ {
+ selector: ['function'],
+ format: ['camelCase'],
+ leadingUnderscore: 'allow',
+ },
+ ],
+ },
+};
diff --git a/.github/workflows/test-build.yml b/.github/workflows/test-build.yml
new file mode 100644
index 000000000..364671649
--- /dev/null
+++ b/.github/workflows/test-build.yml
@@ -0,0 +1,50 @@
+# This is a basic workflow to help you get started with Actions
+
+name: Test Build is happening
+
+# Controls when the action will run. Triggers the workflow on push or pull request
+# events but only for the master branch
+on:
+ push:
+ branches: [ "main" ]
+ pull_request:
+ # The branches below must be a subset of the branches above
+ branches: [ "main", "next", "development" ]
+ schedule:
+ - cron: '25 2 * * 4'
+
+# A workflow run is made up of one or more jobs that can run sequentially or in parallel
+jobs:
+ # This workflow contains a single job called "build"
+ build:
+ environment: Development
+ if: "!contains(github.event.head_commit.message, 'build skip')"
+ # The type of runner that the job will run on
+ runs-on: ubuntu-latest
+ timeout-minutes: 80
+
+ # Steps represent a sequence of tasks that will be executed as part of the job
+ steps:
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - uses: actions/checkout@v2
+ - name: Setup kernel for react native, increase watchers
+ run: echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
+ - uses: actions/setup-node@v2
+ with:
+ node-version: '16.15.1'
+
+ - name: Cache pnpm modules
+ uses: actions/cache@v2
+ with:
+ path: ~/.pnpm-store
+ key: ${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}
+ restore-keys: |
+ ${{ runner.os }}-
+
+ - name: Nestjs
+ run: npm i -g @nestjs/cli
+
+ - uses: pnpm/action-setup@v2.0.1
+ with:
+ version: 7.9.4
+ run_install: true
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..0b52eccd8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+node_modules
+dist
+build
+
+.env
\ No newline at end of file
diff --git a/.husky/commit-msg b/.husky/commit-msg
new file mode 100755
index 000000000..42a70e424
--- /dev/null
+++ b/.husky/commit-msg
@@ -0,0 +1,4 @@
+#!/usr/bin/env sh
+. "$(dirname -- "$0")/_/husky.sh"
+
+npx --no -- commitlint --edit "$1"
\ No newline at end of file
diff --git a/.husky/pre-commit b/.husky/pre-commit
new file mode 100755
index 000000000..a5a29d9f7
--- /dev/null
+++ b/.husky/pre-commit
@@ -0,0 +1,4 @@
+#!/usr/bin/env sh
+. "$(dirname -- "$0")/_/husky.sh"
+
+pnpm lint-staged
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 000000000..4c2f52b3b
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1,2 @@
+auto-install-peers=true
+strict-peer-dependencies=false
diff --git a/.nvmrc b/.nvmrc
new file mode 100644
index 000000000..d9289897d
--- /dev/null
+++ b/.nvmrc
@@ -0,0 +1 @@
+16.15.1
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 000000000..0e80a3c86
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,2 @@
+# package.json is formatted by package managers, so we ignore it here
+package.json
\ No newline at end of file
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 000000000..6718863f9
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,11 @@
+{
+ "printWidth": 120,
+ "trailingComma": "es5",
+ "singleQuote": true,
+ "semi": true,
+ "tabWidth": 2,
+ "quoteProps": "as-needed",
+ "jsxSingleQuote": false,
+ "arrowParens": "always",
+ "endOfLine": "lf"
+}
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 000000000..d7f3ce132
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,11 @@
+{
+ "typescript.tsdk": "node_modules/typescript/lib",
+ "npm.packageManager": "pnpm",
+ "editor.defaultFormatter": "dbaeumer.vscode-eslint",
+ "editor.formatOnSave": true,
+ "eslint.format.enable": true,
+ "editor.codeActionsOnSave": {
+ "source.fixAll": true
+ },
+}
+
\ No newline at end of file
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 000000000..0b42ea814
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,128 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in our
+community a harassment-free experience for everyone, regardless of age, body
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, religion, or sexual identity
+and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming,
+diverse, inclusive, and healthy community.
+
+## Our Standards
+
+Examples of behavior that contributes to a positive environment for our
+community include:
+
+* Demonstrating empathy and kindness toward other people
+* Being respectful of differing opinions, viewpoints, and experiences
+* Giving and gracefully accepting constructive feedback
+* Accepting responsibility and apologizing to those affected by our mistakes,
+ and learning from the experience
+* Focusing on what is best not just for us as individuals, but for the
+ overall community
+
+Examples of unacceptable behavior include:
+
+* The use of sexualized language or imagery, and sexual attention or
+ advances of any kind
+* Trolling, insulting or derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or email
+ address, without their explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Enforcement Responsibilities
+
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
+
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for moderation
+decisions when appropriate.
+
+## Scope
+
+This Code of Conduct applies within all community spaces, and also applies when
+an individual is officially representing the community in public spaces.
+Examples of representing our community include using an official e-mail address,
+posting via an official social media account, or acting as an appointed
+representative at an online or offline event.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported to the community leaders responsible for enforcement at
+hello@knovator.com.
+All complaints will be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining
+the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Correction
+
+**Community Impact**: Use of inappropriate language or other behavior deemed
+unprofessional or unwelcome in the community.
+
+**Consequence**: A private, written warning from community leaders, providing
+clarity around the nature of the violation and an explanation of why the
+behavior was inappropriate. A public apology may be requested.
+
+### 2. Warning
+
+**Community Impact**: A violation through a single incident or series
+of actions.
+
+**Consequence**: A warning with consequences for continued behavior. No
+interaction with the people involved, including unsolicited interaction with
+those enforcing the Code of Conduct, for a specified period of time. This
+includes avoiding interactions in community spaces as well as external channels
+like social media. Violating these terms may lead to a temporary or
+permanent ban.
+
+### 3. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including
+sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public
+communication with the community for a specified period of time. No public or
+private interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, is allowed during this period.
+Violating these terms may lead to a permanent ban.
+
+### 4. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior, harassment of an
+individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within
+the community.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage],
+version 2.0, available at
+https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
+
+Community Impact Guidelines were inspired by [Mozilla's code of conduct
+enforcement ladder](https://github.com/mozilla/diversity).
+
+[homepage]: https://www.contributor-covenant.org
+
+For answers to common questions about this code of conduct, see the FAQ at
+https://www.contributor-covenant.org/faq. Translations are available at
+https://www.contributor-covenant.org/translations.
diff --git a/README.md b/README.md
new file mode 100644
index 000000000..f4eda6504
--- /dev/null
+++ b/README.md
@@ -0,0 +1,172 @@
+
+
+[![Contributors][contributors-shield]][contributors-url]
+[![Forks][forks-shield]][forks-url]
+[![Stargazers][stars-shield]][stars-url]
+[![Issues][issues-shield]][issues-url]
+[![MIT License][license-shield]][license-url]
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+ About The Project
+
+
+ Setup
+ Usage
+ Roadmap
+ Contributing
+ License
+ Contact
+
+
+
+
+
+
+## About The Project
+
+All projects need to give some kind of data import facility, so that their users can import data in application through files like `.csv`, `.xls`, `.xlsx`, etc.
+
+At first it looks like just importing file and inserting in database, but as the app grows facilities like validating data, data mapping, becomes must. `impler` provides infrastructure to applications, so that they don't have to write code for data import.
+
+> impler.io is under development.
+
+(back to top )
+
+### Built With
+
+* [Nestjs](https://nestjs.com/)
+* [Typescript](https://www.typescriptlang.org/)
+* [Nx](https://nx.dev/)
+* [Pnpm](https://pnpm.io/)
+
+(back to top )
+
+## Setup
+To set up `impler.io` locally, you need the following things installed in your computer.
+1. `pnpm`
+2. `localstack`
+3. `mongodb`
+
+Follow these steps to setup the project locally,
+1. Clone the repo, `git clone https://github.com/knovator/impler.io`.
+2. Install the dependencies, `pnpm install`.
+3. Copy `.env.development` file from `apps/api/src` to `apps/api/src/.env` and do changes to variables if needed.
+4. Start the application, `pnpm start:dev`.
+5. Start interacting with API by visiting `http://localhost:3000/api`.
+
+
+## Usage
+
+`impler` need to be communicated through **REST API**, you can easily make call through **Swagger UI** provided at `http://localhost:3000/api`,
+1. You create `project`.
+2. You add `template` to `project`, Template refers to set of data you want to import i.e. users data.
+3. Add `columns` to `template`, Column refers to individual fields template can have, for example users Template can have firstname, lastname, address, email, phonenumber, etc.
+4. Upload `file` to `template`, After columns being set well, we're ready to import `.csv`, `.xls`, `.xlsx` file to aplication.
+ * `Upload` response returns data with `headings` specified in uploaded file.
+ * Keep note of uploaded file `id`, it will be used later.
+ * Uploaded file headings will be mapped automatically with `columns` provided for `template`.
+5. Check `mapping` done for uploaded file, and finalize mappings.
+6. Get `review` data for uploaded file and confirm reivew with option whether you want ot excempt invalid data or want to keep them.
+
+(back to top )
+
+
+## Roadmap
+
+- [x] API
+ - [x] Project
+ - [x] Template
+ - [x] Column
+ - [x] Upload
+ - [x] Mapping
+ - [x] Review
+ - [x] Processing data
+- [x] Web
+ - [x] Upload Phase
+ - [x] Mapping Phase
+ - [x] Review Phase
+ - [x] Confirm Phase
+- [] Infra
+ - [] Docker
+
+(back to top )
+
+
+
+## Contributing
+
+Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
+
+If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
+Don't forget to give the project a star! Thanks again!
+
+1. Fork the Project
+2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
+3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
+4. Push to the Branch (`git push origin feature/AmazingFeature`)
+5. Open a Pull Request
+
+(back to top )
+
+
+
+
+## License
+
+Distributed under the MIT License. See `LICENSE.txt` for more information.
+
+(back to top )
+
+
+
+
+## Contact
+
+Knovator - [@knovator](https://twitter.com/knovator)
+
+Project Link: [https://github.com/knovator/impler.io](https://github.com/knovator/impler.io)
+
+(back to top )
+
+
+
+
+[contributors-shield]: https://img.shields.io/github/contributors/knovator/impler.io.svg?style=for-the-badge
+[contributors-url]: https://github.com/knovator/impler.io/graphs/contributors
+[forks-shield]: https://img.shields.io/github/forks/knovator/impler.io.svg?style=for-the-badge
+[forks-url]: https://github.com/knovator/impler.io/network/members
+[stars-shield]: https://img.shields.io/github/stars/knovator/impler.io.svg?style=for-the-badge
+[stars-url]: https://github.com/knovator/impler.io/stargazers
+[issues-shield]: https://img.shields.io/github/issues/knovator/impler.io.svg?style=for-the-badge
+[issues-url]: https://github.com/knovator/impler.io/issues
+[license-shield]: https://img.shields.io/github/license/knovator/impler.io.svg?style=for-the-badge
+[license-url]: https://github.com/knovator/impler.io/blob/master/LICENSE.txt
diff --git a/apps/api/.eslintrc.js b/apps/api/.eslintrc.js
new file mode 100644
index 000000000..2ebdf17bd
--- /dev/null
+++ b/apps/api/.eslintrc.js
@@ -0,0 +1,4 @@
+module.exports = {
+ extends: ['../../.eslintrc.js'],
+ ignorePatterns: '*.spec.ts',
+};
diff --git a/apps/api/nest-cli.json b/apps/api/nest-cli.json
new file mode 100644
index 000000000..e4e078182
--- /dev/null
+++ b/apps/api/nest-cli.json
@@ -0,0 +1,49 @@
+{
+ "collection": "@nestjs/schematics",
+ "sourceRoot": "src",
+ "compilerOptions": {
+ "assets": [
+ {
+ "include": ".env",
+ "outDir": "dist/src"
+ },
+ {
+ "include": ".env.development",
+ "outDir": "dist/src"
+ },
+ {
+ "include": ".env.test",
+ "outDir": "dist/src"
+ },
+ {
+ "include": ".env.production",
+ "outDir": "dist/src"
+ },
+ {
+ "include": "app/content-templates/usecases/compile-template/templates/basic.handlebars",
+ "outDir": "dist/src"
+ }
+ ],
+ "plugins": [
+ {
+ "name": "@nestjs/swagger",
+ "options": {
+ "classValidatorShim": true,
+ "introspectComments": true
+ }
+ }
+ ],
+ "webpack": true
+ },
+ "projects": {
+ "dal": {
+ "type": "library",
+ "root": "../../../libs/dal",
+ "entryFile": "index",
+ "sourceRoot": "../../../libs/dal/src",
+ "compilerOptions": {
+ "tsConfigPath": "../../../libs/dal/tsconfig.build.json"
+ }
+ }
+ }
+}
diff --git a/apps/api/nodemon.json b/apps/api/nodemon.json
new file mode 100644
index 000000000..4e2bc9177
--- /dev/null
+++ b/apps/api/nodemon.json
@@ -0,0 +1,8 @@
+{
+ "watch": ["src", "../core/dist"],
+ "ext": "ts",
+ "delay": 2,
+ "ignoreRoot": [".git"],
+ "ignore": ["src/**/*.spec.ts"],
+ "exec": "ts-node -r tsconfig-paths/register src/main.ts"
+}
diff --git a/apps/api/package.json b/apps/api/package.json
new file mode 100644
index 000000000..861121332
--- /dev/null
+++ b/apps/api/package.json
@@ -0,0 +1,62 @@
+{
+ "name": "@impler/api",
+ "version": "0.1.0",
+ "author": "knovator",
+ "license": "MIT",
+ "private": true,
+ "scripts": {
+ "prebuild": "rimraf dist",
+ "preinstall": "pnpm build",
+ "build": "nest build",
+ "format": "prettier --write \"src/**/*.ts\"",
+ "start": "pnpm start:dev",
+ "start:dev": "cross-env TZ=UTC nest start --watch",
+ "start:test": "cross-env NODE_ENV=test PORT=1336 TZ=UTC nest start --watch",
+ "start:debug": "TZ=UTC nodemon --config nodemon-debug.json",
+ "start:prod": "TZ=UTC node dist/main.js",
+ "lint": "eslint src",
+ "lint:fix": "pnpm lint -- --fix",
+ "test": "cross-env TZ=UTC NODE_ENV=test E2E_RUNNER=true mocha --timeout 10000 --require ts-node/register --exit src/**/**/*.spec.ts"
+ },
+ "dependencies": {
+ "@aws-sdk/client-s3": "^3.185.0",
+ "@impler/dal": "^0.1.0",
+ "@impler/shared": "^0.1.0",
+ "@nestjs/common": "^9.1.2",
+ "@nestjs/core": "^9.1.2",
+ "@nestjs/platform-express": "^9.1.2",
+ "@nestjs/swagger": "^6.1.2",
+ "ajv": "^8.11.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.1.0",
+ "body-parser": "^1.20.0",
+ "class-transformer": "^0.5.1",
+ "class-validator": "^0.13.2",
+ "compression": "^1.7.4",
+ "dotenv": "^16.0.2",
+ "envalid": "^7.3.1",
+ "fast-csv": "^4.3.6",
+ "rimraf": "^3.0.2",
+ "xlsx": "^0.18.5"
+ },
+ "devDependencies": {
+ "@nestjs/cli": "^9.1.5",
+ "@types/chai": "^4.3.4",
+ "@types/express": "^4.17.14",
+ "@types/mocha": "^10.0.0",
+ "@types/multer": "^1.4.7",
+ "@types/node": "^18.7.18",
+ "chai": "^4.3.7",
+ "mocha": "^10.1.0",
+ "nodemon": "^2.0.20",
+ "ts-loader": "^9.4.1",
+ "ts-node": "^10.9.1",
+ "tsconfig-paths": "^4.1.0",
+ "typescript": "^4.8.3"
+ },
+ "lint-staged": {
+ "*.{js,jsx,ts,tsx}": [
+ "eslint --fix"
+ ]
+ }
+}
diff --git a/apps/api/src/.env.development b/apps/api/src/.env.development
new file mode 100644
index 000000000..76cf09286
--- /dev/null
+++ b/apps/api/src/.env.development
@@ -0,0 +1,15 @@
+NODE_ENV=local
+PORT=3000
+FRONT_BASE_URL=http://localhost:4200
+RABBITMQ_CONN_URL=amqp://guest:guest@localhost:5672
+
+# Database
+MONGO_URL=mongodb://localhost:27017/impler-db
+
+# Storage
+S3_LOCAL_STACK=http://localhost:4566
+S3_REGION=us-east-1
+S3_BUCKET_NAME=impler
+
+# Security
+ACCESS-KEY=
diff --git a/apps/api/src/.env.production b/apps/api/src/.env.production
new file mode 100644
index 000000000..76cf09286
--- /dev/null
+++ b/apps/api/src/.env.production
@@ -0,0 +1,15 @@
+NODE_ENV=local
+PORT=3000
+FRONT_BASE_URL=http://localhost:4200
+RABBITMQ_CONN_URL=amqp://guest:guest@localhost:5672
+
+# Database
+MONGO_URL=mongodb://localhost:27017/impler-db
+
+# Storage
+S3_LOCAL_STACK=http://localhost:4566
+S3_REGION=us-east-1
+S3_BUCKET_NAME=impler
+
+# Security
+ACCESS-KEY=
diff --git a/apps/api/src/.env.test b/apps/api/src/.env.test
new file mode 100644
index 000000000..0e9640aef
--- /dev/null
+++ b/apps/api/src/.env.test
@@ -0,0 +1,5 @@
+NODE_ENV=local
+PORT=3000
+FRONT_BASE_URL=http://localhost:4200
+
+MONGO_URL=mongodb://localhost:27017/impler-db
\ No newline at end of file
diff --git a/apps/api/src/.example.env b/apps/api/src/.example.env
new file mode 100644
index 000000000..76cf09286
--- /dev/null
+++ b/apps/api/src/.example.env
@@ -0,0 +1,15 @@
+NODE_ENV=local
+PORT=3000
+FRONT_BASE_URL=http://localhost:4200
+RABBITMQ_CONN_URL=amqp://guest:guest@localhost:5672
+
+# Database
+MONGO_URL=mongodb://localhost:27017/impler-db
+
+# Storage
+S3_LOCAL_STACK=http://localhost:4566
+S3_REGION=us-east-1
+S3_BUCKET_NAME=impler
+
+# Security
+ACCESS-KEY=
diff --git a/apps/api/src/app.module.ts b/apps/api/src/app.module.ts
new file mode 100644
index 000000000..3452e84e9
--- /dev/null
+++ b/apps/api/src/app.module.ts
@@ -0,0 +1,31 @@
+import { DynamicModule, Module } from '@nestjs/common';
+import { Type } from '@nestjs/common/interfaces/type.interface';
+import { ForwardReference } from '@nestjs/common/interfaces/modules/forward-reference.interface';
+import { SharedModule } from './app/shared/shared.module';
+import { ProjectModule } from './app/project/project.module';
+import { TemplateModule } from './app/template/template.module';
+import { ColumnModule } from './app/column/column.module';
+import { UploadModule } from './app/upload/upload.module';
+import { MappingModule } from './app/mapping/mapping.module';
+import { ReviewModule } from './app/review/review.module';
+import { CommonModule } from './app/common/common.module';
+
+const modules: Array | ForwardReference> = [
+ ProjectModule,
+ SharedModule,
+ TemplateModule,
+ ColumnModule,
+ UploadModule,
+ MappingModule,
+ ReviewModule,
+ CommonModule,
+];
+
+const providers = [];
+
+@Module({
+ imports: modules,
+ controllers: [],
+ providers,
+})
+export class AppModule {}
diff --git a/apps/api/src/app/column/column.controller.ts b/apps/api/src/app/column/column.controller.ts
new file mode 100644
index 000000000..6f563f0c1
--- /dev/null
+++ b/apps/api/src/app/column/column.controller.ts
@@ -0,0 +1,55 @@
+import { Controller, Put, Param, Body, Get, ParseArrayPipe, UseGuards } from '@nestjs/common';
+import { ApiTags, ApiBody, ApiOperation, ApiSecurity } from '@nestjs/swagger';
+import { ValidateMongoId } from '../shared/validations/valid-mongo-id.validation';
+import { UpdateColumnRequestDto } from './dtos/update-column-request.dto';
+import { UpdateColumnCommand } from './usecases/update-columns/update-columns.command';
+import { UpdateColumns } from './usecases/update-columns/update-columns.usecase';
+import { ColumnResponseDto } from './dtos/column-response.dto';
+import { GetColumns } from './usecases/get-columns/get-columns.usecase';
+import { APIKeyGuard } from '../shared/framework/auth.gaurd';
+import { ACCESS_KEY_NAME } from '@impler/shared';
+
+@Controller('/column')
+@ApiTags('Column')
+@ApiSecurity(ACCESS_KEY_NAME)
+@UseGuards(APIKeyGuard)
+export class ColumnController {
+ constructor(private updateColumns: UpdateColumns, private getColumns: GetColumns) {}
+
+ @Put(':templateId')
+ @ApiOperation({
+ summary: 'Update columns for Template',
+ })
+ @ApiBody({ type: [UpdateColumnRequestDto] })
+ async updateTemplateColumns(
+ @Param('templateId', ValidateMongoId) _templateId: string,
+ @Body(new ParseArrayPipe({ items: UpdateColumnRequestDto })) body: UpdateColumnRequestDto[]
+ ): Promise {
+ return this.updateColumns.execute(
+ body.map((columnData) =>
+ UpdateColumnCommand.create({
+ key: columnData.key,
+ alternateKeys: columnData.alternateKeys,
+ isRequired: columnData.isRequired,
+ isUnique: columnData.isUnique,
+ name: columnData.name,
+ regex: columnData.regex,
+ regexDescription: columnData.regexDescription,
+ selectValues: columnData.selectValues,
+ sequence: columnData.sequence,
+ _templateId,
+ type: columnData.type,
+ })
+ ),
+ _templateId
+ );
+ }
+
+ @Get(':templateId')
+ @ApiOperation({
+ summary: 'Get template columns',
+ })
+ async getTemplateColumns(@Param('templateId') _templateId: string): Promise {
+ return this.getColumns.execute(_templateId);
+ }
+}
diff --git a/apps/api/src/app/column/column.module.ts b/apps/api/src/app/column/column.module.ts
new file mode 100644
index 000000000..12faa3a6f
--- /dev/null
+++ b/apps/api/src/app/column/column.module.ts
@@ -0,0 +1,11 @@
+import { Module } from '@nestjs/common';
+import { USE_CASES } from './usecases';
+import { ColumnController } from './column.controller';
+import { SharedModule } from '../shared/shared.module';
+
+@Module({
+ imports: [SharedModule],
+ providers: [...USE_CASES],
+ controllers: [ColumnController],
+})
+export class ColumnModule {}
diff --git a/apps/api/src/app/column/dtos/column-response.dto.ts b/apps/api/src/app/column/dtos/column-response.dto.ts
new file mode 100644
index 000000000..eac619751
--- /dev/null
+++ b/apps/api/src/app/column/dtos/column-response.dto.ts
@@ -0,0 +1,57 @@
+import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
+import { ColumnTypesEnum } from '@impler/shared';
+
+export class ColumnResponseDto {
+ @ApiProperty({
+ description: 'Name of the column',
+ type: 'string',
+ })
+ name: string;
+
+ @ApiProperty({
+ description: 'Key of the column',
+ })
+ key: string;
+
+ @ApiProperty({
+ description: 'Alternative possible keys of the column',
+ type: Array,
+ })
+ alternateKeys: string[];
+
+ @ApiPropertyOptional({
+ description: 'While true, it Indicates column value should exists in data',
+ })
+ isRequired = false;
+
+ @ApiPropertyOptional({
+ description: 'While true, it Indicates column value should be unique in data',
+ })
+ isUnique = false;
+
+ @ApiProperty({
+ description: 'Specifies the type of column',
+ enum: ColumnTypesEnum,
+ })
+ type: string;
+
+ @ApiPropertyOptional({
+ description: 'Regex if type is Regex',
+ })
+ regex: string;
+
+ @ApiPropertyOptional({
+ description: 'Description of Regex',
+ })
+ regexDescription: string;
+
+ @ApiPropertyOptional({
+ description: 'List of possible values for column if type is Select',
+ })
+ selectValues: string[];
+
+ @ApiProperty({
+ description: 'Sequence of column',
+ })
+ sequence: number;
+}
diff --git a/apps/api/src/app/column/dtos/update-column-request.dto.ts b/apps/api/src/app/column/dtos/update-column-request.dto.ts
new file mode 100644
index 000000000..076354b1e
--- /dev/null
+++ b/apps/api/src/app/column/dtos/update-column-request.dto.ts
@@ -0,0 +1,99 @@
+import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
+import {
+ ArrayMinSize,
+ IsArray,
+ IsBoolean,
+ IsDefined,
+ IsOptional,
+ IsString,
+ IsEnum,
+ IsNumber,
+ ValidateIf,
+ IsNotEmpty,
+ Validate,
+} from 'class-validator';
+import { Type } from 'class-transformer';
+import { ColumnTypesEnum } from '@impler/shared';
+import { IsValidRegex } from '../../shared/framework/is-valid-regex.validator';
+
+export class UpdateColumnRequestDto {
+ @ApiProperty({
+ description: 'Name of the column',
+ type: 'string',
+ })
+ @IsString()
+ @IsDefined()
+ name: string;
+
+ @ApiProperty({
+ description: 'Key of the column',
+ })
+ @IsString()
+ @IsDefined()
+ key: string;
+
+ @ApiProperty({
+ description: 'Alternative possible keys of the column',
+ type: Array,
+ })
+ @IsArray()
+ @IsOptional()
+ @Type(() => Array)
+ alternateKeys: string[];
+
+ @ApiPropertyOptional({
+ description: 'While true, it Indicates column value should exists in data',
+ })
+ @IsBoolean()
+ @IsOptional()
+ isRequired = false;
+
+ @ApiPropertyOptional({
+ description: 'While true, it Indicates column value should be unique in data',
+ })
+ @IsBoolean()
+ @IsOptional()
+ isUnique = false;
+
+ @ApiProperty({
+ description: 'Specifies the type of column',
+ enum: ColumnTypesEnum,
+ })
+ @IsEnum(ColumnTypesEnum, {
+ message: `type must be one of ${Object.values(ColumnTypesEnum).join(', ')}`,
+ })
+ @IsDefined()
+ type: ColumnTypesEnum;
+
+ @ApiPropertyOptional({
+ description: 'Regex if type is Regex',
+ })
+ @ValidateIf((object) => object.type === ColumnTypesEnum.REGEX)
+ @Validate(IsValidRegex)
+ @IsNotEmpty()
+ regex: string;
+
+ @ApiPropertyOptional({
+ description: 'Description of Regex',
+ })
+ @ValidateIf((object) => object.type === ColumnTypesEnum.REGEX)
+ @IsString()
+ @IsOptional()
+ regexDescription: string;
+
+ @ApiPropertyOptional({
+ description: 'List of possible values for column if type is Select',
+ })
+ @ValidateIf((object) => object.type === ColumnTypesEnum.SELECT)
+ @IsArray()
+ @ArrayMinSize(1)
+ @Type(() => Array)
+ selectValues: string[];
+
+ @ApiProperty({
+ description: 'Sequence of column',
+ })
+ @IsNumber()
+ @IsOptional()
+ sequence: number;
+}
diff --git a/apps/api/src/app/column/usecases/get-columns/get-columns.usecase.ts b/apps/api/src/app/column/usecases/get-columns/get-columns.usecase.ts
new file mode 100644
index 000000000..7c6716a13
--- /dev/null
+++ b/apps/api/src/app/column/usecases/get-columns/get-columns.usecase.ts
@@ -0,0 +1,11 @@
+import { Injectable } from '@nestjs/common';
+import { ColumnRepository } from '@impler/dal';
+
+@Injectable()
+export class GetColumns {
+ constructor(private columnRepository: ColumnRepository) {}
+
+ async execute(_templateId: string) {
+ return this.columnRepository.find({ _templateId });
+ }
+}
diff --git a/apps/api/src/app/column/usecases/index.ts b/apps/api/src/app/column/usecases/index.ts
new file mode 100644
index 000000000..4ec139175
--- /dev/null
+++ b/apps/api/src/app/column/usecases/index.ts
@@ -0,0 +1,8 @@
+import { UpdateColumns } from './update-columns/update-columns.usecase';
+import { GetColumns } from './get-columns/get-columns.usecase';
+
+export const USE_CASES = [
+ UpdateColumns,
+ GetColumns,
+ //
+];
diff --git a/apps/api/src/app/column/usecases/update-columns/update-columns.command.ts b/apps/api/src/app/column/usecases/update-columns/update-columns.command.ts
new file mode 100644
index 000000000..cd0133278
--- /dev/null
+++ b/apps/api/src/app/column/usecases/update-columns/update-columns.command.ts
@@ -0,0 +1,51 @@
+import { IsArray, IsBoolean, IsDefined, IsMongoId, IsNumber, IsOptional, IsString } from 'class-validator';
+import { Type } from 'class-transformer';
+import { ColumnTypesEnum } from '@impler/shared';
+import { BaseCommand } from '../../../shared/commands/base.command';
+
+export class UpdateColumnCommand extends BaseCommand {
+ @IsString()
+ @IsDefined()
+ name: string;
+
+ @IsString()
+ @IsDefined()
+ key: string;
+
+ @IsArray()
+ @IsOptional()
+ @Type(() => Array)
+ alternateKeys: string[];
+
+ @IsBoolean()
+ @IsOptional()
+ isRequired = false;
+
+ @IsBoolean()
+ @IsOptional()
+ isUnique = false;
+
+ @IsDefined()
+ type: ColumnTypesEnum;
+
+ @IsString()
+ @IsOptional()
+ regex: string;
+
+ @IsString()
+ @IsOptional()
+ regexDescription: string;
+
+ @IsArray()
+ @IsOptional()
+ @Type(() => Array)
+ selectValues: string[];
+
+ @IsNumber()
+ @IsOptional()
+ sequence: number;
+
+ @IsDefined()
+ @IsMongoId()
+ _templateId: string;
+}
diff --git a/apps/api/src/app/column/usecases/update-columns/update-columns.usecase.ts b/apps/api/src/app/column/usecases/update-columns/update-columns.usecase.ts
new file mode 100644
index 000000000..79f67d524
--- /dev/null
+++ b/apps/api/src/app/column/usecases/update-columns/update-columns.usecase.ts
@@ -0,0 +1,37 @@
+import { Injectable } from '@nestjs/common';
+import { FileMimeTypesEnum } from '@impler/shared';
+import { ColumnRepository, TemplateRepository } from '@impler/dal';
+import { UpdateColumnCommand } from './update-columns.command';
+import { StorageService } from '../../../shared/storage/storage.service';
+import { FileNameService } from '../../../shared/file/name.service';
+
+@Injectable()
+export class UpdateColumns {
+ constructor(
+ private columnRepository: ColumnRepository,
+ private storageService: StorageService,
+ private fileNameService: FileNameService,
+ private templateRepository: TemplateRepository
+ ) {}
+
+ async execute(command: UpdateColumnCommand[], _templateId: string) {
+ await this.columnRepository.deleteMany({ _templateId });
+ this.saveSampleFile(command, _templateId);
+
+ return this.columnRepository.createMany(command);
+ }
+
+ async saveSampleFile(data: UpdateColumnCommand[], templateId: string) {
+ const csvContent = this.createCSVFileHeadingContent(data);
+ const fileName = this.fileNameService.getSampleFileName(templateId);
+ const sampleFileUrl = this.fileNameService.getSampleFileUrl(templateId);
+ await this.storageService.uploadFile(fileName, csvContent, FileMimeTypesEnum.CSV, true);
+ await this.templateRepository.update({ _id: templateId }, { sampleFileUrl });
+ }
+
+ createCSVFileHeadingContent(data: UpdateColumnCommand[]): string {
+ const headings = data.map((column) => column.key);
+
+ return headings.join(',');
+ }
+}
diff --git a/apps/api/src/app/common/common.controller.ts b/apps/api/src/app/common/common.controller.ts
new file mode 100644
index 000000000..08431566c
--- /dev/null
+++ b/apps/api/src/app/common/common.controller.ts
@@ -0,0 +1,28 @@
+import { Body, Controller, Post, UseGuards } from '@nestjs/common';
+import { ApiTags, ApiOperation, ApiSecurity } from '@nestjs/swagger';
+import { ACCESS_KEY_NAME } from '@impler/shared';
+import { APIKeyGuard } from '../shared/framework/auth.gaurd';
+import { ValidRequestDto } from './dtos/valid.dto';
+import { ValidRequestCommand } from './usecases/valid-request/valid-request.command';
+import { ValidRequest } from './usecases/valid-request/valid-request.usecase';
+
+@Controller('/common')
+@ApiTags('Common')
+@ApiSecurity(ACCESS_KEY_NAME)
+@UseGuards(APIKeyGuard)
+export class CommonController {
+ constructor(private validRequest: ValidRequest) {}
+
+ @Post('/valid')
+ @ApiOperation({
+ summary: 'Check if request is valid (Checks Auth)',
+ })
+ async isRequestValid(@Body() body: ValidRequestDto): Promise {
+ return this.validRequest.execute(
+ ValidRequestCommand.create({
+ projectId: body.projectId,
+ template: body.template,
+ })
+ );
+ }
+}
diff --git a/apps/api/src/app/common/common.module.ts b/apps/api/src/app/common/common.module.ts
new file mode 100644
index 000000000..7f3fe1611
--- /dev/null
+++ b/apps/api/src/app/common/common.module.ts
@@ -0,0 +1,11 @@
+import { Module } from '@nestjs/common';
+import { USE_CASES } from './usecases';
+import { CommonController } from './common.controller';
+import { SharedModule } from '../shared/shared.module';
+
+@Module({
+ imports: [SharedModule],
+ providers: [...USE_CASES],
+ controllers: [CommonController],
+})
+export class CommonModule {}
diff --git a/apps/api/src/app/common/dtos/valid.dto.ts b/apps/api/src/app/common/dtos/valid.dto.ts
new file mode 100644
index 000000000..edc221b5b
--- /dev/null
+++ b/apps/api/src/app/common/dtos/valid.dto.ts
@@ -0,0 +1,18 @@
+import { ApiProperty } from '@nestjs/swagger';
+import { IsDefined, IsOptional, IsString, IsMongoId } from 'class-validator';
+
+export class ValidRequestDto {
+ @ApiProperty({
+ description: 'Id of the project',
+ })
+ @IsMongoId()
+ @IsDefined()
+ projectId: string;
+
+ @ApiProperty({
+ description: 'ID or Code of the template',
+ })
+ @IsString()
+ @IsOptional()
+ template?: string;
+}
diff --git a/apps/api/src/app/common/usecases/index.ts b/apps/api/src/app/common/usecases/index.ts
new file mode 100644
index 000000000..f04a8fb27
--- /dev/null
+++ b/apps/api/src/app/common/usecases/index.ts
@@ -0,0 +1,6 @@
+import { ValidRequest } from './valid-request/valid-request.usecase';
+
+export const USE_CASES = [
+ ValidRequest,
+ //
+];
diff --git a/apps/api/src/app/common/usecases/valid-request/valid-request.command.ts b/apps/api/src/app/common/usecases/valid-request/valid-request.command.ts
new file mode 100644
index 000000000..b726a48ce
--- /dev/null
+++ b/apps/api/src/app/common/usecases/valid-request/valid-request.command.ts
@@ -0,0 +1,12 @@
+import { IsDefined, IsMongoId, IsOptional, IsString } from 'class-validator';
+import { BaseCommand } from '../../../shared/commands/base.command';
+
+export class ValidRequestCommand extends BaseCommand {
+ @IsMongoId()
+ @IsDefined()
+ projectId: string;
+
+ @IsString()
+ @IsOptional()
+ template: string;
+}
diff --git a/apps/api/src/app/common/usecases/valid-request/valid-request.usecase.ts b/apps/api/src/app/common/usecases/valid-request/valid-request.usecase.ts
new file mode 100644
index 000000000..89dd30df3
--- /dev/null
+++ b/apps/api/src/app/common/usecases/valid-request/valid-request.usecase.ts
@@ -0,0 +1,37 @@
+import { Injectable } from '@nestjs/common';
+import { ProjectRepository, TemplateRepository, CommonRepository } from '@impler/dal';
+import { ValidRequestCommand } from './valid-request.command';
+import { DocumentNotFoundException } from '../../../shared/exceptions/document-not-found.exception';
+import { APIMessages } from '../../../shared/constants';
+
+@Injectable()
+export class ValidRequest {
+ constructor(
+ private projectRepository: ProjectRepository,
+ private templateRepository: TemplateRepository,
+ private commonRepository: CommonRepository
+ ) {}
+
+ async execute(command: ValidRequestCommand) {
+ if (command.template) {
+ const isMongoId = this.commonRepository.validMongoId(command.template);
+ const templateCount = await this.templateRepository.count(
+ isMongoId
+ ? { _id: command.template, _projectId: command.projectId }
+ : { code: command.template, _projectId: command.projectId }
+ );
+ if (!templateCount) {
+ throw new DocumentNotFoundException('Template', command.template, APIMessages.PROJECT_WITH_TEMPLATE_MISSING);
+ }
+ } else {
+ const projectCount = await this.projectRepository.count({
+ _id: command.projectId,
+ });
+ if (!projectCount) {
+ throw new DocumentNotFoundException('Project', command.projectId);
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/apps/api/src/app/mapping/dtos/update-columns.dto.ts b/apps/api/src/app/mapping/dtos/update-columns.dto.ts
new file mode 100644
index 000000000..97a1cee32
--- /dev/null
+++ b/apps/api/src/app/mapping/dtos/update-columns.dto.ts
@@ -0,0 +1,18 @@
+import { ApiProperty } from '@nestjs/swagger';
+import { IsDefined, IsString, IsMongoId } from 'class-validator';
+
+export class UpdateMappingDto {
+ @ApiProperty({
+ description: 'Id of the column',
+ })
+ @IsMongoId()
+ @IsDefined()
+ _columnId: string;
+
+ @ApiProperty({
+ description: 'Selected Heading for column',
+ })
+ @IsDefined()
+ @IsString()
+ columnHeading: string;
+}
diff --git a/apps/api/src/app/mapping/mapping.controller.ts b/apps/api/src/app/mapping/mapping.controller.ts
new file mode 100644
index 000000000..af7e7ada7
--- /dev/null
+++ b/apps/api/src/app/mapping/mapping.controller.ts
@@ -0,0 +1,111 @@
+import { Body, Controller, Get, Param, ParseArrayPipe, Post, UseGuards } from '@nestjs/common';
+import { ApiTags, ApiSecurity, ApiOperation, ApiBody } from '@nestjs/swagger';
+import { ACCESS_KEY_NAME, UploadStatusEnum } from '@impler/shared';
+import { MappingEntity } from '@impler/dal';
+
+import { APIKeyGuard } from '../shared/framework/auth.gaurd';
+import { ValidateMongoId } from '../shared/validations/valid-mongo-id.validation';
+import { GetUploadCommand } from '../shared/usecases/get-upload/get-upload.command';
+import { DoMapping } from './usecases/do-mapping/do-mapping.usecase';
+import { DoMappingCommand } from './usecases/do-mapping/do-mapping.command';
+import { GetUpload } from '../shared/usecases/get-upload/get-upload.usecase';
+import { GetMappings } from './usecases/get-mappings/get-mappings.usecase';
+import { UpdateMappingCommand } from './usecases/update-mappings/update-mappings.command';
+import { UpdateMappings } from './usecases/update-mappings/update-mappings.usecase';
+import { FinalizeUpload } from './usecases/finalize-upload/finalize-upload.usecase';
+import { UpdateMappingDto } from './dtos/update-columns.dto';
+import { ValidateMapping } from './usecases/validate-mapping/validate-mapping.usecase';
+import { validateUploadStatus } from '../shared/helpers/upload.helpers';
+import { validateNotFound } from '../shared/helpers/common.helper';
+
+@Controller('/mapping')
+@ApiTags('Mappings')
+@ApiSecurity(ACCESS_KEY_NAME)
+@UseGuards(APIKeyGuard)
+export class MappingController {
+ constructor(
+ private getUpload: GetUpload,
+ private doMapping: DoMapping,
+ private getMappings: GetMappings,
+ private updateMappings: UpdateMappings,
+ private finalizeUpload: FinalizeUpload,
+ private validateMapping: ValidateMapping
+ ) {}
+
+ @Get(':uploadId')
+ @ApiOperation({
+ summary: 'Get mapping information for uploaded file',
+ })
+ async getMappingInformation(@Param('uploadId', ValidateMongoId) uploadId: string): Promise[]> {
+ const uploadInformation = await this.getUpload.execute(
+ GetUploadCommand.create({
+ uploadId,
+ select: 'status headings _templateId',
+ })
+ );
+
+ // throw error if upload information not found
+ validateNotFound(uploadInformation, 'upload');
+
+ // Get mappings can be called only when file is uploaded or it's mapping in progress
+ validateUploadStatus(uploadInformation.status as UploadStatusEnum, [
+ UploadStatusEnum.UPLOADED,
+ UploadStatusEnum.MAPPING,
+ ]);
+
+ if (uploadInformation.status === UploadStatusEnum.UPLOADED) {
+ await this.doMapping.execute(
+ DoMappingCommand.create({
+ headings: uploadInformation.headings,
+ _templateId: uploadInformation._templateId,
+ _uploadId: uploadId,
+ })
+ );
+ }
+
+ return this.getMappings.execute(uploadId);
+ }
+
+ @Post(':uploadId/finalize')
+ @ApiOperation({
+ summary: 'Finalize mappings for upload',
+ })
+ @ApiBody({ type: [UpdateMappingDto] })
+ async finalizeMappings(
+ @Param('uploadId', ValidateMongoId) _uploadId: string,
+ @Body(new ParseArrayPipe({ items: UpdateMappingDto, optional: true })) body: UpdateMappingDto[]
+ ) {
+ const uploadInformation = await this.getUpload.execute(
+ GetUploadCommand.create({
+ uploadId: _uploadId,
+ select: 'status',
+ })
+ );
+
+ // throw error if upload information not found
+ validateNotFound(uploadInformation, 'upload');
+
+ // Finalize mapping can only be called after the mapping has been completed
+ validateUploadStatus(uploadInformation.status as UploadStatusEnum, [UploadStatusEnum.MAPPING]);
+
+ // validate mapping data
+ await this.validateMapping.execute(body, _uploadId);
+
+ // save mapping
+ if (Array.isArray(body) && body.length > 0) {
+ this.updateMappings.execute(
+ body.map((updateColumnData) =>
+ UpdateMappingCommand.create({
+ _columnId: updateColumnData._columnId,
+ _uploadId,
+ columnHeading: updateColumnData.columnHeading,
+ })
+ ),
+ _uploadId
+ );
+ }
+
+ // update mapping status
+ return this.finalizeUpload.execute(_uploadId);
+ }
+}
diff --git a/apps/api/src/app/mapping/mapping.module.ts b/apps/api/src/app/mapping/mapping.module.ts
new file mode 100644
index 000000000..02443ad4a
--- /dev/null
+++ b/apps/api/src/app/mapping/mapping.module.ts
@@ -0,0 +1,11 @@
+import { Module } from '@nestjs/common';
+import { USE_CASES } from './usecases';
+import { MappingController } from './mapping.controller';
+import { SharedModule } from '../shared/shared.module';
+
+@Module({
+ imports: [SharedModule],
+ providers: [...USE_CASES],
+ controllers: [MappingController],
+})
+export class MappingModule {}
diff --git a/apps/api/src/app/mapping/usecases/do-mapping/do-mapping.command.ts b/apps/api/src/app/mapping/usecases/do-mapping/do-mapping.command.ts
new file mode 100644
index 000000000..450a96448
--- /dev/null
+++ b/apps/api/src/app/mapping/usecases/do-mapping/do-mapping.command.ts
@@ -0,0 +1,16 @@
+import { IsArray, IsDefined, IsMongoId } from 'class-validator';
+import { BaseCommand } from '../../../shared/commands/base.command';
+
+export class DoMappingCommand extends BaseCommand {
+ @IsDefined()
+ @IsMongoId()
+ _uploadId: string;
+
+ @IsDefined()
+ @IsMongoId()
+ _templateId: string;
+
+ @IsDefined()
+ @IsArray()
+ headings: string[];
+}
diff --git a/apps/api/src/app/mapping/usecases/do-mapping/do-mapping.usecase.ts b/apps/api/src/app/mapping/usecases/do-mapping/do-mapping.usecase.ts
new file mode 100644
index 000000000..77c7cc3d6
--- /dev/null
+++ b/apps/api/src/app/mapping/usecases/do-mapping/do-mapping.usecase.ts
@@ -0,0 +1,73 @@
+import { Injectable } from '@nestjs/common';
+import { UploadStatusEnum } from '@impler/shared';
+import { ColumnEntity, ColumnRepository, MappingEntity, MappingRepository, UploadRepository } from '@impler/dal';
+import { DoMappingCommand } from './do-mapping.command';
+
+@Injectable()
+export class DoMapping {
+ constructor(
+ private columnRepository: ColumnRepository,
+ private mappingRepository: MappingRepository,
+ private uploadRepository: UploadRepository
+ ) {}
+
+ async execute(command: DoMappingCommand) {
+ const columns = await this.columnRepository.find(
+ {
+ _templateId: command._templateId,
+ },
+ 'key alternateKeys sequence',
+ {
+ sort: 'sequence',
+ }
+ );
+ const mapping = this.buildMapping(columns, command.headings, command._uploadId);
+ const createdHeadings = await this.mappingRepository.createMany(mapping);
+ await this.uploadRepository.update({ _id: command._uploadId }, { status: UploadStatusEnum.MAPPING });
+
+ return createdHeadings;
+ }
+
+ private buildMapping(columns: ColumnEntity[], headings: string[], _uploadId: string) {
+ const mappings: MappingEntity[] = [];
+ for (const column of columns) {
+ const heading = this.findBestMatchingHeading(headings, column.key, column.alternateKeys);
+ if (heading) {
+ mappings.push(this.buildMappingItem(column._id, _uploadId, heading));
+ } else {
+ mappings.push(this.buildMappingItem(column._id, _uploadId));
+ }
+ }
+
+ return mappings;
+ }
+
+ private findBestMatchingHeading(headings: string[], key: string, alternateKeys: string[]): string | null {
+ const mappedHeading = headings.find((heading: string) => this.checkStringEqual(heading, key));
+ if (mappedHeading) {
+ // compare key
+ return mappedHeading;
+ } else if (Array.isArray(alternateKeys) && alternateKeys.length) {
+ // compare alternateKeys
+ const intersection = headings.find(
+ (heading: string) => !!alternateKeys.find((altKey) => this.checkStringEqual(altKey, heading))
+ );
+
+ return intersection;
+ }
+
+ return null;
+ }
+
+ private checkStringEqual(a: string, b: string): boolean {
+ return String(a).localeCompare(String(b), undefined, { sensitivity: 'accent' }) === 0;
+ }
+
+ private buildMappingItem(columnId: string, uploadId: string, heading?: string): MappingEntity {
+ return {
+ _columnId: columnId,
+ _uploadId: uploadId,
+ columnHeading: heading || null,
+ };
+ }
+}
diff --git a/apps/api/src/app/mapping/usecases/finalize-upload/finalize-upload.usecase.ts b/apps/api/src/app/mapping/usecases/finalize-upload/finalize-upload.usecase.ts
new file mode 100644
index 000000000..af74880e1
--- /dev/null
+++ b/apps/api/src/app/mapping/usecases/finalize-upload/finalize-upload.usecase.ts
@@ -0,0 +1,12 @@
+import { Injectable } from '@nestjs/common';
+import { UploadRepository } from '@impler/dal';
+import { UploadStatusEnum } from '@impler/shared';
+
+@Injectable()
+export class FinalizeUpload {
+ constructor(private uploadRepository: UploadRepository) {}
+
+ async execute(_uploadId: string) {
+ return await this.uploadRepository.findOneAndUpdate({ _id: _uploadId }, { status: UploadStatusEnum.MAPPED });
+ }
+}
diff --git a/apps/api/src/app/mapping/usecases/get-mappings/get-mappings.usecase.ts b/apps/api/src/app/mapping/usecases/get-mappings/get-mappings.usecase.ts
new file mode 100644
index 000000000..5f0e79152
--- /dev/null
+++ b/apps/api/src/app/mapping/usecases/get-mappings/get-mappings.usecase.ts
@@ -0,0 +1,11 @@
+import { Injectable } from '@nestjs/common';
+import { MappingRepository } from '@impler/dal';
+
+@Injectable()
+export class GetMappings {
+ constructor(private mappingRepository: MappingRepository) {}
+
+ async execute(_uploadId: string) {
+ return await this.mappingRepository.getMappingInfo(_uploadId);
+ }
+}
diff --git a/apps/api/src/app/mapping/usecases/index.ts b/apps/api/src/app/mapping/usecases/index.ts
new file mode 100644
index 000000000..f1557f27e
--- /dev/null
+++ b/apps/api/src/app/mapping/usecases/index.ts
@@ -0,0 +1,16 @@
+import { DoMapping } from './do-mapping/do-mapping.usecase';
+import { GetMappings } from './get-mappings/get-mappings.usecase';
+import { UpdateMappings } from './update-mappings/update-mappings.usecase';
+import { FinalizeUpload } from './finalize-upload/finalize-upload.usecase';
+import { ValidateMapping } from './validate-mapping/validate-mapping.usecase';
+import { GetUpload } from '../../shared/usecases/get-upload/get-upload.usecase';
+
+export const USE_CASES = [
+ DoMapping,
+ GetMappings,
+ UpdateMappings,
+ FinalizeUpload,
+ ValidateMapping,
+ GetUpload,
+ //
+];
diff --git a/apps/api/src/app/mapping/usecases/update-mappings/update-mappings.command.ts b/apps/api/src/app/mapping/usecases/update-mappings/update-mappings.command.ts
new file mode 100644
index 000000000..49b7c382f
--- /dev/null
+++ b/apps/api/src/app/mapping/usecases/update-mappings/update-mappings.command.ts
@@ -0,0 +1,16 @@
+import { IsString, IsDefined, IsMongoId } from 'class-validator';
+import { BaseCommand } from '../../../shared/commands/base.command';
+
+export class UpdateMappingCommand extends BaseCommand {
+ @IsDefined()
+ @IsMongoId()
+ _columnId: string;
+
+ @IsDefined()
+ @IsMongoId()
+ _uploadId: string;
+
+ @IsDefined()
+ @IsString()
+ columnHeading: string;
+}
diff --git a/apps/api/src/app/mapping/usecases/update-mappings/update-mappings.usecase.ts b/apps/api/src/app/mapping/usecases/update-mappings/update-mappings.usecase.ts
new file mode 100644
index 000000000..5a2bc0fb7
--- /dev/null
+++ b/apps/api/src/app/mapping/usecases/update-mappings/update-mappings.usecase.ts
@@ -0,0 +1,14 @@
+import { Injectable } from '@nestjs/common';
+import { MappingRepository } from '@impler/dal';
+import { UpdateMappingCommand } from './update-mappings.command';
+
+@Injectable()
+export class UpdateMappings {
+ constructor(private mappingRepository: MappingRepository) {}
+
+ async execute(command: UpdateMappingCommand[], _uploadId: string) {
+ await this.mappingRepository.deleteMany({ _uploadId });
+
+ return this.mappingRepository.createMany(command);
+ }
+}
diff --git a/apps/api/src/app/mapping/usecases/validate-mapping/validate-mapping.command.ts b/apps/api/src/app/mapping/usecases/validate-mapping/validate-mapping.command.ts
new file mode 100644
index 000000000..8e2815725
--- /dev/null
+++ b/apps/api/src/app/mapping/usecases/validate-mapping/validate-mapping.command.ts
@@ -0,0 +1,12 @@
+import { IsString, IsDefined, IsMongoId } from 'class-validator';
+import { BaseCommand } from '../../../shared/commands/base.command';
+
+export class ValidateMappingCommand extends BaseCommand {
+ @IsDefined()
+ @IsMongoId()
+ _columnId: string;
+
+ @IsDefined()
+ @IsString()
+ columnHeading: string;
+}
diff --git a/apps/api/src/app/mapping/usecases/validate-mapping/validate-mapping.usecase.ts b/apps/api/src/app/mapping/usecases/validate-mapping/validate-mapping.usecase.ts
new file mode 100644
index 000000000..c06301454
--- /dev/null
+++ b/apps/api/src/app/mapping/usecases/validate-mapping/validate-mapping.usecase.ts
@@ -0,0 +1,29 @@
+import { BadRequestException, Injectable } from '@nestjs/common';
+import { ColumnRepository, UploadRepository } from '@impler/dal';
+import { ValidateMappingCommand } from './validate-mapping.command';
+
+@Injectable()
+export class ValidateMapping {
+ constructor(private columnRepository: ColumnRepository, private uploadRepository: UploadRepository) {}
+
+ async execute(command: ValidateMappingCommand[], _uploadId: string) {
+ // check if mapping data contains duplicates
+ const mappings = [...new Map(command.map((item) => [item._columnId, item])).values()];
+ if (mappings.length !== command.length) throw new BadRequestException('Mapping data contains duplicates');
+
+ // Check if mapping data _columnIds are valid
+ const columnIds = command.map((mapping) => ({
+ _id: mapping._columnId,
+ }));
+ const count = await this.columnRepository.count({
+ $or: [...columnIds],
+ });
+ if (count !== command.length) throw new BadRequestException(`Mapping data contains invalid _columnId(s)`);
+
+ // check if mapping data headings are valid
+ const columnHeadings = command.map((mapping) => mapping.columnHeading);
+ const uploadInfo = await this.uploadRepository.findById(_uploadId, 'headings');
+ const isAllHeadingsAreValid = columnHeadings.every((heading) => uploadInfo.headings.includes(heading));
+ if (!isAllHeadingsAreValid) throw new BadRequestException(`Mapping data contains invalid columnHeading values`);
+ }
+}
diff --git a/apps/api/src/app/project/dtos/create-project-request.dto.ts b/apps/api/src/app/project/dtos/create-project-request.dto.ts
new file mode 100644
index 000000000..4cafa3ed0
--- /dev/null
+++ b/apps/api/src/app/project/dtos/create-project-request.dto.ts
@@ -0,0 +1,32 @@
+import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
+import { IsDefined, IsOptional, IsString, Validate } from 'class-validator';
+import { Transform } from 'class-transformer';
+import { changeToCode } from '@impler/shared';
+import { UniqueValidator } from '../../shared/framework/is-unique.validator';
+
+export class CreateProjectRequestDto {
+ @ApiProperty({
+ description: 'Name of the project',
+ })
+ @IsString()
+ @IsDefined()
+ name: string;
+
+ @ApiProperty({
+ description: 'Code of the project',
+ })
+ @IsString()
+ @IsDefined()
+ @Validate(UniqueValidator, ['Project', 'code'], {
+ message: 'Code is already taken',
+ })
+ @Transform((value) => changeToCode(value.value))
+ code: string;
+
+ @ApiPropertyOptional({
+ description: 'Name of authentication header to sent along the request',
+ })
+ @IsString()
+ @IsOptional()
+ authHeaderName: string;
+}
diff --git a/apps/api/src/app/project/dtos/project-response.dto.ts b/apps/api/src/app/project/dtos/project-response.dto.ts
new file mode 100644
index 000000000..f7848568b
--- /dev/null
+++ b/apps/api/src/app/project/dtos/project-response.dto.ts
@@ -0,0 +1,32 @@
+import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
+import { IsDefined, IsOptional, IsString } from 'class-validator';
+
+export class ProjectResponseDto {
+ @ApiPropertyOptional({
+ description: 'Id of the project',
+ })
+ @IsString()
+ @IsDefined()
+ _id?: string;
+
+ @ApiProperty({
+ description: 'Name of the project',
+ })
+ @IsString()
+ @IsDefined()
+ name: string;
+
+ @ApiProperty({
+ description: 'Code of the project',
+ })
+ @IsString()
+ @IsDefined()
+ code: string;
+
+ @ApiPropertyOptional({
+ description: 'Name of authentication header to sent along the request',
+ })
+ @IsString()
+ @IsOptional()
+ authHeaderName?: string;
+}
diff --git a/apps/api/src/app/project/dtos/update-project-request.dto.ts b/apps/api/src/app/project/dtos/update-project-request.dto.ts
new file mode 100644
index 000000000..15c61f6d8
--- /dev/null
+++ b/apps/api/src/app/project/dtos/update-project-request.dto.ts
@@ -0,0 +1,18 @@
+import { ApiPropertyOptional } from '@nestjs/swagger';
+import { IsOptional, IsString } from 'class-validator';
+
+export class UpdateProjectRequestDto {
+ @ApiPropertyOptional({
+ description: 'Name of the project',
+ })
+ @IsString()
+ @IsOptional()
+ name: string;
+
+ @ApiPropertyOptional({
+ description: 'Name of authentication header to sent along the request',
+ })
+ @IsString()
+ @IsOptional()
+ authHeaderName: string;
+}
diff --git a/apps/api/src/app/project/project.controller.ts b/apps/api/src/app/project/project.controller.ts
new file mode 100644
index 000000000..91d20ed82
--- /dev/null
+++ b/apps/api/src/app/project/project.controller.ts
@@ -0,0 +1,94 @@
+import { Body, Controller, Delete, Get, Param, Post, Put, UseGuards } from '@nestjs/common';
+import { ApiOperation, ApiTags, ApiOkResponse, ApiSecurity } from '@nestjs/swagger';
+import { CreateProjectRequestDto } from './dtos/create-project-request.dto';
+import { ProjectResponseDto } from './dtos/project-response.dto';
+import { GetProjects } from './usecases/get-projects/get-projects.usecase';
+import { CreateProject } from './usecases/create-project/create-project.usecase';
+import { CreateProjectCommand } from './usecases/create-project/create-project.command';
+import { UpdateProjectRequestDto } from './dtos/update-project-request.dto';
+import { UpdateProject } from './usecases/update-project/update-project.usecase';
+import { UpdateProjectCommand } from './usecases/update-project/update-project.command';
+import { DeleteProject } from './usecases/delete-project/delete-project.usecase';
+import { DocumentNotFoundException } from '../shared/exceptions/document-not-found.exception';
+import { ValidateMongoId } from '../shared/validations/valid-mongo-id.validation';
+import { APIKeyGuard } from '../shared/framework/auth.gaurd';
+import { ACCESS_KEY_NAME } from '@impler/shared';
+
+@Controller('/project')
+@ApiTags('Project')
+@ApiSecurity(ACCESS_KEY_NAME)
+@UseGuards(APIKeyGuard)
+export class ProjectController {
+ constructor(
+ private getProjectsUsecase: GetProjects,
+ private createProjectUsecase: CreateProject,
+ private updateProjectUsecase: UpdateProject,
+ private deleteProjectUsecase: DeleteProject
+ ) {}
+
+ @Get('')
+ @ApiOperation({
+ summary: 'Get projects',
+ })
+ @ApiOkResponse({
+ type: [ProjectResponseDto],
+ })
+ getProjects(): Promise {
+ return this.getProjectsUsecase.execute();
+ }
+
+ @Post('')
+ @ApiOperation({
+ summary: 'Create project',
+ })
+ @ApiOkResponse({
+ type: ProjectResponseDto,
+ })
+ createProject(@Body() body: CreateProjectRequestDto): Promise {
+ return this.createProjectUsecase.execute(
+ CreateProjectCommand.create({
+ code: body.code,
+ name: body.name,
+ authHeaderName: body.authHeaderName,
+ })
+ );
+ }
+
+ @Put(':projectId')
+ @ApiOperation({
+ summary: 'Update project',
+ })
+ @ApiOkResponse({
+ type: ProjectResponseDto,
+ })
+ async updateProject(
+ @Body() body: UpdateProjectRequestDto,
+ @Param('projectId', ValidateMongoId) projectId: string
+ ): Promise {
+ const document = await this.updateProjectUsecase.execute(
+ UpdateProjectCommand.create({ name: body.name, authHeaderName: body.authHeaderName }),
+ projectId
+ );
+ if (!document) {
+ throw new DocumentNotFoundException('Project', projectId);
+ }
+
+ return document;
+ }
+
+ @Delete(':projectId')
+ @ApiOperation({
+ summary: 'Delete project',
+ })
+ @ApiOkResponse({
+ type: ProjectResponseDto,
+ })
+ async deleteProject(@Param('projectId', ValidateMongoId) projectId: string): Promise {
+ const document = await this.deleteProjectUsecase.execute(projectId);
+ if (!document) {
+ throw new DocumentNotFoundException('Project', projectId);
+ }
+
+ return document;
+ }
+}
diff --git a/apps/api/src/app/project/project.module.ts b/apps/api/src/app/project/project.module.ts
new file mode 100644
index 000000000..6b404050f
--- /dev/null
+++ b/apps/api/src/app/project/project.module.ts
@@ -0,0 +1,12 @@
+import { Module } from '@nestjs/common';
+import { USE_CASES } from './usecases';
+import { SharedModule } from '../shared/shared.module';
+import { ProjectController } from './project.controller';
+import { UniqueValidator } from '../shared/framework/is-unique.validator';
+
+@Module({
+ imports: [SharedModule, UniqueValidator],
+ providers: [...USE_CASES],
+ controllers: [ProjectController],
+})
+export class ProjectModule {}
diff --git a/apps/api/src/app/project/usecases/create-project/create-project.command.ts b/apps/api/src/app/project/usecases/create-project/create-project.command.ts
new file mode 100644
index 000000000..0bdca9e27
--- /dev/null
+++ b/apps/api/src/app/project/usecases/create-project/create-project.command.ts
@@ -0,0 +1,16 @@
+import { IsDefined, IsOptional, IsString } from 'class-validator';
+import { BaseCommand } from '../../../shared/commands/base.command';
+
+export class CreateProjectCommand extends BaseCommand {
+ @IsDefined()
+ @IsString()
+ name: string;
+
+ @IsDefined()
+ @IsString()
+ code: string;
+
+ @IsOptional()
+ @IsString()
+ authHeaderName: string;
+}
diff --git a/apps/api/src/app/project/usecases/create-project/create-project.usecase.ts b/apps/api/src/app/project/usecases/create-project/create-project.usecase.ts
new file mode 100644
index 000000000..61ed4030a
--- /dev/null
+++ b/apps/api/src/app/project/usecases/create-project/create-project.usecase.ts
@@ -0,0 +1,12 @@
+import { Injectable } from '@nestjs/common';
+import { ProjectRepository } from '@impler/dal';
+import { CreateProjectCommand } from './create-project.command';
+
+@Injectable()
+export class CreateProject {
+ constructor(private projectRepository: ProjectRepository) {}
+
+ async execute(command: CreateProjectCommand) {
+ return this.projectRepository.create(command);
+ }
+}
diff --git a/apps/api/src/app/project/usecases/delete-project/delete-project.usecase.ts b/apps/api/src/app/project/usecases/delete-project/delete-project.usecase.ts
new file mode 100644
index 000000000..9b43729f9
--- /dev/null
+++ b/apps/api/src/app/project/usecases/delete-project/delete-project.usecase.ts
@@ -0,0 +1,11 @@
+import { Injectable } from '@nestjs/common';
+import { ProjectRepository } from '@impler/dal';
+
+@Injectable()
+export class DeleteProject {
+ constructor(private projectRepository: ProjectRepository) {}
+
+ async execute(id: string) {
+ return this.projectRepository.delete({ _id: id });
+ }
+}
diff --git a/apps/api/src/app/project/usecases/get-projects/get-projects.usecase.ts b/apps/api/src/app/project/usecases/get-projects/get-projects.usecase.ts
new file mode 100644
index 000000000..da5f7cdc5
--- /dev/null
+++ b/apps/api/src/app/project/usecases/get-projects/get-projects.usecase.ts
@@ -0,0 +1,21 @@
+import { Injectable } from '@nestjs/common';
+import { ProjectRepository } from '@impler/dal';
+import { ProjectResponseDto } from '../../dtos/project-response.dto';
+
+@Injectable()
+export class GetProjects {
+ constructor(private projectRepository: ProjectRepository) {}
+
+ async execute(): Promise {
+ const projects = await this.projectRepository.find({});
+
+ return projects.map((project) => {
+ return {
+ _id: project._id,
+ name: project.name,
+ code: project.code,
+ authHeaderName: project.authHeaderName,
+ };
+ });
+ }
+}
diff --git a/apps/api/src/app/project/usecases/index.ts b/apps/api/src/app/project/usecases/index.ts
new file mode 100644
index 000000000..6a77192e0
--- /dev/null
+++ b/apps/api/src/app/project/usecases/index.ts
@@ -0,0 +1,12 @@
+import { CreateProject } from './create-project/create-project.usecase';
+import { GetProjects } from './get-projects/get-projects.usecase';
+import { UpdateProject } from './update-project/update-project.usecase';
+import { DeleteProject } from './delete-project/delete-project.usecase';
+
+export const USE_CASES = [
+ GetProjects,
+ CreateProject,
+ UpdateProject,
+ DeleteProject,
+ //
+];
diff --git a/apps/api/src/app/project/usecases/update-project/update-project.command.ts b/apps/api/src/app/project/usecases/update-project/update-project.command.ts
new file mode 100644
index 000000000..befb7aa72
--- /dev/null
+++ b/apps/api/src/app/project/usecases/update-project/update-project.command.ts
@@ -0,0 +1,12 @@
+import { IsOptional, IsString } from 'class-validator';
+import { BaseCommand } from '../../../shared/commands/base.command';
+
+export class UpdateProjectCommand extends BaseCommand {
+ @IsOptional()
+ @IsString()
+ name: string;
+
+ @IsOptional()
+ @IsString()
+ authHeaderName: string;
+}
diff --git a/apps/api/src/app/project/usecases/update-project/update-project.usecase.ts b/apps/api/src/app/project/usecases/update-project/update-project.usecase.ts
new file mode 100644
index 000000000..01eba6063
--- /dev/null
+++ b/apps/api/src/app/project/usecases/update-project/update-project.usecase.ts
@@ -0,0 +1,12 @@
+import { Injectable } from '@nestjs/common';
+import { ProjectRepository } from '@impler/dal';
+import { UpdateProjectCommand } from './update-project.command';
+
+@Injectable()
+export class UpdateProject {
+ constructor(private projectRepository: ProjectRepository) {}
+
+ async execute(command: UpdateProjectCommand, id: string) {
+ return this.projectRepository.findOneAndUpdate({ _id: id }, command);
+ }
+}
diff --git a/apps/api/src/app/review/dtos/confirm-review-request.dto.ts b/apps/api/src/app/review/dtos/confirm-review-request.dto.ts
new file mode 100644
index 000000000..040edc4ef
--- /dev/null
+++ b/apps/api/src/app/review/dtos/confirm-review-request.dto.ts
@@ -0,0 +1,13 @@
+import { ApiProperty } from '@nestjs/swagger';
+import { IsBoolean, IsOptional } from 'class-validator';
+
+export class ConfirmReviewRequestDto {
+ @ApiProperty({
+ description: 'Boolean value indicating whether to process the invalid data or not.',
+ default: false,
+ required: false,
+ })
+ @IsBoolean()
+ @IsOptional()
+ processInvalidRecords: boolean;
+}
diff --git a/apps/api/src/app/review/review.controller.ts b/apps/api/src/app/review/review.controller.ts
new file mode 100644
index 000000000..593017c4d
--- /dev/null
+++ b/apps/api/src/app/review/review.controller.ts
@@ -0,0 +1,114 @@
+import { BadRequestException, Body, Controller, Get, Param, Post, Query, UseGuards } from '@nestjs/common';
+import { ApiOperation, ApiTags, ApiSecurity, ApiQuery, ApiOkResponse } from '@nestjs/swagger';
+import { FileEntity, UploadEntity } from '@impler/dal';
+import { ACCESS_KEY_NAME, UploadStatusEnum } from '@impler/shared';
+import { APIMessages } from '@shared/constants';
+import { APIKeyGuard } from '@shared/framework/auth.gaurd';
+import { validateUploadStatus } from '@shared/helpers/upload.helpers';
+import { DoReview } from './usecases/do-review/do-review.usecase';
+import { GetUploadInvalidData } from './usecases/get-upload-invalid-data/get-upload-invalid-data.usecase';
+import { SaveReviewData } from './usecases/save-review-data/save-review-data.usecase';
+import { GetFileInvalidData } from './usecases/get-file-invalid-data/get-file-invalid-data.usecase';
+import { ValidateMongoId } from '@shared/validations/valid-mongo-id.validation';
+import { ConfirmReviewRequestDto } from './dtos/confirm-review-request.dto';
+import { GetUploadCommand } from '@shared/usecases/get-upload/get-upload.command';
+import { GetUpload } from '@shared/usecases/get-upload/get-upload.usecase';
+import { paginateRecords, validateNotFound } from '@shared/helpers/common.helper';
+import { StartProcess } from './usecases/start-process/start-process.usecase';
+import { StartProcessCommand } from './usecases/start-process/start-process.command';
+import { PaginationResponseDto } from '@shared/dtos/pagination-response.dto';
+import { Defaults } from '@shared/constants';
+
+@Controller('/review')
+@ApiTags('Review')
+@ApiSecurity(ACCESS_KEY_NAME)
+@UseGuards(APIKeyGuard)
+export class ReviewController {
+ constructor(
+ private doReview: DoReview,
+ private getUpload: GetUpload,
+ private startProcess: StartProcess,
+ private saveReviewData: SaveReviewData,
+ private getFileInvalidData: GetFileInvalidData,
+ private getUploadInvalidData: GetUploadInvalidData
+ ) {}
+
+ @Get(':uploadId')
+ @ApiOperation({
+ summary: 'Get Review data for uploaded file',
+ })
+ @ApiQuery({
+ name: 'page',
+ required: false,
+ type: Number,
+ description: 'Page index of data to return',
+ })
+ @ApiQuery({
+ name: 'limit',
+ required: false,
+ type: Number,
+ description: 'Size of data to return',
+ })
+ @ApiOkResponse({
+ description: 'Paginated reviewed data',
+ type: PaginationResponseDto,
+ })
+ async getReview(
+ @Param('uploadId') _uploadId: string,
+ @Query('page') page = Defaults.PAGE,
+ @Query('limit') limit = Defaults.PAGE_LIMIT
+ ): Promise {
+ const uploadData = await this.getUploadInvalidData.execute(_uploadId);
+ if (!uploadData) throw new BadRequestException(APIMessages.UPLOAD_NOT_FOUND);
+
+ // Only Mapped & Reviewing status are allowed
+ validateUploadStatus(uploadData.status as UploadStatusEnum, [UploadStatusEnum.MAPPED, UploadStatusEnum.REVIEWING]);
+
+ // Get Invalid Data either from Validation or Validation Result
+ let invalidData = [];
+ if (uploadData.status === UploadStatusEnum.MAPPED) {
+ // uploaded file is mapped, do review
+ const reviewData = await this.doReview.execute(_uploadId);
+ // save invalid data to storage
+ this.saveReviewData.execute(_uploadId, reviewData.invalid, reviewData.valid);
+
+ invalidData = reviewData.invalid;
+ } else {
+ // Uploaded file is already reviewed, return reviewed data
+ invalidData = await this.getFileInvalidData.execute(
+ (uploadData._invalidDataFileId as unknown as FileEntity).path
+ );
+ }
+
+ return paginateRecords(invalidData, page, limit);
+ }
+
+ @Post(':uploadId/confirm')
+ @ApiOperation({
+ summary: 'Confirm review data for uploaded file',
+ })
+ async doConfirmReview(
+ @Param('uploadId', ValidateMongoId) _uploadId: string,
+ @Body() body: ConfirmReviewRequestDto
+ ): Promise {
+ const uploadInformation = await this.getUpload.execute(
+ GetUploadCommand.create({
+ uploadId: _uploadId,
+ select: 'status',
+ })
+ );
+
+ // throw error if upload information not found
+ validateNotFound(uploadInformation, 'upload');
+
+ // upload files with status reviewing can only be confirmed
+ validateUploadStatus(uploadInformation.status as UploadStatusEnum, [UploadStatusEnum.REVIEWING]);
+
+ return this.startProcess.execute(
+ StartProcessCommand.create({
+ _uploadId: _uploadId,
+ processInvalidRecords: body.processInvalidRecords,
+ })
+ );
+ }
+}
diff --git a/apps/api/src/app/review/review.module.ts b/apps/api/src/app/review/review.module.ts
new file mode 100644
index 000000000..a1b78ba44
--- /dev/null
+++ b/apps/api/src/app/review/review.module.ts
@@ -0,0 +1,13 @@
+import { Module } from '@nestjs/common';
+import { USE_CASES } from './usecases';
+import { ReviewController } from './review.controller';
+import { SharedModule } from '../shared/shared.module';
+import { AJVService } from './service/AJV.service';
+import { QueueService } from '../shared/storage/queue.service';
+
+@Module({
+ imports: [SharedModule],
+ providers: [...USE_CASES, AJVService, QueueService],
+ controllers: [ReviewController],
+})
+export class ReviewModule {}
diff --git a/apps/api/src/app/review/service/AJV.service.spec.ts b/apps/api/src/app/review/service/AJV.service.spec.ts
new file mode 100644
index 000000000..2c2a35550
--- /dev/null
+++ b/apps/api/src/app/review/service/AJV.service.spec.ts
@@ -0,0 +1,192 @@
+import { ColumnTypesEnum } from '@impler/shared';
+import { expect } from 'chai';
+import { AJVService } from './AJV.service';
+
+describe('AJV Service', () => {
+ let ajvService = new AJVService();
+ describe('isRequired', () => {
+ it('should mark data invalid if value is empty', () => {
+ let validationResult = ajvService.validate(
+ // @ts-ignore
+ [{ _id: "a", key: "username", isRequired: true, name: "Username", type: ColumnTypesEnum.STRING }],
+ [{ _columnId: "a", columnHeading: "username" }],
+ [{ username: "" }]
+ );
+ expect(validationResult.invalid.length).to.equal(1);
+ expect(validationResult.invalid[0].message).to.equal("`username` must not be empty");
+ expect(validationResult.valid.length).to.equal(0);
+ });
+ it('should mark data invalid if value is empty for number type', () => {
+ let validationResult = ajvService.validate(
+ // @ts-ignore
+ [{ _id: "a", key: "id", isRequired: true, name: "ID", type: ColumnTypesEnum.NUMBER }],
+ [{ _columnId: "a", columnHeading: "id" }],
+ [{ id: "" }]
+ );
+ expect(validationResult.invalid.length).to.equal(1);
+ expect(validationResult.invalid[0].message).to.include("`id` must not be empty");
+ expect(validationResult.valid.length).to.equal(0);
+ });
+ it('should mark data valid if value is not empty', () => {
+ let validationResult = ajvService.validate(
+ // @ts-ignore
+ [{ _id: "a", key: "username", isRequired: true, name: "Username", type: ColumnTypesEnum.STRING }],
+ [{ _columnId: "a", columnHeading: "username" }],
+ [{ username: "test" }]
+ );
+ expect(validationResult.invalid.length).to.equal(0);
+ expect(validationResult.valid.length).to.equal(1);
+ });
+ });
+ describe('isUnique', () => {
+ it('should mark data invalid if value is not unique', () => {
+ let validationResult = ajvService.validate(
+ // @ts-ignore
+ [{ _id: "a", key: "username", isUnique: true, name: "Username", type: ColumnTypesEnum.STRING }],
+ [{ _columnId: "a", columnHeading: "username" }],
+ [{ username: "test" }, { username: "test" }]
+ );
+ expect(validationResult.invalid.length).to.equal(1);
+ expect(validationResult.invalid[0].message).to.equal("`username` must be unique");
+ expect(validationResult.valid.length).to.equal(1);
+ });
+ it('should mark data valid if value is unique', () => {
+ let validationResult = ajvService.validate(
+ // @ts-ignore
+ [{ _id: "a", key: "username", isUnique: true, name: "Username", type: ColumnTypesEnum.STRING }],
+ [{ _columnId: "a", columnHeading: "username" }],
+ [{ username: "test" }, { username: "test2" }]
+ );
+ expect(validationResult.invalid.length).to.equal(0);
+ expect(validationResult.valid.length).to.equal(2);
+ });
+ });
+ describe("Email", () => {
+ it('should mark data invalid if value is not a valid email', () => {
+ let validationResult = ajvService.validate(
+ // @ts-ignore
+ [{ _id: "a", key: "regemail", name: "Email", type: ColumnTypesEnum.EMAIL }],
+ [{ _columnId: "a", columnHeading: "regemail" }],
+ [{ regemail: "test" }]
+ );
+ expect(validationResult.invalid.length).to.equal(1);
+ expect(validationResult.invalid[0].message).to.equal("`regemail` must be a valid email");
+ expect(validationResult.valid.length).to.equal(0);
+ });
+ it('should mark data valid if value is a valid email', () => {
+ let validationResult = ajvService.validate(
+ // @ts-ignore
+ [{ _id: "a", key: "regemail", name: "Email", type: ColumnTypesEnum.EMAIL }],
+ [{ _columnId: "a", columnHeading: "regemail" }],
+ [{ regemail: "test@gmail.com" }]
+ );
+ expect(validationResult.invalid.length).to.equal(0);
+ expect(validationResult.valid.length).to.equal(1);
+ });
+ })
+ describe("Regex", () => {
+ it('should mark data invalid if value does not match regex', () => {
+ const pattern = "^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$";
+ let validationResult = ajvService.validate(
+ // @ts-ignore
+ [{ _id: "a", key: "regemail", name: "Email", type: ColumnTypesEnum.REGEX, regex: "^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$" }],
+ [{ _columnId: "a", columnHeading: "regemail" }],
+ [{ regemail: "test" }]
+ );
+ expect(validationResult.invalid.length).to.equal(1);
+ expect(validationResult.invalid[0].message).to.include('`regemail`' + ` must match the pattern /${pattern}/`);
+ expect(validationResult.valid.length).to.equal(0);
+ });
+ it('should mark data valid if value matches regex', () => {
+ let validationResult = ajvService.validate(
+ // @ts-ignore
+ [{ _id: "a", key: "regemail", name: "Email", type: ColumnTypesEnum.REGEX, regex: "^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$" }],
+ [{ _columnId: "a", columnHeading: "regemail" }],
+ [{ regemail: "test@gmail.com" }]
+ );
+ expect(validationResult.invalid.length).to.equal(0);
+ expect(validationResult.valid.length).to.equal(1);
+ });
+ });
+ describe("Number", () => {
+ it('should mark data invalid if value is not a number', () => {
+ let validationResult = ajvService.validate(
+ // @ts-ignore
+ [{ _id: "a", key: "id", name: "ID", type: ColumnTypesEnum.NUMBER }],
+ [{ _columnId: "a", columnHeading: "id" }],
+ [{ id: "test" }]
+ );
+ expect(validationResult.invalid.length).to.equal(1);
+ expect(validationResult.invalid[0].message).to.equal("`id` must be number");
+ expect(validationResult.valid.length).to.equal(0);
+ });
+ it('should mark data valid if value is a number', () => {
+ let validationResult = ajvService.validate(
+ // @ts-ignore
+ [{ _id: "a", key: "id", name: "ID", type: ColumnTypesEnum.NUMBER }],
+ [{ _columnId: "a", columnHeading: "id" }],
+ [{ id: 1 }]
+ );
+ expect(validationResult.invalid.length).to.equal(0);
+ expect(validationResult.valid.length).to.equal(1);
+ });
+ });
+ describe("Date", () => {
+ it('should mark data invalid if value is not a date', () => {
+ let validationResult = ajvService.validate(
+ // @ts-ignore
+ [{ _id: "a", key: "dob", name: "Date of Birth", type: ColumnTypesEnum.DATE }],
+ [{ _columnId: "a", columnHeading: "dob" }],
+ [{ dob: "test" }]
+ );
+ expect(validationResult.invalid.length).to.equal(1);
+ expect(validationResult.invalid[0].message).to.equal("`dob` must be a valid date");
+ expect(validationResult.valid.length).to.equal(0);
+ });
+ it('should mark data valid if value is a date', () => {
+ let validationResult = ajvService.validate(
+ // @ts-ignore
+ [{ _id: "a", key: "dob", name: "Date of Birth", type: ColumnTypesEnum.DATE }],
+ [{ _columnId: "a", columnHeading: "dob" }],
+ [{ dob: "2020-01-01" }]
+ );
+ expect(validationResult.invalid.length).to.equal(0);
+ expect(validationResult.valid.length).to.equal(1);
+ });
+ });
+ describe('Select', () => {
+ it('should mark data invalid if value is not in select options', () => {
+ let validationResult = ajvService.validate(
+ // @ts-ignore
+ [{ _id: "a", key: "gender", name: "Gender", type: ColumnTypesEnum.SELECT, selectValues: ['Male', 'Female'] }],
+ [{ _columnId: "a", columnHeading: "gender" }],
+ [{ gender: "abcd" }]
+ );
+ expect(validationResult.invalid.length).to.equal(1);
+ expect(validationResult.invalid[0].message).to.equal("`gender` must be from [Male,Female]");
+ expect(validationResult.valid.length).to.equal(0);
+ });
+ it('should mark data valid if value is in select options', () => {
+ let validationResult = ajvService.validate(
+ // @ts-ignore
+ [{ _id: "a", key: "gender", name: "Gender", type: ColumnTypesEnum.SELECT, selectValues: ['Male', 'Female'] }],
+ [{ _columnId: "a", columnHeading: "gender" }],
+ [{ gender: "Male" }]
+ );
+ expect(validationResult.invalid.length).to.equal(0);
+ expect(validationResult.valid.length).to.equal(1);
+ });
+ });
+ describe('Any', () => {
+ it('should mark data valid if value is any', () => {
+ let validationResult = ajvService.validate(
+ // @ts-ignore
+ [{ _id: "a", key: "any", name: "Any", type: ColumnTypesEnum.ANY }],
+ [{ _columnId: "a", columnHeading: "any" }],
+ [{ any: "test" }, { any: 1 }, { any: "2020-01-01" }]
+ );
+ expect(validationResult.invalid.length).to.equal(0);
+ expect(validationResult.valid.length).to.equal(3);
+ });
+ })
+})
diff --git a/apps/api/src/app/review/service/AJV.service.ts b/apps/api/src/app/review/service/AJV.service.ts
new file mode 100644
index 000000000..09a063a54
--- /dev/null
+++ b/apps/api/src/app/review/service/AJV.service.ts
@@ -0,0 +1,216 @@
+import { Injectable } from '@nestjs/common';
+import { ColumnTypesEnum } from '@impler/shared';
+import { ColumnEntity, MappingEntity } from '@impler/dal';
+import Ajv, { ErrorObject, AnySchemaObject } from 'ajv';
+import addFormats from 'ajv-formats';
+import addKeywords from 'ajv-keywords';
+
+const ajv = new Ajv({
+ allErrors: true,
+ coerceTypes: true,
+ allowUnionTypes: true,
+ removeAdditional: true,
+ verbose: true,
+});
+addFormats(ajv, ['email']);
+addKeywords(ajv);
+ajv.addFormat('custom-date-time', function (dateTimeString) {
+ if (typeof dateTimeString === 'object') {
+ dateTimeString = (dateTimeString as Date).toISOString();
+ }
+
+ return !isNaN(Date.parse(dateTimeString)); // any test that returns true/false
+});
+
+// Empty keyword
+ajv.addKeyword({
+ keyword: 'emptyCheck',
+ schema: false,
+ compile: () => {
+ return (data) => (data === undefined || data === null || data === '' ? false : true);
+ },
+});
+
+// Unique keyword
+let uniqueItems: Record> = {};
+ajv.addKeyword({
+ keyword: 'uniqueCheck',
+ schema: false, // keyword value is not used, can be true
+ validate: function (data: any, dataPath: AnySchemaObject) {
+ if (uniqueItems[dataPath.parentDataProperty].has(data)) {
+ return false;
+ }
+ uniqueItems[dataPath.parentDataProperty].add(data);
+
+ return true;
+ },
+});
+
+@Injectable()
+export class AJVService {
+ validate(columns: ColumnEntity[], mappings: MappingEntity[], data: any) {
+ const schema = this.buildAJVSchema(columns, mappings);
+ const validator = ajv.compile(schema);
+
+ const valid = validator(data);
+ const returnData = {
+ invalid: [],
+ valid: [],
+ };
+ if (!valid) {
+ const errors: Record = this.buildErrorRecords(validator.errors, data);
+
+ returnData.invalid = Object.values(errors);
+ // eslint-disable-next-line no-magic-numbers
+ Object.keys(errors).forEach((index) => (data as any).splice(index as unknown as number, 1));
+ }
+ returnData.valid = data as any;
+ // resetting uniqueItems
+ uniqueItems = {};
+
+ return returnData;
+ }
+ private buildAJVSchema(columns: ColumnEntity[], mappings: MappingEntity[]) {
+ const formattedColumns: Record = columns.reduce((acc, column) => {
+ acc[column._id] = { ...column };
+
+ return acc;
+ }, {});
+ const properties: Record = mappings.reduce((acc, mapping) => {
+ acc[mapping.columnHeading] = this.getProperty(formattedColumns[mapping._columnId]);
+
+ return acc;
+ }, {});
+ const requiredProperties: string[] = mappings.reduce((acc, mapping) => {
+ if (formattedColumns[mapping._columnId].isRequired) acc.push(mapping.columnHeading);
+
+ return acc;
+ }, []);
+ // setting uniqueItems to empty set to avoid error
+ mappings.forEach((mapping) => {
+ if (formattedColumns[mapping._columnId].isUnique) {
+ uniqueItems[mapping.columnHeading] = new Set();
+ }
+ });
+ const objectSchema = {
+ type: 'object',
+ properties,
+ required: requiredProperties,
+ additionalProperties: false,
+ };
+
+ return {
+ type: 'array',
+ items: objectSchema,
+ };
+ }
+ private getProperty(column: ColumnEntity): Record {
+ let property: Record = {};
+
+ switch (column.type) {
+ case ColumnTypesEnum.STRING:
+ property = {
+ type: 'string',
+ };
+ break;
+ case ColumnTypesEnum.NUMBER:
+ property = {
+ type: 'number',
+ };
+ break;
+ case ColumnTypesEnum.SELECT:
+ property = {
+ type: 'string',
+ enum: column.selectValues || [],
+ };
+ break;
+ case ColumnTypesEnum.REGEX:
+ const [full, pattern, flags] = column.regex.match(/\/(.*)\/(.*)|(.*)/);
+
+ property = { type: 'string', regexp: { pattern: pattern || full, flags: flags || '' } };
+ break;
+ case ColumnTypesEnum.EMAIL:
+ property = { type: 'string', format: 'email' };
+ break;
+ case ColumnTypesEnum.DATE:
+ property = { type: 'string', format: 'custom-date-time' };
+ break;
+ case ColumnTypesEnum.ANY:
+ property = { type: ['string', 'number', 'object'] };
+ break;
+ }
+
+ return {
+ ...property,
+ ...(column.isUnique && { uniqueCheck: true }),
+ ...(column.isRequired && { emptyCheck: true }),
+ };
+ }
+ private buildErrorRecords(errors: ErrorObject[], data?: any[]) {
+ let index: string, field: string, message: string;
+
+ return errors.reduce((acc, error) => {
+ [, index, field] = error.instancePath.split('/');
+ // eslint-disable-next-line no-magic-numbers
+ message = this.getMessage(error, field || error.schema[0]);
+
+ if (acc[index]) {
+ acc[index].message += `, ${message}`;
+ } else
+ acc[index] = {
+ index,
+ message,
+ ...data[index],
+ };
+
+ return acc;
+ }, {});
+ }
+ private getMessage(error: ErrorObject, field: string): string {
+ let message = '';
+ switch (true) {
+ // empty string case
+ case error.keyword === 'emptyCheck':
+ message = ` must not be empty`;
+ break;
+ // uniqueCheck
+ case error.keyword === 'uniqueCheck':
+ message = ` must be unique`;
+ break;
+ // custom date format
+ case error.keyword === 'format' && error.params.format === 'custom-date-time':
+ message = ` must be a valid date`;
+ break;
+ // common cases
+ case error.keyword === 'type':
+ message = ' ' + error.message;
+ break;
+ case error.keyword === 'enum':
+ message = ` must be from [${error.params.allowedValues}]`;
+ break;
+ case error.keyword === 'regexp':
+ message = ` must match the pattern ${new RegExp(
+ error.parentSchema?.regexp?.pattern,
+ error.parentSchema?.regexp?.flags || ''
+ ).toString()}`;
+ break;
+ case error.keyword === 'pattern':
+ message = ` must match the pattern ${error.params.pattern}`;
+ break;
+ case error.keyword === 'format':
+ message = ` must be a valid ${error.params.format}`;
+ break;
+ case error.keyword === 'required':
+ message = ` is required`;
+ break;
+ case error.keyword === 'uniqueItemProperties':
+ message = ` must be unique`;
+ break;
+ default:
+ message = ` contains invalid data`;
+ break;
+ }
+
+ return '`' + field + '`' + message;
+ }
+}
diff --git a/apps/api/src/app/review/usecases/confirm-review/confirm-review.command.ts b/apps/api/src/app/review/usecases/confirm-review/confirm-review.command.ts
new file mode 100644
index 000000000..80e0b97c5
--- /dev/null
+++ b/apps/api/src/app/review/usecases/confirm-review/confirm-review.command.ts
@@ -0,0 +1,12 @@
+import { IsBoolean, IsDefined, IsMongoId } from 'class-validator';
+import { BaseCommand } from '../../../shared/commands/base.command';
+
+export class ConfirmReviewCommand extends BaseCommand {
+ @IsDefined()
+ @IsMongoId()
+ _uploadId: string;
+
+ @IsDefined()
+ @IsBoolean()
+ processInvalidRecords: boolean;
+}
diff --git a/apps/api/src/app/review/usecases/confirm-review/confirm-review.usecase.ts b/apps/api/src/app/review/usecases/confirm-review/confirm-review.usecase.ts
new file mode 100644
index 000000000..681db332f
--- /dev/null
+++ b/apps/api/src/app/review/usecases/confirm-review/confirm-review.usecase.ts
@@ -0,0 +1,16 @@
+import { Injectable } from '@nestjs/common';
+import { UploadEntity, UploadRepository } from '@impler/dal';
+import { ConfirmReviewCommand } from './confirm-review.command';
+import { UploadStatusEnum } from '@impler/shared';
+
+@Injectable()
+export class ConfirmReview {
+ constructor(private uploadRepository: UploadRepository) {}
+
+ execute(command: ConfirmReviewCommand): Promise {
+ return this.uploadRepository.findOneAndUpdate(
+ { _id: command._uploadId },
+ { status: UploadStatusEnum.CONFIRMED, processInvalidRecords: command.processInvalidRecords }
+ );
+ }
+}
diff --git a/apps/api/src/app/review/usecases/do-review/do-review.usecase.ts b/apps/api/src/app/review/usecases/do-review/do-review.usecase.ts
new file mode 100644
index 000000000..8faad0a82
--- /dev/null
+++ b/apps/api/src/app/review/usecases/do-review/do-review.usecase.ts
@@ -0,0 +1,52 @@
+import { FileEncodingsEnum, UploadStatusEnum } from '@impler/shared';
+import { Injectable, BadRequestException } from '@nestjs/common';
+import { ColumnRepository, UploadRepository, MappingRepository, FileEntity } from '@impler/dal';
+import { StorageService } from '../../../shared/storage/storage.service';
+import { AJVService } from '../../service/AJV.service';
+import { APIMessages } from '../../../shared/constants';
+import { FileNotExistError } from '../../../shared/errors/file-not-exist.error';
+
+@Injectable()
+export class DoReview {
+ constructor(
+ private uploadRepository: UploadRepository,
+ private storageService: StorageService,
+ private columnRepository: ColumnRepository,
+ private mappingRepository: MappingRepository,
+ private ajvService: AJVService
+ ) {}
+
+ async execute(uploadId: string) {
+ const uploadInfo = await this.uploadRepository.getUploadInformation(uploadId);
+ if (!uploadInfo) {
+ throw new BadRequestException(APIMessages.UPLOAD_NOT_FOUND);
+ }
+ if (uploadInfo.status !== UploadStatusEnum.MAPPED) {
+ throw new BadRequestException(APIMessages.FILE_MAPPING_REMAINING);
+ }
+ const allDataFileInfo = uploadInfo._allDataFileId as unknown as FileEntity;
+ const dataContent = await this.getFileContent(allDataFileInfo.path);
+ const mappings = await this.mappingRepository.find({ _uploadId: uploadId }, '_columnId columnHeading');
+ const columns = await this.columnRepository.find(
+ { _templateId: uploadInfo._templateId },
+ 'isRequired isUnique selectValues type regex'
+ );
+ const reviewData = this.ajvService.validate(columns, mappings, dataContent);
+ this.uploadRepository.update({ _id: uploadId }, { status: UploadStatusEnum.REVIEWING });
+
+ return reviewData;
+ }
+
+ async getFileContent(path): Promise {
+ try {
+ const dataContent = await this.storageService.getFileContent(path, FileEncodingsEnum.JSON);
+
+ return JSON.parse(dataContent);
+ } catch (error) {
+ if (error instanceof FileNotExistError) {
+ throw new BadRequestException(APIMessages.FILE_NOT_FOUND_IN_STORAGE);
+ }
+ throw error;
+ }
+ }
+}
diff --git a/apps/api/src/app/review/usecases/get-file-invalid-data/get-file-invalid-data.usecase.ts b/apps/api/src/app/review/usecases/get-file-invalid-data/get-file-invalid-data.usecase.ts
new file mode 100644
index 000000000..bba552b15
--- /dev/null
+++ b/apps/api/src/app/review/usecases/get-file-invalid-data/get-file-invalid-data.usecase.ts
@@ -0,0 +1,14 @@
+import { Injectable } from '@nestjs/common';
+import { FileEncodingsEnum } from '@impler/shared';
+import { StorageService } from '../../../shared/storage/storage.service';
+
+@Injectable()
+export class GetFileInvalidData {
+ constructor(private storageService: StorageService) {}
+
+ async execute(path: string) {
+ const stringContent = await this.storageService.getFileContent(path, FileEncodingsEnum.JSON);
+
+ return JSON.parse(stringContent);
+ }
+}
diff --git a/apps/api/src/app/review/usecases/get-upload-invalid-data/get-upload-invalid-data.usecase.ts b/apps/api/src/app/review/usecases/get-upload-invalid-data/get-upload-invalid-data.usecase.ts
new file mode 100644
index 000000000..e82990748
--- /dev/null
+++ b/apps/api/src/app/review/usecases/get-upload-invalid-data/get-upload-invalid-data.usecase.ts
@@ -0,0 +1,11 @@
+import { Injectable } from '@nestjs/common';
+import { UploadRepository } from '@impler/dal';
+
+@Injectable()
+export class GetUploadInvalidData {
+ constructor(private uploadRepository: UploadRepository) {}
+
+ async execute(_uploadId: string) {
+ return this.uploadRepository.getUploadInvalidDataInformation(_uploadId);
+ }
+}
diff --git a/apps/api/src/app/review/usecases/index.ts b/apps/api/src/app/review/usecases/index.ts
new file mode 100644
index 000000000..1d3ae1116
--- /dev/null
+++ b/apps/api/src/app/review/usecases/index.ts
@@ -0,0 +1,18 @@
+import { DoReview } from './do-review/do-review.usecase';
+import { SaveReviewData } from './save-review-data/save-review-data.usecase';
+import { GetUploadInvalidData } from './get-upload-invalid-data/get-upload-invalid-data.usecase';
+import { GetFileInvalidData } from './get-file-invalid-data/get-file-invalid-data.usecase';
+import { GetUpload } from '../../shared/usecases/get-upload/get-upload.usecase';
+import { ConfirmReview } from './confirm-review/confirm-review.usecase';
+import { StartProcess } from './start-process/start-process.usecase';
+
+export const USE_CASES = [
+ DoReview,
+ GetUpload,
+ StartProcess,
+ ConfirmReview,
+ SaveReviewData,
+ GetFileInvalidData,
+ GetUploadInvalidData,
+ //
+];
diff --git a/apps/api/src/app/review/usecases/save-review-data/save-review-data.usecase.ts b/apps/api/src/app/review/usecases/save-review-data/save-review-data.usecase.ts
new file mode 100644
index 000000000..288667f10
--- /dev/null
+++ b/apps/api/src/app/review/usecases/save-review-data/save-review-data.usecase.ts
@@ -0,0 +1,79 @@
+import * as XLSX from 'xlsx';
+import { Injectable } from '@nestjs/common';
+import { FileRepository, UploadRepository } from '@impler/dal';
+import { FileMimeTypesEnum } from '@impler/shared';
+import { FileNameService } from '@shared/file/name.service';
+import { StorageService } from '@shared/storage/storage.service';
+import { Defaults } from '@shared/constants';
+
+@Injectable()
+export class SaveReviewData {
+ constructor(
+ private fileNameService: FileNameService,
+ private storageService: StorageService,
+ private fileRepository: FileRepository,
+ private uploadRepository: UploadRepository
+ ) {}
+
+ async execute(_uploadId: string, invalidData: any[], validData: any[]) {
+ const _invalidDataFileId = await this.storeInvalidFile(_uploadId, invalidData);
+ const _validDataFileId = await this.storeValidFile(_uploadId, validData);
+ const _invalidCSVDataFileId = await this.storeInvalidCSVFile(_uploadId, invalidData);
+ const invalidCSVDataFileUrl = this.fileNameService.getInvalidCSVDataFileUrl(_uploadId);
+ await this.uploadRepository.update(
+ { _id: _uploadId },
+ { _invalidDataFileId, _validDataFileId, _invalidCSVDataFileId, invalidCSVDataFileUrl }
+ );
+ }
+
+ private async storeValidFile(_uploadId: string, validData: any[]): Promise {
+ if (validData.length < Defaults.DATA_LENGTH) return null;
+
+ const strinValidData = JSON.stringify(validData);
+ const validFilePath = this.fileNameService.getValidDataFilePath(_uploadId);
+ await this.storeFile(validFilePath, strinValidData);
+ const validFileName = this.fileNameService.getValidDataFileName();
+ const entry = await this.makeFileEntry(validFileName, validFilePath);
+
+ return entry._id;
+ }
+
+ private async storeInvalidFile(_uploadId: string, invalidData: any[]): Promise {
+ if (invalidData.length < Defaults.DATA_LENGTH) return null;
+
+ const stringInvalidData = JSON.stringify(invalidData);
+ const invalidFilePath = this.fileNameService.getInvalidDataFilePath(_uploadId);
+ await this.storeFile(invalidFilePath, stringInvalidData);
+ const invalidFileName = this.fileNameService.getInvalidDataFileName();
+ const entry = await this.makeFileEntry(invalidFileName, invalidFilePath);
+
+ return entry._id;
+ }
+
+ private async storeInvalidCSVFile(_uploadId: string, invalidData: any[]): Promise {
+ if (invalidData.length < Defaults.DATA_LENGTH) return null;
+
+ const ws = XLSX.utils.json_to_sheet(invalidData);
+ const invalidCSVDataContent = XLSX.utils.sheet_to_csv(ws, { FS: ',' });
+
+ const invalidCSVFilePath = this.fileNameService.getInvalidCSVDataFilePath(_uploadId);
+ await this.storeFile(invalidCSVFilePath, invalidCSVDataContent, true);
+ const invalidCSVFileName = this.fileNameService.getInvalidCSVDataFileName();
+ const entry = await this.makeFileEntry(invalidCSVFileName, invalidCSVFilePath);
+
+ return entry._id;
+ }
+
+ private async storeFile(invalidFilePath: string, data: string, isPublic = false) {
+ await this.storageService.uploadFile(invalidFilePath, data, FileMimeTypesEnum.JSON, isPublic);
+ }
+
+ private async makeFileEntry(fileName: string, filePath: string) {
+ return await this.fileRepository.create({
+ mimeType: FileMimeTypesEnum.JSON,
+ name: fileName,
+ originalName: fileName,
+ path: filePath,
+ });
+ }
+}
diff --git a/apps/api/src/app/review/usecases/start-process/start-process.command.ts b/apps/api/src/app/review/usecases/start-process/start-process.command.ts
new file mode 100644
index 000000000..c44f7c9d8
--- /dev/null
+++ b/apps/api/src/app/review/usecases/start-process/start-process.command.ts
@@ -0,0 +1,12 @@
+import { IsBoolean, IsDefined, IsMongoId } from 'class-validator';
+import { BaseCommand } from '../../../shared/commands/base.command';
+
+export class StartProcessCommand extends BaseCommand {
+ @IsDefined()
+ @IsMongoId()
+ _uploadId: string;
+
+ @IsDefined()
+ @IsBoolean()
+ processInvalidRecords: boolean;
+}
diff --git a/apps/api/src/app/review/usecases/start-process/start-process.usecase.ts b/apps/api/src/app/review/usecases/start-process/start-process.usecase.ts
new file mode 100644
index 000000000..d6e1cdf70
--- /dev/null
+++ b/apps/api/src/app/review/usecases/start-process/start-process.usecase.ts
@@ -0,0 +1,21 @@
+import { Injectable } from '@nestjs/common';
+import { UploadEntity, UploadRepository } from '@impler/dal';
+import { StartProcessCommand } from './start-process.command';
+import { QueuesEnum, UploadStatusEnum } from '@impler/shared';
+import { QueueService } from '../../../shared/storage/queue.service';
+
+@Injectable()
+export class StartProcess {
+ constructor(private uploadRepository: UploadRepository, private queueService: QueueService) {}
+
+ async execute(command: StartProcessCommand): Promise {
+ const upload = await this.uploadRepository.findOneAndUpdate(
+ { _id: command._uploadId },
+ { status: UploadStatusEnum.PROCESSING, processInvalidRecords: command.processInvalidRecords }
+ );
+
+ this.queueService.publishToQueue(QueuesEnum.PROCESS_FILE, { uploadId: command._uploadId });
+
+ return upload;
+ }
+}
diff --git a/apps/api/src/app/shared/commands/base.command.ts b/apps/api/src/app/shared/commands/base.command.ts
new file mode 100644
index 000000000..0044a4b75
--- /dev/null
+++ b/apps/api/src/app/shared/commands/base.command.ts
@@ -0,0 +1,21 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
+import { plainToClass } from 'class-transformer';
+import { validateSync } from 'class-validator';
+import { BadRequestException, flatten } from '@nestjs/common';
+
+export abstract class BaseCommand {
+ static create(this: new (...args: any[]) => T, data: T): T {
+ const convertedObject = plainToClass(this, {
+ ...data,
+ });
+
+ const errors = validateSync(convertedObject as unknown as object);
+ if (errors?.length) {
+ const mappedErrors = flatten(errors.map((item) => Object.values(item.constraints)));
+
+ throw new BadRequestException(mappedErrors);
+ }
+
+ return convertedObject;
+ }
+}
diff --git a/apps/api/src/app/shared/constants.ts b/apps/api/src/app/shared/constants.ts
new file mode 100644
index 000000000..cfb3ea917
--- /dev/null
+++ b/apps/api/src/app/shared/constants.ts
@@ -0,0 +1,23 @@
+export const APIMessages = {
+ FILE_TYPE_NOT_VALID: 'File type is not supported.',
+ FILE_IS_EMPTY: 'File is empty',
+ EMPTY_HEADING_PREFIX: 'Empty Heading',
+ INVALID_TEMPLATE_ID_CODE_SUFFIX: 'is not valid TemplateId or CODE.',
+ FILE_MAPPING_REMAINING: 'File mapping is not yet done, please finalize mapping before.',
+ UPLOAD_NOT_FOUND: 'Upload information not found with specified uploadId.',
+ FILE_NOT_FOUND_IN_STORAGE:
+ "File not found, make sure you're using the same storage provider, that you were using before.",
+ DO_MAPPING_FIRST: 'You may landed to wrong place, Please finalize mapping and proceed ahead.',
+ DO_REVIEW_FIRST: 'You may landed to wrong place, Please review data and proceed ahead.',
+ DO_CONFIRM_FIRST: 'You may landed to wrong place, Please confirm data and proceed ahead.',
+ ALREADY_CONFIRMED: '`You may landed to wrong place, This upload file is confirmed already.',
+ IN_PROGRESS: 'You may landed to wrong place, This uploaded file processing is started already.',
+ COMPLETED: 'You may landed to wrong place, This uploaded file is already completed, no more steps left to perform.',
+ PROJECT_WITH_TEMPLATE_MISSING: 'Template not found with provided ProjectId and Template',
+};
+
+export const Defaults = {
+ DATA_LENGTH: 1,
+ PAGE: 1,
+ PAGE_LIMIT: 100,
+};
diff --git a/apps/api/src/app/shared/dtos/pagination-response.dto.ts b/apps/api/src/app/shared/dtos/pagination-response.dto.ts
new file mode 100644
index 000000000..ebe43e437
--- /dev/null
+++ b/apps/api/src/app/shared/dtos/pagination-response.dto.ts
@@ -0,0 +1,34 @@
+import { ApiProperty } from '@nestjs/swagger';
+import { IsArray, IsNumber } from 'class-validator';
+
+export class PaginationResponseDto {
+ @ApiProperty({
+ description: 'Page index of the data',
+ })
+ @IsNumber()
+ page: number;
+
+ @ApiProperty({
+ description: 'Array of data',
+ })
+ @IsArray()
+ data: any[];
+
+ @ApiProperty({
+ description: 'Size of the data',
+ })
+ @IsNumber()
+ limit: number;
+
+ @ApiProperty({
+ description: 'Total number of pages',
+ })
+ @IsNumber()
+ totalPages: number;
+
+ @ApiProperty({
+ description: 'Total number of records',
+ })
+ @IsNumber()
+ totalRecords: number;
+}
diff --git a/apps/api/src/app/shared/errors/file-not-exist.error.ts b/apps/api/src/app/shared/errors/file-not-exist.error.ts
new file mode 100644
index 000000000..05e1c431a
--- /dev/null
+++ b/apps/api/src/app/shared/errors/file-not-exist.error.ts
@@ -0,0 +1,6 @@
+export class FileNotExistError extends Error {
+ constructor() {
+ super('File not found for the key provided');
+ this.name = 'NonExistingFileError';
+ }
+}
diff --git a/apps/api/src/app/shared/exceptions/document-not-found.exception.ts b/apps/api/src/app/shared/exceptions/document-not-found.exception.ts
new file mode 100644
index 000000000..46ba57e57
--- /dev/null
+++ b/apps/api/src/app/shared/exceptions/document-not-found.exception.ts
@@ -0,0 +1,7 @@
+import { NotFoundException } from '@nestjs/common';
+
+export class DocumentNotFoundException extends NotFoundException {
+ constructor(name: string, id: string, message?: string) {
+ super(message || `${name} with id ${id} does not exist`);
+ }
+}
diff --git a/apps/api/src/app/shared/exceptions/empty-file.exception.ts b/apps/api/src/app/shared/exceptions/empty-file.exception.ts
new file mode 100644
index 000000000..82153630f
--- /dev/null
+++ b/apps/api/src/app/shared/exceptions/empty-file.exception.ts
@@ -0,0 +1,8 @@
+import { BadRequestException } from '@nestjs/common';
+import { APIMessages } from '../constants';
+
+export class EmptyFileException extends BadRequestException {
+ constructor() {
+ super(APIMessages.FILE_IS_EMPTY);
+ }
+}
diff --git a/apps/api/src/app/shared/exceptions/file-not-valid.exception.ts b/apps/api/src/app/shared/exceptions/file-not-valid.exception.ts
new file mode 100644
index 000000000..3c826a3a8
--- /dev/null
+++ b/apps/api/src/app/shared/exceptions/file-not-valid.exception.ts
@@ -0,0 +1,8 @@
+import { UnprocessableEntityException } from '@nestjs/common';
+import { APIMessages } from '../constants';
+
+export class FileNotValidError extends UnprocessableEntityException {
+ constructor() {
+ super(APIMessages.FILE_TYPE_NOT_VALID);
+ }
+}
diff --git a/apps/api/src/app/shared/file/file.service.ts b/apps/api/src/app/shared/file/file.service.ts
new file mode 100644
index 000000000..934152876
--- /dev/null
+++ b/apps/api/src/app/shared/file/file.service.ts
@@ -0,0 +1,75 @@
+import * as XLSX from 'xlsx';
+import { FileEncodingsEnum, IFileInformation } from '@impler/shared';
+import { ParserOptionsArgs, parseString } from 'fast-csv';
+import { StorageService } from '../storage/storage.service';
+import { EmptyFileException } from '../exceptions/empty-file.exception';
+import { APIMessages } from '../constants';
+
+export abstract class FileService {
+ abstract getFileInformation(storageService: StorageService, storageKey: string): Promise;
+}
+
+export class CSVFileService extends FileService {
+ async getFileInformation(storageService: StorageService, storageKey: string): Promise {
+ const fileContent = await storageService.getFileContent(storageKey, FileEncodingsEnum.CSV);
+
+ return await this.getCSVInformation(fileContent, { headers: true });
+ }
+ private async getCSVInformation(fileContent: string, options?: ParserOptionsArgs): Promise {
+ return new Promise((resolve, reject) => {
+ const information: IFileInformation = {
+ data: [],
+ headings: [],
+ totalRecords: 0,
+ };
+
+ parseString(fileContent, options)
+ .on('error', reject)
+ .on('headers', (headers) => information.headings.push(...headers))
+ .on('data', (row) => information.data.push(row))
+ .on('end', () => {
+ information.totalRecords = information.data.length;
+ resolve(information);
+ });
+ });
+ }
+}
+export class ExcelFileService extends FileService {
+ async getFileInformation(storageService: StorageService, storageKey: string): Promise {
+ const fileContent = await storageService.getFileContent(storageKey, FileEncodingsEnum.EXCEL);
+
+ return this.getExcelInformation(fileContent);
+ }
+ async getExcelInformation(fileContent: string): Promise {
+ const workbookHeaders = XLSX.read(fileContent);
+ // Throw empty error if file do not have any sheets
+ if (workbookHeaders.SheetNames.length < 1) throw new EmptyFileException();
+
+ // get file headings
+ const headings = XLSX.utils.sheet_to_json(workbookHeaders.Sheets[workbookHeaders.SheetNames[0]], {
+ header: 1,
+ })[0] as string[];
+ // throw error if sheet is empty
+ if (!headings || headings.length < 1) throw new EmptyFileException();
+
+ // Refine headings by replacing empty heading
+ let emptyHeadingCount = 0;
+ const updatedHeading = [];
+ for (const headingItem of headings) {
+ if (!headingItem) {
+ emptyHeadingCount += 1;
+ updatedHeading.push(`${APIMessages.EMPTY_HEADING_PREFIX} ${emptyHeadingCount}`);
+ } else updatedHeading.push(headingItem);
+ }
+
+ const data: Record[] = XLSX.utils.sheet_to_json(
+ workbookHeaders.Sheets[workbookHeaders.SheetNames[0]]
+ );
+
+ return {
+ data,
+ headings: updatedHeading,
+ totalRecords: data.length,
+ };
+ }
+}
diff --git a/apps/api/src/app/shared/file/name.service.ts b/apps/api/src/app/shared/file/name.service.ts
new file mode 100644
index 000000000..e8a6aca9d
--- /dev/null
+++ b/apps/api/src/app/shared/file/name.service.ts
@@ -0,0 +1,48 @@
+export class FileNameService {
+ getSampleFileName(templateId: string): string {
+ return `${templateId}/sample.csv`;
+ }
+ getSampleFileUrl(templateId: string): string {
+ const fileName = this.getSampleFileName(templateId);
+
+ return [process.env.S3_LOCAL_STACK, process.env.S3_BUCKET_NAME, fileName].join('/');
+ }
+ getFileExtension(fileName: string): string {
+ return fileName.split('.').pop();
+ }
+ getUploadedFilePath(uploadId: string, fileName: string): string {
+ return `${uploadId}/${this.getUploadedFileName(fileName)}`;
+ }
+ getUploadedFileName(fileName: string): string {
+ return `uploaded.${this.getFileExtension(fileName)}`;
+ }
+ getAllJsonDataFileName(): string {
+ return `all-data.json`;
+ }
+ getAllJsonDataFilePath(uploadId: string): string {
+ return `${uploadId}/${this.getAllJsonDataFileName()}`;
+ }
+ getInvalidDataFileName(): string {
+ return `invalid-data.json`;
+ }
+ getInvalidDataFilePath(uploadId: string): string {
+ return `${uploadId}/${this.getInvalidDataFileName()}`;
+ }
+ getInvalidCSVDataFileName(): string {
+ return 'invalid-data.csv';
+ }
+ getInvalidCSVDataFilePath(uploadId: string): string {
+ return `${uploadId}/${this.getInvalidCSVDataFileName()}`;
+ }
+ getInvalidCSVDataFileUrl(uploadId: string): string {
+ const path = this.getInvalidCSVDataFilePath(uploadId);
+
+ return [process.env.S3_LOCAL_STACK, process.env.S3_BUCKET_NAME, path].join('/');
+ }
+ getValidDataFileName(): string {
+ return `valid-data.json`;
+ }
+ getValidDataFilePath(uploadId: string): string {
+ return `${uploadId}/${this.getValidDataFileName()}`;
+ }
+}
diff --git a/apps/api/src/app/shared/framework/auth.gaurd.ts b/apps/api/src/app/shared/framework/auth.gaurd.ts
new file mode 100644
index 000000000..2e5238e2c
--- /dev/null
+++ b/apps/api/src/app/shared/framework/auth.gaurd.ts
@@ -0,0 +1,19 @@
+import { ExecutionContext, Injectable, CanActivate, UnauthorizedException } from '@nestjs/common';
+import { ACCESS_KEY_NAME } from '@impler/shared';
+
+@Injectable()
+export class APIKeyGuard implements CanActivate {
+ async canActivate(context: ExecutionContext) {
+ const request = context.switchToHttp().getRequest();
+
+ const authorizationHeader = request.headers[ACCESS_KEY_NAME];
+ const API_KEY =
+ process.env[String(ACCESS_KEY_NAME).toLowerCase()] || process.env[String(ACCESS_KEY_NAME).toUpperCase()];
+
+ if (API_KEY && API_KEY !== authorizationHeader) {
+ throw new UnauthorizedException();
+ }
+
+ return true;
+ }
+}
diff --git a/apps/api/src/app/shared/framework/is-unique.validator.ts b/apps/api/src/app/shared/framework/is-unique.validator.ts
new file mode 100644
index 000000000..448e0f657
--- /dev/null
+++ b/apps/api/src/app/shared/framework/is-unique.validator.ts
@@ -0,0 +1,21 @@
+import { ValidationArguments, ValidatorConstraint, ValidatorConstraintInterface } from 'class-validator';
+import { CommonRepository, ProjectEntity } from '@impler/dal';
+
+@ValidatorConstraint({ name: 'IsUnique', async: true })
+export class UniqueValidator implements ValidatorConstraintInterface {
+ private commonRepository: CommonRepository;
+ constructor() {
+ this.commonRepository = new CommonRepository();
+ }
+
+ async validate(value: any, args: ValidationArguments) {
+ const [modelName, field] = args.constraints;
+ const count = await this.commonRepository.count(modelName, { [field]: value });
+
+ return !count;
+ }
+
+ defaultMessage(args: ValidationArguments) {
+ return `${args.value} is already taken`;
+ }
+}
diff --git a/apps/api/src/app/shared/framework/is-valid-regex.validator.ts b/apps/api/src/app/shared/framework/is-valid-regex.validator.ts
new file mode 100644
index 000000000..ec50e59fb
--- /dev/null
+++ b/apps/api/src/app/shared/framework/is-valid-regex.validator.ts
@@ -0,0 +1,18 @@
+import { ValidatorConstraint, ValidatorConstraintInterface, ValidationArguments } from 'class-validator';
+
+@ValidatorConstraint({ name: 'IsValidRegex' })
+export class IsValidRegex implements ValidatorConstraintInterface {
+ validate(text: string) {
+ try {
+ new RegExp(text);
+
+ return true;
+ } catch (error) {
+ return false;
+ }
+ }
+
+ defaultMessage(args: ValidationArguments) {
+ return `Text (${args.value}) is not valid Regular expression!`;
+ }
+}
diff --git a/apps/api/src/app/shared/helpers/common.helper.ts b/apps/api/src/app/shared/helpers/common.helper.ts
new file mode 100644
index 000000000..966998007
--- /dev/null
+++ b/apps/api/src/app/shared/helpers/common.helper.ts
@@ -0,0 +1,39 @@
+import { BadRequestException } from '@nestjs/common';
+import { APIMessages } from '../constants';
+import { PaginationResult } from '@impler/shared';
+
+export function validateNotFound(data: any, entityName: 'upload'): boolean {
+ if (data) return true;
+ else {
+ switch (entityName) {
+ case 'upload':
+ throw new BadRequestException(APIMessages.UPLOAD_NOT_FOUND);
+ default:
+ throw new BadRequestException();
+ }
+ }
+}
+
+export function paginateRecords(data: any[], page: number, limit: number): PaginationResult {
+ if (!page || page < 1) page = 1;
+ if (!limit || limit < 1) limit = 1;
+ if (!Array.isArray(data))
+ return {
+ data: [],
+ limit,
+ page,
+ totalPages: 0,
+ totalRecords: 0,
+ };
+
+ const sliceFrom = Math.max((page - 1) * limit, 0);
+ const sliceTo = Math.min(page * limit, data.length);
+
+ return {
+ data: data.slice(sliceFrom, sliceTo),
+ limit,
+ page,
+ totalPages: Math.ceil(data.length / limit),
+ totalRecords: data.length,
+ };
+}
diff --git a/apps/api/src/app/shared/helpers/file.helper.ts b/apps/api/src/app/shared/helpers/file.helper.ts
new file mode 100644
index 000000000..d2ef48710
--- /dev/null
+++ b/apps/api/src/app/shared/helpers/file.helper.ts
@@ -0,0 +1,13 @@
+import { FileMimeTypesEnum } from '@impler/shared';
+import { APIMessages } from '../constants';
+import { FileService, CSVFileService, ExcelFileService } from '../file/file.service';
+
+export const getFileService = (mimeType: string): FileService => {
+ if (mimeType === FileMimeTypesEnum.CSV) {
+ return new CSVFileService();
+ } else if (mimeType === FileMimeTypesEnum.EXCEL || mimeType === FileMimeTypesEnum.EXCELX) {
+ return new ExcelFileService();
+ }
+
+ throw new Error(APIMessages.FILE_TYPE_NOT_VALID);
+};
diff --git a/apps/api/src/app/shared/helpers/upload.helpers.ts b/apps/api/src/app/shared/helpers/upload.helpers.ts
new file mode 100644
index 000000000..7f4e2a5b4
--- /dev/null
+++ b/apps/api/src/app/shared/helpers/upload.helpers.ts
@@ -0,0 +1,22 @@
+import { UploadStatusEnum } from '@impler/shared';
+import { BadRequestException } from '@nestjs/common';
+import { APIMessages } from '../constants';
+
+export function validateUploadStatus(currentStatus: UploadStatusEnum, expectedStatus: UploadStatusEnum[]): boolean {
+ if (expectedStatus.includes(currentStatus)) return true;
+ else {
+ if (currentStatus === UploadStatusEnum.UPLOADED) {
+ throw new BadRequestException(APIMessages.DO_MAPPING_FIRST);
+ } else if (currentStatus === UploadStatusEnum.MAPPED) {
+ throw new BadRequestException(APIMessages.DO_REVIEW_FIRST);
+ } else if (currentStatus === UploadStatusEnum.REVIEWED) {
+ throw new BadRequestException(APIMessages.DO_CONFIRM_FIRST);
+ } else if (currentStatus === UploadStatusEnum.CONFIRMED) {
+ throw new BadRequestException(APIMessages.ALREADY_CONFIRMED);
+ } else if (currentStatus === UploadStatusEnum.PROCESSING) {
+ throw new BadRequestException(APIMessages.IN_PROGRESS);
+ } else if (currentStatus === UploadStatusEnum.COMPLETED) {
+ throw new BadRequestException(APIMessages.COMPLETED);
+ }
+ }
+}
diff --git a/apps/api/src/app/shared/shared.module.ts b/apps/api/src/app/shared/shared.module.ts
new file mode 100644
index 000000000..2374284e5
--- /dev/null
+++ b/apps/api/src/app/shared/shared.module.ts
@@ -0,0 +1,55 @@
+import { Module } from '@nestjs/common';
+import {
+ ColumnRepository,
+ CommonRepository,
+ DalService,
+ FileRepository,
+ MappingRepository,
+ ProjectRepository,
+ TemplateRepository,
+ UploadRepository,
+} from '@impler/dal';
+import { S3StorageService, StorageService } from './storage/storage.service';
+import { CSVFileService } from './file/file.service';
+import { FileNameService } from './file/name.service';
+
+const DAL_MODELS = [
+ ProjectRepository,
+ TemplateRepository,
+ ColumnRepository,
+ FileRepository,
+ UploadRepository,
+ MappingRepository,
+ CommonRepository,
+];
+const FILE_SERVICES = [CSVFileService, FileNameService];
+
+const dalService = new DalService();
+
+function getStorageServiceClass() {
+ return S3StorageService;
+}
+
+const PROVIDERS = [
+ {
+ provide: DalService,
+ useFactory: async () => {
+ await dalService.connect(process.env.MONGO_URL);
+
+ return dalService;
+ },
+ },
+ ...DAL_MODELS,
+ {
+ provide: StorageService,
+ useClass: getStorageServiceClass(),
+ },
+ ...FILE_SERVICES,
+];
+
+@Module({
+ imports: [],
+ providers: [...PROVIDERS],
+ exports: [...PROVIDERS],
+})
+export class SharedModule {}
diff --git a/apps/api/src/app/shared/storage/queue.service.ts b/apps/api/src/app/shared/storage/queue.service.ts
new file mode 100644
index 000000000..210b5ded4
--- /dev/null
+++ b/apps/api/src/app/shared/storage/queue.service.ts
@@ -0,0 +1,29 @@
+import { Injectable } from '@nestjs/common';
+import amqp from 'amqp-connection-manager';
+import { ProcessFileData, PublishToQueueData, QueuesEnum } from '@impler/shared';
+
+@Injectable()
+export class QueueService {
+ private connection: any;
+ private chanelWrapper: any;
+
+ constructor() {
+ this.connection = amqp.connect([process.env.RABBITMQ_CONN_URL]);
+ this.connection.on('connect', () => console.log('QueueService RabbitMQ::Connected!'));
+ this.connection.on('disconnect', (err: Error) => console.log('RabbitMQ::Disconnected.', err));
+
+ this.chanelWrapper = this.connection.createChannel({
+ json: true,
+ persistent: true,
+ });
+ }
+
+ publishToQueue(queueName: QueuesEnum.PROCESS_FILE, data: ProcessFileData): void;
+ publishToQueue(queueName: QueuesEnum, data: PublishToQueueData) {
+ if (this.connection.isConnected()) {
+ this.chanelWrapper.sendToQueue(queueName, data, { durable: false });
+ } else {
+ throw new Error('RabbitMQ connection is not established');
+ }
+ }
+}
diff --git a/apps/api/src/app/shared/storage/storage.service.ts b/apps/api/src/app/shared/storage/storage.service.ts
new file mode 100644
index 000000000..50084b416
--- /dev/null
+++ b/apps/api/src/app/shared/storage/storage.service.ts
@@ -0,0 +1,79 @@
+import { Readable } from 'stream';
+import {
+ S3Client,
+ PutObjectCommand,
+ PutObjectCommandOutput,
+ GetObjectCommand,
+ DeleteObjectCommand,
+} from '@aws-sdk/client-s3';
+import { FileNotExistError } from '../errors/file-not-exist.error';
+
+export interface IFilePath {
+ path: string;
+ name: string;
+}
+
+export abstract class StorageService {
+ abstract uploadFile(
+ key: string,
+ file: Buffer | string,
+ contentType: string,
+ isPublic?: boolean
+ ): Promise;
+ abstract getFileContent(key: string, encoding?: BufferEncoding): Promise;
+ abstract deleteFile(key: string): Promise;
+}
+
+async function streamToString(stream: Readable, encoding: BufferEncoding): Promise {
+ return await new Promise((resolve, reject) => {
+ const chunks: Uint8Array[] = [];
+ stream.on('data', (chunk) => chunks.push(chunk));
+ stream.on('error', reject);
+ stream.on('end', () => resolve(Buffer.concat(chunks).toString(encoding)));
+ });
+}
+
+export class S3StorageService implements StorageService {
+ private s3 = new S3Client({
+ region: process.env.S3_REGION,
+ endpoint: process.env.S3_LOCAL_STACK || undefined,
+ forcePathStyle: true,
+ });
+
+ async uploadFile(key: string, file: Buffer, contentType: string, isPublic = false): Promise {
+ const command = new PutObjectCommand({
+ Bucket: process.env.S3_BUCKET_NAME,
+ Key: key,
+ Body: file,
+ ACL: isPublic ? 'public-read' : 'private',
+ ContentType: contentType,
+ });
+
+ return await this.s3.send(command);
+ }
+
+ async getFileContent(key: string, encoding = 'utf8' as BufferEncoding): Promise {
+ try {
+ const command = new GetObjectCommand({
+ Bucket: process.env.S3_BUCKET_NAME,
+ Key: key,
+ });
+ const data = await this.s3.send(command);
+
+ return await streamToString(data.Body as Readable, encoding);
+ } catch (error) {
+ if (error.code === 404 || error.message === 'The specified key does not exist.') {
+ throw new FileNotExistError();
+ }
+ throw error;
+ }
+ }
+
+ async deleteFile(key: string): Promise {
+ const command = new DeleteObjectCommand({
+ Bucket: process.env.S3_BUCKET_NAME,
+ Key: key,
+ });
+ await this.s3.send(command);
+ }
+}
diff --git a/apps/api/src/app/shared/usecases/get-upload/get-upload.command.ts b/apps/api/src/app/shared/usecases/get-upload/get-upload.command.ts
new file mode 100644
index 000000000..9abd8f9b8
--- /dev/null
+++ b/apps/api/src/app/shared/usecases/get-upload/get-upload.command.ts
@@ -0,0 +1,12 @@
+import { IsDefined, IsMongoId, IsOptional, IsString } from 'class-validator';
+import { BaseCommand } from '../../commands/base.command';
+
+export class GetUploadCommand extends BaseCommand {
+ @IsDefined()
+ @IsMongoId()
+ uploadId: string;
+
+ @IsOptional()
+ @IsString()
+ select?: string;
+}
diff --git a/apps/api/src/app/shared/usecases/get-upload/get-upload.usecase.ts b/apps/api/src/app/shared/usecases/get-upload/get-upload.usecase.ts
new file mode 100644
index 000000000..f8609aaef
--- /dev/null
+++ b/apps/api/src/app/shared/usecases/get-upload/get-upload.usecase.ts
@@ -0,0 +1,12 @@
+import { Injectable } from '@nestjs/common';
+import { UploadRepository } from '@impler/dal';
+import { GetUploadCommand } from './get-upload.command';
+
+@Injectable()
+export class GetUpload {
+ constructor(private uploadRepository: UploadRepository) {}
+
+ async execute(command: GetUploadCommand) {
+ return this.uploadRepository.findOne({ _id: command.uploadId }, command.select);
+ }
+}
diff --git a/apps/api/src/app/shared/validations/valid-import-file.validation.ts b/apps/api/src/app/shared/validations/valid-import-file.validation.ts
new file mode 100644
index 000000000..05aed9323
--- /dev/null
+++ b/apps/api/src/app/shared/validations/valid-import-file.validation.ts
@@ -0,0 +1,16 @@
+// eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars
+import _whatever from 'multer';
+import { SupportedFileMimeTypes } from '@impler/shared';
+import { Injectable, PipeTransform } from '@nestjs/common';
+import { FileNotValidError } from '../exceptions/file-not-valid.exception';
+
+@Injectable()
+export class ValidImportFile implements PipeTransform {
+ transform(value: Express.Multer.File) {
+ if (!SupportedFileMimeTypes.includes(value.mimetype)) {
+ throw new FileNotValidError();
+ }
+
+ return value;
+ }
+}
diff --git a/apps/api/src/app/shared/validations/valid-mongo-id.validation.ts b/apps/api/src/app/shared/validations/valid-mongo-id.validation.ts
new file mode 100644
index 000000000..5b1339ad8
--- /dev/null
+++ b/apps/api/src/app/shared/validations/valid-mongo-id.validation.ts
@@ -0,0 +1,17 @@
+import { CommonRepository } from '@impler/dal';
+import { BadRequestException, Injectable, PipeTransform } from '@nestjs/common';
+
+@Injectable()
+export class ValidateMongoId implements PipeTransform {
+ private commonRepository: CommonRepository;
+ constructor() {
+ this.commonRepository = new CommonRepository();
+ }
+
+ transform(value: string): string {
+ if (value && this.commonRepository.validMongoId(value)) {
+ return value;
+ }
+ throw new BadRequestException();
+ }
+}
diff --git a/apps/api/src/app/shared/validations/valid-template.validation.ts b/apps/api/src/app/shared/validations/valid-template.validation.ts
new file mode 100644
index 000000000..7b854aa3b
--- /dev/null
+++ b/apps/api/src/app/shared/validations/valid-template.validation.ts
@@ -0,0 +1,16 @@
+import { CommonRepository, TemplateRepository } from '@impler/dal';
+import { BadRequestException, Injectable, PipeTransform } from '@nestjs/common';
+import { APIMessages } from '../constants';
+
+@Injectable()
+export class ValidateTemplate implements PipeTransform {
+ constructor(private commonRepository: CommonRepository, private templateRepository: TemplateRepository) {}
+
+ async transform(value: string): Promise {
+ const isMongoId = this.commonRepository.validMongoId(value);
+ const template = await this.templateRepository.findOne(isMongoId ? { _id: value } : { code: value });
+ if (!template) throw new BadRequestException(`${value} ${APIMessages.INVALID_TEMPLATE_ID_CODE_SUFFIX}`);
+
+ return template._id;
+ }
+}
diff --git a/apps/api/src/app/template/dtos/create-template-request.dto.ts b/apps/api/src/app/template/dtos/create-template-request.dto.ts
new file mode 100644
index 000000000..d4100c3ea
--- /dev/null
+++ b/apps/api/src/app/template/dtos/create-template-request.dto.ts
@@ -0,0 +1,39 @@
+import { ApiProperty } from '@nestjs/swagger';
+import { Transform } from 'class-transformer';
+import { changeToCode } from '@impler/shared';
+import { IsDefined, IsString, Validate, IsNumber, IsUrl } from 'class-validator';
+import { UniqueValidator } from '../../shared/framework/is-unique.validator';
+
+export class CreateTemplateRequestDto {
+ @ApiProperty({
+ description: 'Name of the template',
+ })
+ @IsString()
+ @IsDefined()
+ name: string;
+
+ @ApiProperty({
+ description: 'Code of the template',
+ })
+ @IsString()
+ @IsDefined()
+ @Validate(UniqueValidator, ['Template', 'code'], {
+ message: 'Code is already taken',
+ })
+ @Transform((value) => changeToCode(value.value))
+ code: string;
+
+ @ApiProperty({
+ description: 'Callback URL of the template, gets called when sending data to the application',
+ })
+ @IsUrl()
+ @IsDefined()
+ callbackUrl: string;
+
+ @ApiProperty({
+ description: 'Size of data in rows that gets sent to the application',
+ })
+ @IsNumber()
+ @IsDefined()
+ chunkSize: number;
+}
diff --git a/apps/api/src/app/template/dtos/template-response.dto.ts b/apps/api/src/app/template/dtos/template-response.dto.ts
new file mode 100644
index 000000000..99c3a155d
--- /dev/null
+++ b/apps/api/src/app/template/dtos/template-response.dto.ts
@@ -0,0 +1,53 @@
+import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
+import { IsDefined, IsNumber, IsString } from 'class-validator';
+
+export class TemplateResponseDto {
+ @ApiPropertyOptional({
+ description: 'Id of the template',
+ })
+ @IsString()
+ @IsDefined()
+ _id?: string;
+
+ @ApiProperty({
+ description: 'Name of the template',
+ })
+ @IsString()
+ @IsDefined()
+ name: string;
+
+ @ApiProperty({
+ description: 'Code of the template',
+ })
+ @IsString()
+ @IsDefined()
+ code: string;
+
+ @ApiProperty({
+ description: 'Callback URL of the template, gets called when sending data to the application',
+ })
+ @IsString()
+ @IsDefined()
+ callbackUrl: string;
+
+ @ApiProperty({
+ description: 'Size of data in rows that gets sent to the application',
+ })
+ @IsNumber()
+ @IsDefined()
+ chunkSize: number;
+
+ @ApiProperty({
+ description: 'URL to download samle csv file',
+ })
+ @IsString()
+ @IsDefined()
+ sampleFileUrl: string;
+
+ @ApiProperty({
+ description: 'Id of project related to the template',
+ })
+ @IsString()
+ @IsDefined()
+ _projectId: string;
+}
diff --git a/apps/api/src/app/template/dtos/update-template-request.dto.ts b/apps/api/src/app/template/dtos/update-template-request.dto.ts
new file mode 100644
index 000000000..ef13a82c2
--- /dev/null
+++ b/apps/api/src/app/template/dtos/update-template-request.dto.ts
@@ -0,0 +1,39 @@
+import { ApiProperty } from '@nestjs/swagger';
+import { IsString, IsOptional, IsNumber, IsNotEmpty, IsUrl } from 'class-validator';
+
+export class UpdateTemplateRequestDto {
+ @ApiProperty({
+ description: 'Name of the template',
+ nullable: false,
+ })
+ @IsOptional()
+ name?: string;
+
+ @ApiProperty({
+ description: 'Callback URL of the template, gets called when sending data to the application',
+ nullable: false,
+ })
+ @IsUrl()
+ @IsOptional()
+ callbackUrl?: string;
+
+ @ApiProperty({
+ description: 'Size of data in rows that gets sent to the application',
+ format: 'number',
+ nullable: false,
+ })
+ @IsNumber({
+ allowNaN: false,
+ })
+ @IsOptional()
+ @IsNotEmpty()
+ chunkSize?: number;
+
+ @ApiProperty({
+ description: 'Id of project related to the template',
+ nullable: false,
+ })
+ @IsString()
+ @IsOptional()
+ _projectId?: string;
+}
diff --git a/apps/api/src/app/template/template.controller.ts b/apps/api/src/app/template/template.controller.ts
new file mode 100644
index 000000000..ec0371808
--- /dev/null
+++ b/apps/api/src/app/template/template.controller.ts
@@ -0,0 +1,121 @@
+import { Body, Controller, Delete, Get, Param, Post, Put, UseGuards } from '@nestjs/common';
+import { ApiOperation, ApiTags, ApiOkResponse, ApiSecurity } from '@nestjs/swagger';
+import { UploadEntity } from '@impler/dal';
+import { ACCESS_KEY_NAME } from '@impler/shared';
+import { DocumentNotFoundException } from '@shared/exceptions/document-not-found.exception';
+import { APIKeyGuard } from '@shared/framework/auth.gaurd';
+import { ValidateMongoId } from '@shared/validations/valid-mongo-id.validation';
+
+import { CreateTemplateRequestDto } from './dtos/create-template-request.dto';
+import { TemplateResponseDto } from './dtos/template-response.dto';
+import { UpdateTemplateRequestDto } from './dtos/update-template-request.dto';
+import { CreateTemplateCommand } from './usecases/create-template/create-template.command';
+import { CreateTemplate } from './usecases/create-template/create-template.usecase';
+import { DeleteTemplate } from './usecases/delete-template/delete-template.usecase';
+import { GetTemplates } from './usecases/get-templates/get-templates.usecase';
+import { UpdateTemplateCommand } from './usecases/update-template/update-template.command';
+import { UpdateTemplate } from './usecases/update-template/update-template.usecase';
+import { GetUploads } from './usecases/get-uploads/get-uploads.usecase';
+import { GetUploadsCommand } from './usecases/get-uploads/get-uploads.command';
+
+@Controller('/template')
+@ApiTags('Template')
+@ApiSecurity(ACCESS_KEY_NAME)
+@UseGuards(APIKeyGuard)
+export class TemplateController {
+ constructor(
+ private getTemplatesUsecase: GetTemplates,
+ private createTemplateUsecase: CreateTemplate,
+ private updateTemplateUsecase: UpdateTemplate,
+ private deleteTemplateUsecase: DeleteTemplate,
+ private getUploads: GetUploads
+ ) {}
+
+ @Get(':projectId')
+ @ApiOperation({
+ summary: 'Get project templates',
+ })
+ @ApiOkResponse({
+ type: [TemplateResponseDto],
+ })
+ getTemplates(@Param('projectId', ValidateMongoId) projectId: string): Promise {
+ return this.getTemplatesUsecase.execute(projectId);
+ }
+
+ @Post(':projectId')
+ @ApiOperation({
+ summary: 'Add template in project',
+ })
+ @ApiOkResponse({
+ type: TemplateResponseDto,
+ })
+ createTemplate(
+ @Param('projectId', ValidateMongoId) projectId: string,
+ @Body() body: CreateTemplateRequestDto
+ ): Promise {
+ return this.createTemplateUsecase.execute(
+ CreateTemplateCommand.create({
+ _projectId: projectId,
+ callbackUrl: body.callbackUrl,
+ chunkSize: body.chunkSize,
+ code: body.code,
+ name: body.name,
+ })
+ );
+ }
+
+ @Put(':templateId')
+ @ApiOperation({
+ summary: 'Update template',
+ })
+ @ApiOkResponse({
+ type: TemplateResponseDto,
+ })
+ async updateTemplate(
+ @Param('templateId', ValidateMongoId) templateId: string,
+ @Body() body: UpdateTemplateRequestDto
+ ): Promise {
+ const document = await this.updateTemplateUsecase.execute(
+ UpdateTemplateCommand.create({
+ _projectId: body._projectId,
+ callbackUrl: body.callbackUrl,
+ chunkSize: body.chunkSize,
+ name: body.name,
+ }),
+ templateId
+ );
+ if (!document) {
+ throw new DocumentNotFoundException('Template', templateId);
+ }
+
+ return document;
+ }
+
+ @Delete(':templateId')
+ @ApiOperation({
+ summary: 'Delete template',
+ })
+ @ApiOkResponse({
+ type: TemplateResponseDto,
+ })
+ async deleteTemplate(@Param('templateId', ValidateMongoId) templateId: string): Promise {
+ const document = await this.deleteTemplateUsecase.execute(templateId);
+ if (!document) {
+ throw new DocumentNotFoundException('Template', templateId);
+ }
+
+ return document;
+ }
+
+ @Get(':templateId/uploads')
+ @ApiOperation({
+ summary: 'Get all uploads information for template',
+ })
+ async getAllUploads(@Param('templateId', ValidateMongoId) templateId: string): Promise {
+ return this.getUploads.execute(
+ GetUploadsCommand.create({
+ _templateId: templateId,
+ })
+ );
+ }
+}
diff --git a/apps/api/src/app/template/template.module.ts b/apps/api/src/app/template/template.module.ts
new file mode 100644
index 000000000..acd0f4b64
--- /dev/null
+++ b/apps/api/src/app/template/template.module.ts
@@ -0,0 +1,11 @@
+import { Module } from '@nestjs/common';
+import { USE_CASES } from './usecases';
+import { TemplateController } from './template.controller';
+import { SharedModule } from '../shared/shared.module';
+
+@Module({
+ imports: [SharedModule],
+ providers: [...USE_CASES],
+ controllers: [TemplateController],
+})
+export class TemplateModule {}
diff --git a/apps/api/src/app/template/usecases/create-template/create-template.command.ts b/apps/api/src/app/template/usecases/create-template/create-template.command.ts
new file mode 100644
index 000000000..694e4e8e6
--- /dev/null
+++ b/apps/api/src/app/template/usecases/create-template/create-template.command.ts
@@ -0,0 +1,24 @@
+import { IsDefined, IsString, IsNumber } from 'class-validator';
+import { BaseCommand } from '../../../shared/commands/base.command';
+
+export class CreateTemplateCommand extends BaseCommand {
+ @IsDefined()
+ @IsString()
+ name: string;
+
+ @IsDefined()
+ @IsString()
+ code: string;
+
+ @IsString()
+ @IsDefined()
+ callbackUrl: string;
+
+ @IsNumber()
+ @IsDefined()
+ chunkSize: number;
+
+ @IsString()
+ @IsDefined()
+ _projectId: string;
+}
diff --git a/apps/api/src/app/template/usecases/create-template/create-template.usecase.ts b/apps/api/src/app/template/usecases/create-template/create-template.usecase.ts
new file mode 100644
index 000000000..5f8769046
--- /dev/null
+++ b/apps/api/src/app/template/usecases/create-template/create-template.usecase.ts
@@ -0,0 +1,12 @@
+import { Injectable } from '@nestjs/common';
+import { TemplateRepository } from '@impler/dal';
+import { CreateTemplateCommand } from './create-template.command';
+
+@Injectable()
+export class CreateTemplate {
+ constructor(private templateRepository: TemplateRepository) {}
+
+ async execute(command: CreateTemplateCommand) {
+ return this.templateRepository.create(command);
+ }
+}
diff --git a/apps/api/src/app/template/usecases/delete-template/delete-template.usecase.ts b/apps/api/src/app/template/usecases/delete-template/delete-template.usecase.ts
new file mode 100644
index 000000000..d33666314
--- /dev/null
+++ b/apps/api/src/app/template/usecases/delete-template/delete-template.usecase.ts
@@ -0,0 +1,11 @@
+import { Injectable } from '@nestjs/common';
+import { TemplateRepository } from '@impler/dal';
+
+@Injectable()
+export class DeleteTemplate {
+ constructor(private templateRepository: TemplateRepository) {}
+
+ async execute(id: string) {
+ return this.templateRepository.delete({ _id: id });
+ }
+}
diff --git a/apps/api/src/app/template/usecases/get-templates/get-templates.usecase.ts b/apps/api/src/app/template/usecases/get-templates/get-templates.usecase.ts
new file mode 100644
index 000000000..5589f1bbe
--- /dev/null
+++ b/apps/api/src/app/template/usecases/get-templates/get-templates.usecase.ts
@@ -0,0 +1,22 @@
+import { Injectable } from '@nestjs/common';
+import { TemplateRepository } from '@impler/dal';
+import { TemplateResponseDto } from '../../dtos/template-response.dto';
+
+@Injectable()
+export class GetTemplates {
+ constructor(private templateRepository: TemplateRepository) {}
+
+ async execute(projectId: string): Promise {
+ const templates = await this.templateRepository.find({ projectId });
+
+ return templates.map((template) => ({
+ _projectId: template._projectId,
+ callbackUrl: template.callbackUrl,
+ chunkSize: template.chunkSize,
+ code: template.code,
+ name: template.name,
+ sampleFileUrl: template.sampleFileUrl,
+ _id: template._id,
+ }));
+ }
+}
diff --git a/apps/api/src/app/template/usecases/get-uploads/get-uploads.command.ts b/apps/api/src/app/template/usecases/get-uploads/get-uploads.command.ts
new file mode 100644
index 000000000..fa45e3f28
--- /dev/null
+++ b/apps/api/src/app/template/usecases/get-uploads/get-uploads.command.ts
@@ -0,0 +1,12 @@
+import { IsDefined, IsMongoId, IsOptional, IsString } from 'class-validator';
+import { BaseCommand } from '../../../shared/commands/base.command';
+
+export class GetUploadsCommand extends BaseCommand {
+ @IsDefined()
+ @IsMongoId()
+ _templateId: string;
+
+ @IsOptional()
+ @IsString()
+ select?: string;
+}
diff --git a/apps/api/src/app/template/usecases/get-uploads/get-uploads.usecase.ts b/apps/api/src/app/template/usecases/get-uploads/get-uploads.usecase.ts
new file mode 100644
index 000000000..5fae99e32
--- /dev/null
+++ b/apps/api/src/app/template/usecases/get-uploads/get-uploads.usecase.ts
@@ -0,0 +1,12 @@
+import { Injectable } from '@nestjs/common';
+import { UploadRepository } from '@impler/dal';
+import { GetUploadsCommand } from './get-uploads.command';
+
+@Injectable()
+export class GetUploads {
+ constructor(private uploadRepository: UploadRepository) {}
+
+ async execute(command: GetUploadsCommand) {
+ return this.uploadRepository.find({ _templateId: command._templateId }, command.select);
+ }
+}
diff --git a/apps/api/src/app/template/usecases/index.ts b/apps/api/src/app/template/usecases/index.ts
new file mode 100644
index 000000000..584bb55f8
--- /dev/null
+++ b/apps/api/src/app/template/usecases/index.ts
@@ -0,0 +1,14 @@
+import { GetTemplates } from './get-templates/get-templates.usecase';
+import { CreateTemplate } from './create-template/create-template.usecase';
+import { UpdateTemplate } from './update-template/update-template.usecase';
+import { DeleteTemplate } from './delete-template/delete-template.usecase';
+import { GetUploads } from './get-uploads/get-uploads.usecase';
+
+export const USE_CASES = [
+ GetTemplates,
+ CreateTemplate,
+ UpdateTemplate,
+ DeleteTemplate,
+ GetUploads,
+ //
+];
diff --git a/apps/api/src/app/template/usecases/update-template/update-template.command.ts b/apps/api/src/app/template/usecases/update-template/update-template.command.ts
new file mode 100644
index 000000000..0474e19b9
--- /dev/null
+++ b/apps/api/src/app/template/usecases/update-template/update-template.command.ts
@@ -0,0 +1,26 @@
+import { IsString, IsNumber, IsOptional, IsNotEmpty, IsMongoId, Min } from 'class-validator';
+import { BaseCommand } from '../../../shared/commands/base.command';
+
+export class UpdateTemplateCommand extends BaseCommand {
+ @IsString()
+ @IsOptional()
+ name?: string;
+
+ @IsString()
+ @IsOptional()
+ callbackUrl?: string;
+
+ @IsNumber({
+ allowNaN: false,
+ })
+ @IsOptional()
+ @IsNotEmpty()
+ @Min(1)
+ chunkSize?: number;
+
+ @IsMongoId({
+ message: '_projectId is not valid',
+ })
+ @IsOptional()
+ _projectId?: string;
+}
diff --git a/apps/api/src/app/template/usecases/update-template/update-template.usecase.ts b/apps/api/src/app/template/usecases/update-template/update-template.usecase.ts
new file mode 100644
index 000000000..b96f0589d
--- /dev/null
+++ b/apps/api/src/app/template/usecases/update-template/update-template.usecase.ts
@@ -0,0 +1,12 @@
+import { Injectable } from '@nestjs/common';
+import { TemplateRepository } from '@impler/dal';
+import { UpdateTemplateCommand } from './update-template.command';
+
+@Injectable()
+export class UpdateTemplate {
+ constructor(private templateRepository: TemplateRepository) {}
+
+ async execute(command: UpdateTemplateCommand, id: string) {
+ return this.templateRepository.findOneAndUpdate({ _id: id }, command);
+ }
+}
diff --git a/apps/api/src/app/upload/dtos/upload-request.dto.ts b/apps/api/src/app/upload/dtos/upload-request.dto.ts
new file mode 100644
index 000000000..fd14b31db
--- /dev/null
+++ b/apps/api/src/app/upload/dtos/upload-request.dto.ts
@@ -0,0 +1,26 @@
+import { ApiProperty } from '@nestjs/swagger';
+import { IsJSON, IsOptional, IsString } from 'class-validator';
+
+export class UploadRequestDto {
+ @ApiProperty({
+ type: 'file',
+ required: true,
+ })
+ file: Express.Multer.File;
+
+ @ApiProperty({
+ description: 'Auth header value to send during webhook call',
+ required: false,
+ })
+ @IsOptional()
+ @IsString()
+ authHeaderValue: string;
+
+ @ApiProperty({
+ description: 'Payload to send during webhook call',
+ required: false,
+ })
+ @IsOptional()
+ @IsJSON()
+ extra: string;
+}
diff --git a/apps/api/src/app/upload/upload.controller.ts b/apps/api/src/app/upload/upload.controller.ts
new file mode 100644
index 000000000..d81327a78
--- /dev/null
+++ b/apps/api/src/app/upload/upload.controller.ts
@@ -0,0 +1,74 @@
+// eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars
+import _whatever from 'multer';
+import { Body, Controller, Get, Param, Post, UploadedFile, UseGuards, UseInterceptors } from '@nestjs/common';
+import { FileInterceptor } from '@nestjs/platform-express';
+import { ApiTags, ApiSecurity, ApiConsumes, ApiOperation, ApiParam } from '@nestjs/swagger';
+import { ACCESS_KEY_NAME } from '@impler/shared';
+
+import { APIKeyGuard } from '../shared/framework/auth.gaurd';
+import { UploadRequestDto } from './dtos/upload-request.dto';
+import { ValidImportFile } from '../shared/validations/valid-import-file.validation';
+import { MakeUploadEntry } from './usecases/make-upload-entry/make-upload-entry.usecase';
+import { MakeUploadEntryCommand } from './usecases/make-upload-entry/make-upload-entry.command';
+import { ValidateMongoId } from '../shared/validations/valid-mongo-id.validation';
+import { GetUpload } from '../shared/usecases/get-upload/get-upload.usecase';
+import { GetUploadCommand } from '../shared/usecases/get-upload/get-upload.command';
+import { ValidateTemplate } from '../shared/validations/valid-template.validation';
+
+@Controller('/upload')
+@ApiTags('Uploads')
+@ApiSecurity(ACCESS_KEY_NAME)
+@UseGuards(APIKeyGuard)
+export class UploadController {
+ constructor(private makeUploadEntry: MakeUploadEntry, private getUpload: GetUpload) {}
+
+ @Post(':template')
+ @ApiOperation({
+ summary: `Upload file to template`,
+ })
+ @ApiParam({
+ name: 'template',
+ required: true,
+ description: 'ID or CODE of the template',
+ type: 'string',
+ })
+ @ApiConsumes('multipart/form-data')
+ @UseInterceptors(FileInterceptor('file'))
+ async uploadFile(
+ @UploadedFile('file', ValidImportFile) file: Express.Multer.File,
+ @Body() body: UploadRequestDto,
+ @Param('template', ValidateTemplate) templateId: string
+ ) {
+ return await this.makeUploadEntry.execute(
+ MakeUploadEntryCommand.create({
+ file: file,
+ templateId,
+ extra: body.extra,
+ authHeaderValue: body.authHeaderValue,
+ })
+ );
+ }
+
+ @Get(':uploadId')
+ @ApiOperation({
+ summary: 'Get Upload information',
+ })
+ getUploadInformation(@Param('uploadId', ValidateMongoId) uploadId: string) {
+ return this.getUpload.execute(GetUploadCommand.create({ uploadId }));
+ }
+
+ @Get(':uploadId/headings')
+ @ApiOperation({
+ summary: 'Get headings for the uploaded file',
+ })
+ async getHeadings(@Param('uploadId', ValidateMongoId) uploadId: string): Promise {
+ const uploadInfo = await this.getUpload.execute(
+ GetUploadCommand.create({
+ uploadId,
+ select: 'headings',
+ })
+ );
+
+ return uploadInfo.headings;
+ }
+}
diff --git a/apps/api/src/app/upload/upload.module.ts b/apps/api/src/app/upload/upload.module.ts
new file mode 100644
index 000000000..f03b63a44
--- /dev/null
+++ b/apps/api/src/app/upload/upload.module.ts
@@ -0,0 +1,11 @@
+import { Module } from '@nestjs/common';
+import { USE_CASES } from './usecases';
+import { UploadController } from './upload.controller';
+import { SharedModule } from '../shared/shared.module';
+
+@Module({
+ imports: [SharedModule],
+ providers: [...USE_CASES],
+ controllers: [UploadController],
+})
+export class UploadModule {}
diff --git a/apps/api/src/app/upload/usecases/index.ts b/apps/api/src/app/upload/usecases/index.ts
new file mode 100644
index 000000000..b4a0b1774
--- /dev/null
+++ b/apps/api/src/app/upload/usecases/index.ts
@@ -0,0 +1,8 @@
+import { MakeUploadEntry } from './make-upload-entry/make-upload-entry.usecase';
+import { GetUpload } from '../../shared/usecases/get-upload/get-upload.usecase';
+
+export const USE_CASES = [
+ MakeUploadEntry,
+ GetUpload,
+ //
+];
diff --git a/apps/api/src/app/upload/usecases/make-upload-entry/add-upload-entry.command.ts b/apps/api/src/app/upload/usecases/make-upload-entry/add-upload-entry.command.ts
new file mode 100644
index 000000000..6ba553014
--- /dev/null
+++ b/apps/api/src/app/upload/usecases/make-upload-entry/add-upload-entry.command.ts
@@ -0,0 +1,36 @@
+import { IsDefined, IsString, IsOptional, IsJSON, IsArray, IsNumber } from 'class-validator';
+import { BaseCommand } from '../../../shared/commands/base.command';
+
+export class AddUploadEntryCommand extends BaseCommand {
+ @IsDefined()
+ @IsString()
+ _templateId: string;
+
+ @IsDefined()
+ @IsString()
+ _allDataFileId: string;
+
+ @IsDefined()
+ @IsString()
+ _uploadedFileId: string;
+
+ @IsDefined()
+ @IsString()
+ uploadId: string;
+
+ @IsOptional()
+ @IsJSON()
+ extra?: string;
+
+ @IsOptional()
+ @IsString()
+ authHeaderValue?: string;
+
+ @IsOptional()
+ @IsArray()
+ headings?: string[];
+
+ @IsOptional()
+ @IsNumber()
+ totalRecords?: number;
+}
diff --git a/apps/api/src/app/upload/usecases/make-upload-entry/make-upload-entry.command.ts b/apps/api/src/app/upload/usecases/make-upload-entry/make-upload-entry.command.ts
new file mode 100644
index 000000000..92a8183f8
--- /dev/null
+++ b/apps/api/src/app/upload/usecases/make-upload-entry/make-upload-entry.command.ts
@@ -0,0 +1,19 @@
+import { IsDefined, IsString, IsOptional, IsJSON } from 'class-validator';
+import { BaseCommand } from '../../../shared/commands/base.command';
+
+export class MakeUploadEntryCommand extends BaseCommand {
+ @IsDefined()
+ file: Express.Multer.File;
+
+ @IsDefined()
+ @IsString()
+ templateId: string;
+
+ @IsOptional()
+ @IsJSON()
+ extra?: string;
+
+ @IsOptional()
+ @IsString()
+ authHeaderValue?: string;
+}
diff --git a/apps/api/src/app/upload/usecases/make-upload-entry/make-upload-entry.usecase.ts b/apps/api/src/app/upload/usecases/make-upload-entry/make-upload-entry.usecase.ts
new file mode 100644
index 000000000..ecf5161c9
--- /dev/null
+++ b/apps/api/src/app/upload/usecases/make-upload-entry/make-upload-entry.usecase.ts
@@ -0,0 +1,91 @@
+import { Injectable } from '@nestjs/common';
+import { FileMimeTypesEnum, UploadStatusEnum } from '@impler/shared';
+import { CommonRepository, FileEntity, FileRepository, UploadRepository } from '@impler/dal';
+import { MakeUploadEntryCommand } from './make-upload-entry.command';
+import { FileNameService } from '../../../shared/file/name.service';
+import { StorageService } from '../../../shared/storage/storage.service';
+import { FileService } from '../../../shared/file/file.service';
+import { getFileService } from '../../../shared/helpers/file.helper';
+import { AddUploadEntryCommand } from './add-upload-entry.command';
+
+@Injectable()
+export class MakeUploadEntry {
+ constructor(
+ private uploadRepository: UploadRepository,
+ private commonRepository: CommonRepository,
+ private fileRepository: FileRepository,
+ private storageService: StorageService,
+ private fileNameService: FileNameService
+ ) {}
+
+ async execute({ file, templateId, extra, authHeaderValue }: MakeUploadEntryCommand) {
+ const uploadId = this.commonRepository.generateMongoId();
+ const fileEntity = await this.makeFileEntry(uploadId, file);
+ const fileService: FileService = getFileService(file.mimetype);
+ const fileInformation = await fileService.getFileInformation(this.storageService, fileEntity.path);
+ const allDataFile = await this.addAllDataEntry(uploadId, fileInformation.data);
+
+ return this.addUploadEntry(
+ AddUploadEntryCommand.create({
+ _templateId: templateId,
+ _uploadedFileId: fileEntity._id,
+ _allDataFileId: allDataFile._id,
+ uploadId,
+ extra,
+ authHeaderValue,
+ headings: fileInformation.headings,
+ totalRecords: fileInformation.totalRecords,
+ })
+ );
+ }
+
+ private async makeFileEntry(uploadId: string, file: Express.Multer.File): Promise {
+ const uploadedFilePath = this.fileNameService.getUploadedFilePath(uploadId, file.originalname);
+ await this.storageService.uploadFile(uploadedFilePath, file.buffer, file.mimetype);
+ const uploadedFileName = this.fileNameService.getUploadedFileName(file.originalname);
+ const fileEntry = await this.fileRepository.create({
+ mimeType: file.mimetype,
+ name: uploadedFileName,
+ originalName: file.originalname,
+ path: uploadedFilePath,
+ });
+
+ return fileEntry;
+ }
+
+ private async addUploadEntry({
+ _templateId,
+ _uploadedFileId,
+ _allDataFileId,
+ uploadId,
+ extra,
+ authHeaderValue,
+ headings,
+ totalRecords,
+ }: AddUploadEntryCommand) {
+ return this.uploadRepository.create({
+ _id: uploadId,
+ _uploadedFileId,
+ _templateId,
+ _allDataFileId,
+ extra: extra,
+ headings: Array.isArray(headings) ? headings : [],
+ status: UploadStatusEnum.UPLOADED,
+ authHeaderValue: authHeaderValue,
+ totalRecords: totalRecords || 0,
+ });
+ }
+
+ private async addAllDataEntry(uploadId: string, data: Record[]): Promise {
+ const allDataFileName = this.fileNameService.getAllJsonDataFileName();
+ const allDataFilePath = this.fileNameService.getAllJsonDataFilePath(uploadId);
+ await this.storageService.uploadFile(allDataFilePath, JSON.stringify(data), FileMimeTypesEnum.JSON);
+
+ return await this.fileRepository.create({
+ mimeType: FileMimeTypesEnum.JSON,
+ path: allDataFilePath,
+ name: allDataFileName,
+ originalName: allDataFileName,
+ });
+ }
+}
diff --git a/apps/api/src/bootstrap.ts b/apps/api/src/bootstrap.ts
new file mode 100644
index 000000000..4773f1b50
--- /dev/null
+++ b/apps/api/src/bootstrap.ts
@@ -0,0 +1,82 @@
+import './config';
+
+import { INestApplication, ValidationPipe, Logger } from '@nestjs/common';
+import * as compression from 'compression';
+import { NestFactory } from '@nestjs/core';
+import * as bodyParser from 'body-parser';
+import { ExpressAdapter } from '@nestjs/platform-express';
+import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
+import { AppModule } from './app.module';
+import { validateEnv } from './config/env-validator';
+import { ACCESS_KEY_NAME } from '@impler/shared';
+
+// Validate the ENV variables after launching SENTRY, so missing variables will report to sentry
+validateEnv();
+
+export async function bootstrap(expressApp?): Promise {
+ let app;
+ if (expressApp) {
+ app = await NestFactory.create(AppModule, new ExpressAdapter(expressApp));
+ } else {
+ app = await NestFactory.create(AppModule);
+ }
+
+ app.enableCors(corsOptionsDelegate);
+
+ app.setGlobalPrefix('v1');
+
+ app.useGlobalPipes(
+ new ValidationPipe({
+ transform: true,
+ })
+ );
+
+ app.use(bodyParser.json());
+ app.use(bodyParser.urlencoded({ extended: true }));
+
+ app.use(compression());
+
+ const options = new DocumentBuilder()
+ .setTitle('Impler API')
+ .setDescription('The Impler API description')
+ .setVersion('1.0')
+ .addApiKey(
+ {
+ type: 'apiKey', // type
+ name: ACCESS_KEY_NAME, // Name of the key to expect in header
+ in: 'header',
+ },
+ ACCESS_KEY_NAME // Name to show and used in swagger
+ )
+ .addTag('Project')
+ .build();
+ const document = SwaggerModule.createDocument(app, options);
+
+ SwaggerModule.setup('api', app, document);
+
+ if (expressApp) {
+ await app.init();
+ } else {
+ await app.listen(process.env.PORT);
+ }
+
+ Logger.log(`Started application in NODE_ENV=${process.env.NODE_ENV} on port ${process.env.PORT}`);
+
+ return app;
+}
+
+const corsOptionsDelegate = function (req, callback) {
+ const corsOptions = {
+ origin: false as boolean | string | string[],
+ preflightContinue: false,
+ allowedHeaders: ['Content-Type', ACCESS_KEY_NAME],
+ methods: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'],
+ };
+
+ if (['dev', 'test', 'local'].includes(process.env.NODE_ENV)) {
+ corsOptions.origin = '*';
+ } else {
+ corsOptions.origin = [process.env.FRONT_BASE_URL];
+ }
+ callback(null, corsOptions);
+};
diff --git a/apps/api/src/config/env-validator.ts b/apps/api/src/config/env-validator.ts
new file mode 100644
index 000000000..1efca9f6c
--- /dev/null
+++ b/apps/api/src/config/env-validator.ts
@@ -0,0 +1,23 @@
+import { port, str, url, ValidatorSpec } from 'envalid';
+import * as envalid from 'envalid';
+
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+const validators: { [K in keyof any]: ValidatorSpec } = {
+ NODE_ENV: str({
+ choices: ['dev', 'test', 'prod', 'ci', 'local'],
+ default: 'local',
+ }),
+ S3_LOCAL_STACK: str({
+ default: '',
+ }),
+ S3_BUCKET_NAME: str(),
+ S3_REGION: str(),
+ PORT: port(),
+ FRONT_BASE_URL: url(),
+ MONGO_URL: str(),
+ RABBITMQ_CONN_URL: str(),
+};
+
+export function validateEnv() {
+ envalid.cleanEnv(process.env, validators);
+}
diff --git a/apps/api/src/config/index.ts b/apps/api/src/config/index.ts
new file mode 100644
index 000000000..2e166f751
--- /dev/null
+++ b/apps/api/src/config/index.ts
@@ -0,0 +1,17 @@
+import * as dotenv from 'dotenv';
+
+dotenv.config();
+
+const envFileMapper = {
+ prod: '.env.production',
+ test: '.env.test',
+ ci: '.env.ci',
+ local: '.env',
+ dev: '.env.development',
+};
+const selectedEnvFile = envFileMapper[process.env.NODE_ENV] || '.env';
+
+const path = `${__dirname}/${process.env.E2E_RUNNER ? '..' : 'src'}/${selectedEnvFile}`;
+
+const { error } = dotenv.config({ path });
+if (error && !process.env.LAMBDA_TASK_ROOT) throw error;
diff --git a/apps/api/src/main.ts b/apps/api/src/main.ts
new file mode 100644
index 000000000..2fb9dfe34
--- /dev/null
+++ b/apps/api/src/main.ts
@@ -0,0 +1,3 @@
+import { bootstrap } from './bootstrap';
+
+bootstrap();
diff --git a/apps/api/src/types/env.d.ts b/apps/api/src/types/env.d.ts
new file mode 100644
index 000000000..6f2dbb19e
--- /dev/null
+++ b/apps/api/src/types/env.d.ts
@@ -0,0 +1,14 @@
+declare namespace NodeJS {
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ export interface ProcessEnv {
+ NODE_ENV: 'test' | 'prod' | 'dev' | 'ci' | 'local';
+ PORT: number;
+ 'ACCESS-KEY'?: string;
+ FRONT_BASE_URL: string;
+
+ MONGO_URL: string;
+ S3_LOCAL_STACK: string;
+ S3_REGION: string;
+ S3_BUCKET_NAME: string;
+ }
+}
diff --git a/apps/api/tsconfig.build.json b/apps/api/tsconfig.build.json
new file mode 100644
index 000000000..05ea22b05
--- /dev/null
+++ b/apps/api/tsconfig.build.json
@@ -0,0 +1,23 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "module": "commonjs",
+ "declaration": true,
+ "noImplicitAny": false,
+ "removeComments": true,
+ "allowSyntheticDefaultImports": true,
+ "emitDecoratorMetadata": true,
+ "experimentalDecorators": true,
+ "target": "es6",
+ "esModuleInterop": false,
+ "sourceMap": true,
+ "outDir": "./dist",
+ "baseUrl": "src",
+ "paths": {
+ "@shared/*": ["app/shared/*"],
+ },
+ "types": ["node"]
+ },
+ "include": [".eslintrc.js", "src/**/*", "src/**/*.d.ts"],
+ "exclude": ["node_modules", "**/*.spec.ts"]
+}
diff --git a/apps/api/tsconfig.json b/apps/api/tsconfig.json
new file mode 100644
index 000000000..3b3667322
--- /dev/null
+++ b/apps/api/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "module": "commonjs",
+ "allowSyntheticDefaultImports": true,
+ "emitDecoratorMetadata": true,
+ "types": ["node", "multer", "mocha", "chai"],
+ "target": "es2017",
+ "allowJs": false,
+ "esModuleInterop": false,
+ "declarationMap": true,
+ "baseUrl": "src",
+ "paths": {
+ "@shared/*": ["app/shared/*"],
+ }
+ }
+}
diff --git a/apps/queue-manager/.dockerignore b/apps/queue-manager/.dockerignore
new file mode 100644
index 000000000..3c3629e64
--- /dev/null
+++ b/apps/queue-manager/.dockerignore
@@ -0,0 +1 @@
+node_modules
diff --git a/apps/queue-manager/.eslintrc.js b/apps/queue-manager/.eslintrc.js
new file mode 100644
index 000000000..5a2cc7f1e
--- /dev/null
+++ b/apps/queue-manager/.eslintrc.js
@@ -0,0 +1,3 @@
+module.exports = {
+ extends: ['../../.eslintrc.js'],
+};
diff --git a/apps/queue-manager/nodemon.json b/apps/queue-manager/nodemon.json
new file mode 100644
index 000000000..0b841991e
--- /dev/null
+++ b/apps/queue-manager/nodemon.json
@@ -0,0 +1,6 @@
+{
+ "watch": ["src"],
+ "ext": "ts",
+ "ignore": ["src/**/*.spec.ts"],
+ "exec": "ts-node src/index.ts"
+}
diff --git a/apps/queue-manager/package.json b/apps/queue-manager/package.json
new file mode 100644
index 000000000..8257c499e
--- /dev/null
+++ b/apps/queue-manager/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "@impler/queue-manager",
+ "version": "0.1.0",
+ "author": "knovator",
+ "license": "MIT",
+ "private": true,
+ "scripts": {
+ "prebuild": "rimraf dist",
+ "preinstall": "pnpm build",
+ "format": "prettier --write \"src/**/*.ts\"",
+ "build": "cross-env node_modules/.bin/tsc -p tsconfig.build.json",
+ "start": "cross-env TZ=UTC nodemon",
+ "start:prod": "cross-env TZ=UTC node ./dist/index.js",
+ "start:dev": "cross-env TZ=UTC nodemon",
+ "precommit": "lint-staged",
+ "lint": "eslint src",
+ "lint:fix": "pnpm lint -- --fix"
+ },
+ "dependencies": {
+ "@impler/dal": "^0.1.0",
+ "@impler/shared": "^0.1.0",
+ "axios": "^0.26.1",
+ "dotenv": "^16.0.2",
+ "envalid": "^7.3.1"
+ },
+ "devDependencies": {
+ "@types/node": "^18.7.18",
+ "nodemon": "^2.0.20",
+ "rimraf": "^3.0.2",
+ "ts-node": "^10.9.1",
+ "typescript": "^4.8.3"
+ },
+ "lint-staged": {
+ "*.{js,jsx,ts,tsx}": [
+ "eslint --fix"
+ ]
+ }
+}
diff --git a/apps/queue-manager/src/.env.development b/apps/queue-manager/src/.env.development
new file mode 100644
index 000000000..fe959e4a3
--- /dev/null
+++ b/apps/queue-manager/src/.env.development
@@ -0,0 +1,8 @@
+NODE_ENV=local
+RABBITMQ_CONN_URL=amqp://guest:guest@localhost:5672
+MONGO_URL=mongodb://localhost:27017/impler-db
+
+# Storage
+S3_REGION=us-east-1
+S3_LOCAL_STACK=http://localhost:4566
+S3_BUCKET_NAME=impler
diff --git a/apps/queue-manager/src/.env.production b/apps/queue-manager/src/.env.production
new file mode 100644
index 000000000..fe959e4a3
--- /dev/null
+++ b/apps/queue-manager/src/.env.production
@@ -0,0 +1,8 @@
+NODE_ENV=local
+RABBITMQ_CONN_URL=amqp://guest:guest@localhost:5672
+MONGO_URL=mongodb://localhost:27017/impler-db
+
+# Storage
+S3_REGION=us-east-1
+S3_LOCAL_STACK=http://localhost:4566
+S3_BUCKET_NAME=impler
diff --git a/apps/queue-manager/src/.env.test b/apps/queue-manager/src/.env.test
new file mode 100644
index 000000000..fe959e4a3
--- /dev/null
+++ b/apps/queue-manager/src/.env.test
@@ -0,0 +1,8 @@
+NODE_ENV=local
+RABBITMQ_CONN_URL=amqp://guest:guest@localhost:5672
+MONGO_URL=mongodb://localhost:27017/impler-db
+
+# Storage
+S3_REGION=us-east-1
+S3_LOCAL_STACK=http://localhost:4566
+S3_BUCKET_NAME=impler
diff --git a/apps/queue-manager/src/.example.env b/apps/queue-manager/src/.example.env
new file mode 100644
index 000000000..fe959e4a3
--- /dev/null
+++ b/apps/queue-manager/src/.example.env
@@ -0,0 +1,8 @@
+NODE_ENV=local
+RABBITMQ_CONN_URL=amqp://guest:guest@localhost:5672
+MONGO_URL=mongodb://localhost:27017/impler-db
+
+# Storage
+S3_REGION=us-east-1
+S3_LOCAL_STACK=http://localhost:4566
+S3_BUCKET_NAME=impler
diff --git a/apps/queue-manager/src/bootstrap.ts b/apps/queue-manager/src/bootstrap.ts
new file mode 100644
index 000000000..8b7067f12
--- /dev/null
+++ b/apps/queue-manager/src/bootstrap.ts
@@ -0,0 +1,44 @@
+import './config/env-config';
+import amqp, { ChannelWrapper } from 'amqp-connection-manager';
+import { ProcessFileConsumer } from './consumers';
+import { QueuesEnum } from '@impler/shared';
+import { DalService } from '@impler/dal';
+import { IAmqpConnectionManager } from 'amqp-connection-manager/dist/esm/AmqpConnectionManager';
+import { validateEnv } from './config/env-validator';
+
+let connection: IAmqpConnectionManager, chanelWrapper: ChannelWrapper;
+
+validateEnv();
+
+export async function bootstrap() {
+ // conenct dal service
+ const dalService = new DalService();
+ await dalService.connect(process.env.MONGO_URL);
+
+ // connect to amqp rabbitmq server
+ connection = amqp.connect([process.env.RABBITMQ_CONN_URL]);
+ connection.on('connect', () => console.log('QueueManager RabbitMQ::Connected!'));
+ connection.on('disconnect', (err: Error) => console.log('RabbitMQ::Disconnected.', err));
+
+ // create channel
+ chanelWrapper = connection.createChannel({
+ json: true,
+ });
+
+ // initialize consumers
+ const processFileConsumer = new ProcessFileConsumer();
+
+ // add queues to channel
+ chanelWrapper.addSetup((channel) => {
+ return Promise.all([
+ channel.assertQueue(QueuesEnum.PROCESS_FILE, {
+ durable: false,
+ }),
+ channel.consume(QueuesEnum.PROCESS_FILE, processFileConsumer.message.bind(processFileConsumer), { noAck: true }),
+ ]);
+ });
+}
+
+export function publishToQueue(queueName: QueuesEnum, data: any) {
+ chanelWrapper.sendToQueue(queueName, data);
+}
diff --git a/apps/queue-manager/src/config/env-config.ts b/apps/queue-manager/src/config/env-config.ts
new file mode 100644
index 000000000..f82be2f2e
--- /dev/null
+++ b/apps/queue-manager/src/config/env-config.ts
@@ -0,0 +1,17 @@
+import * as dotenv from 'dotenv';
+
+dotenv.config();
+
+const envFileMapper = {
+ prod: '.env.production',
+ test: '.env.test',
+ ci: '.env.ci',
+ local: '.env',
+ dev: '.env.development',
+};
+const selectedEnvFile = envFileMapper[process.env.NODE_ENV] || '.env';
+
+const path = `${__dirname}/${process.env.E2E_RUNNER ? '..' : '..'}/${selectedEnvFile}`;
+
+const { error } = dotenv.config({ path });
+if (error && !process.env.LAMBDA_TASK_ROOT) throw error;
diff --git a/apps/queue-manager/src/config/env-validator.ts b/apps/queue-manager/src/config/env-validator.ts
new file mode 100644
index 000000000..5f3afb0f1
--- /dev/null
+++ b/apps/queue-manager/src/config/env-validator.ts
@@ -0,0 +1,21 @@
+import { str, ValidatorSpec } from 'envalid';
+import * as envalid from 'envalid';
+
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+const validators: { [K in keyof any]: ValidatorSpec } = {
+ NODE_ENV: str({
+ choices: ['dev', 'test', 'prod', 'ci', 'local'],
+ default: 'local',
+ }),
+ MONGO_URL: str(),
+ RABBITMQ_CONN_URL: str(),
+ S3_LOCAL_STACK: str({
+ default: '',
+ }),
+ S3_BUCKET_NAME: str(),
+ S3_REGION: str(),
+};
+
+export function validateEnv() {
+ envalid.cleanEnv(process.env, validators);
+}
diff --git a/apps/queue-manager/src/consumers/base.consumer.ts b/apps/queue-manager/src/consumers/base.consumer.ts
new file mode 100644
index 000000000..09197caab
--- /dev/null
+++ b/apps/queue-manager/src/consumers/base.consumer.ts
@@ -0,0 +1,3 @@
+export abstract class BaseConsumer {
+ abstract message(data: any): void;
+}
diff --git a/apps/queue-manager/src/consumers/index.ts b/apps/queue-manager/src/consumers/index.ts
new file mode 100644
index 000000000..6846af556
--- /dev/null
+++ b/apps/queue-manager/src/consumers/index.ts
@@ -0,0 +1 @@
+export * from './process-file';
diff --git a/apps/queue-manager/src/consumers/process-file.ts b/apps/queue-manager/src/consumers/process-file.ts
new file mode 100644
index 000000000..f82b115b5
--- /dev/null
+++ b/apps/queue-manager/src/consumers/process-file.ts
@@ -0,0 +1,229 @@
+import axios from 'axios';
+import {
+ FileEncodingsEnum,
+ ProcessFileCachedData,
+ ProcessFileData,
+ StorageService,
+ StatusEnum,
+ UploadStatusEnum,
+ QueuesEnum,
+} from '@impler/shared';
+import { FileEntity, UploadRepository, TemplateRepository, WebhookLogRepository, WebhookLogEntity } from '@impler/dal';
+import { BaseConsumer } from './base.consumer';
+import { getStorageServiceClass } from '../helpers/storage.helper';
+import { publishToQueue } from '../bootstrap';
+import {
+ ISendDataParameters,
+ IBuildSendDataParameters,
+ IGetNextDataParameters,
+ ISendData,
+} from '../types/file-processing.types';
+
+const MIN_LIMIT = 0;
+const DEFAULT_PAGE = 1;
+
+export class ProcessFileConsumer extends BaseConsumer {
+ private templateRepository: TemplateRepository = new TemplateRepository();
+ private uploadRepository: UploadRepository = new UploadRepository();
+ private webhookLogRepository: WebhookLogRepository = new WebhookLogRepository();
+ private storageService: StorageService = getStorageServiceClass();
+
+ async message(message) {
+ const data = JSON.parse(message.content) as ProcessFileData;
+ const uploadId = data.uploadId;
+ const cachedData = data.cache || (await this.getInitialCachedData(uploadId));
+
+ if (cachedData) {
+ // Get valid data information
+ let validDataJSON: null | any[] = null;
+ if (cachedData.validDataFilePath) {
+ const validDataContent = await this.storageService.getFileContent(
+ cachedData.validDataFilePath,
+ FileEncodingsEnum.JSON
+ );
+ validDataJSON = JSON.parse(validDataContent);
+ }
+
+ // Get invalid data information
+ let invalidDataJSON: null | any[] = null;
+ if (cachedData.processInvalidRecords && cachedData.invalidDataFilePath) {
+ const invalidDataContent = await this.storageService.getFileContent(
+ cachedData.invalidDataFilePath,
+ FileEncodingsEnum.JSON
+ );
+ invalidDataJSON = JSON.parse(invalidDataContent);
+ }
+
+ const sendData = this.buildSendData({
+ chunkSize: cachedData.chunkSize,
+ data: cachedData.isInvalidRecords ? invalidDataJSON : validDataJSON,
+ page: cachedData.page || DEFAULT_PAGE,
+ isInvalidRecords: cachedData.isInvalidRecords,
+ template: cachedData.code,
+ uploadId,
+ extra: cachedData.extra,
+ });
+
+ const response = await this.makeApiCall({ data: sendData, method: 'POST', url: cachedData.callbackUrl });
+ this.makeResponseEntry(response);
+
+ const nextCachedData = this.getNextData({
+ validData: validDataJSON,
+ invalidData: invalidDataJSON,
+ ...cachedData,
+ });
+
+ if (nextCachedData) {
+ // Make next call
+ publishToQueue(QueuesEnum.PROCESS_FILE, {
+ uploadId,
+ cache: nextCachedData,
+ });
+ } else {
+ // Processing is done
+ this.finalizeUpload(uploadId);
+ }
+ }
+ }
+
+ private async makeApiCall({ data, method, url }: ISendDataParameters): Promise> {
+ const baseResponse: Partial = {
+ _uploadId: data.uploadId,
+ callDate: new Date(),
+ pageNumber: data.page,
+ };
+ try {
+ const response = await axios({
+ method,
+ url,
+ data,
+ });
+
+ baseResponse.responseStatusCode = response.status;
+ baseResponse.status = StatusEnum.SUCCEED;
+
+ return baseResponse;
+ } catch (error) {
+ baseResponse.status = StatusEnum.FAILED;
+ if (axios.isAxiosError(error)) {
+ if (error.response) {
+ baseResponse.failedReason = 'Application Error';
+ baseResponse.responseStatusCode = error.response.status;
+ } else if (error.request) {
+ baseResponse.failedReason = 'Network Error';
+ baseResponse.responseStatusCode = error.request.status;
+ } else {
+ baseResponse.failedReason = error.message;
+ baseResponse.responseStatusCode = 400;
+ }
+ } else {
+ baseResponse.failedReason = error.message;
+ baseResponse.responseStatusCode = 400;
+ }
+
+ return baseResponse;
+ }
+ }
+
+ private buildSendData({
+ data,
+ page = DEFAULT_PAGE,
+ chunkSize,
+ isInvalidRecords,
+ template,
+ uploadId,
+ extra = '',
+ }: IBuildSendDataParameters): ISendData {
+ const slicedData = data.slice(
+ Math.max((page - DEFAULT_PAGE) * chunkSize, MIN_LIMIT),
+ Math.min((page + DEFAULT_PAGE) * chunkSize, data.length)
+ );
+
+ return {
+ data: slicedData,
+ extra: extra ? JSON.parse(extra) : '',
+ isInvalidRecords,
+ page,
+ pageSize: slicedData.length,
+ template,
+ totalPages: this.getTotalPages(data.length, chunkSize),
+ totalRecords: data.length,
+ uploadId,
+ };
+ }
+
+ private getNextData({
+ validData,
+ page,
+ chunkSize,
+ invalidData,
+ isInvalidRecords,
+ ...rest
+ }: IGetNextDataParameters): ProcessFileCachedData | null {
+ const baseData = {
+ chunkSize,
+ page: page + DEFAULT_PAGE,
+ isInvalidRecords: isInvalidRecords || false,
+ ...rest,
+ };
+ if (!isInvalidRecords && Array.isArray(validData) && validData.length > page * chunkSize) {
+ // there is more valid data available to send on next page
+ return {
+ ...baseData,
+ page: page + DEFAULT_PAGE,
+ isInvalidRecords: false,
+ };
+ } else if (!isInvalidRecords && Array.isArray(invalidData) && invalidData.length > MIN_LIMIT) {
+ // valid data are completed, invalid-data is available, so now move to invalid data
+ return {
+ ...baseData,
+ page: 1,
+ isInvalidRecords: true,
+ };
+ } else if (isInvalidRecords && Array.isArray(invalidData) && invalidData.length > page * chunkSize) {
+ // currently processing invalid data, and there is more invalid data available to send
+ return {
+ ...baseData,
+ page: page + DEFAULT_PAGE,
+ isInvalidRecords: true,
+ };
+ }
+
+ return null;
+ }
+
+ private getTotalPages(totalRecords, pageSize): number {
+ return Math.ceil(totalRecords / pageSize);
+ }
+
+ private async getInitialCachedData(_uploadId: string): Promise {
+ // Get Upload Information
+ const uploadata = await this.uploadRepository.getUploadProcessInformation(_uploadId);
+
+ if (!uploadata._validDataFileId && !uploadata._invalidDataFileId) return null;
+
+ // Get template information
+ const templateData = await this.templateRepository.findById(uploadata._templateId, 'callbackUrl chunkSize code');
+
+ return {
+ _templateId: uploadata._templateId,
+ callbackUrl: templateData.callbackUrl,
+ chunkSize: templateData.chunkSize,
+ code: templateData.code,
+ isInvalidRecords: uploadata._validDataFileId ? false : true,
+ invalidDataFilePath: (uploadata._invalidDataFileId as unknown as FileEntity)?.path,
+ page: 1,
+ processInvalidRecords: uploadata.processInvalidRecords,
+ validDataFilePath: (uploadata._validDataFileId as unknown as FileEntity)?.path,
+ extra: uploadata.extra,
+ };
+ }
+
+ private async makeResponseEntry(data: Partial) {
+ return await this.webhookLogRepository.create(data);
+ }
+
+ private async finalizeUpload(uploadId: string) {
+ return await this.uploadRepository.update({ _id: uploadId }, { status: UploadStatusEnum.COMPLETED });
+ }
+}
diff --git a/apps/queue-manager/src/helpers/storage.helper.ts b/apps/queue-manager/src/helpers/storage.helper.ts
new file mode 100644
index 000000000..5c0d02999
--- /dev/null
+++ b/apps/queue-manager/src/helpers/storage.helper.ts
@@ -0,0 +1,11 @@
+import { S3StorageService, StorageService } from '@impler/shared';
+
+let storageService: StorageService;
+
+// Implementing singleton pattern for storage service
+export function getStorageServiceClass() {
+ if (storageService) return storageService;
+ storageService = new S3StorageService();
+
+ return storageService;
+}
diff --git a/apps/queue-manager/src/index.ts b/apps/queue-manager/src/index.ts
new file mode 100644
index 000000000..2fb9dfe34
--- /dev/null
+++ b/apps/queue-manager/src/index.ts
@@ -0,0 +1,3 @@
+import { bootstrap } from './bootstrap';
+
+bootstrap();
diff --git a/apps/queue-manager/src/types/env.d.ts b/apps/queue-manager/src/types/env.d.ts
new file mode 100644
index 000000000..59171da87
--- /dev/null
+++ b/apps/queue-manager/src/types/env.d.ts
@@ -0,0 +1,10 @@
+declare namespace NodeJS {
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ export interface ProcessEnv {
+ MONGO_URL: string;
+ RABBITMQ_CONN_URL: string;
+ S3_LOCAL_STACK: string;
+ S3_REGION: string;
+ S3_BUCKET_NAME: string;
+ }
+}
diff --git a/apps/queue-manager/src/types/file-processing.types.ts b/apps/queue-manager/src/types/file-processing.types.ts
new file mode 100644
index 000000000..8c7b664ff
--- /dev/null
+++ b/apps/queue-manager/src/types/file-processing.types.ts
@@ -0,0 +1,37 @@
+import { ProcessFileCachedData } from '@impler/shared';
+
+export interface ISendDataParameters {
+ data: ISendData;
+ url: string;
+ method: 'POST';
+}
+export interface IBuildSendDataParameters {
+ data: any[];
+ page: number;
+ chunkSize: number;
+ isInvalidRecords: boolean;
+ template: string;
+ uploadId: string;
+ extra?: string;
+}
+export interface IGetNextDataParameters extends ProcessFileCachedData {
+ validData: any[];
+ invalidData: any[];
+}
+
+export interface ISendDataResponse {
+ statusCode: number;
+ status: 'FAILED' | 'SUCCEED';
+ failedReason?: string;
+}
+export interface ISendData {
+ template: string;
+ uploadId: string;
+ data: any[];
+ totalRecords: number;
+ totalPages: number;
+ page: number;
+ pageSize: number;
+ extra: string;
+ isInvalidRecords: boolean;
+}
diff --git a/apps/queue-manager/tsconfig.build.json b/apps/queue-manager/tsconfig.build.json
new file mode 100644
index 000000000..3109babaf
--- /dev/null
+++ b/apps/queue-manager/tsconfig.build.json
@@ -0,0 +1,13 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "module": "commonjs",
+ "target": "es6",
+ "declaration": true,
+ "noImplicitAny": false,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "types": ["node"]
+ },
+ "include": ["src/**/*"]
+}
diff --git a/apps/queue-manager/tsconfig.json b/apps/queue-manager/tsconfig.json
new file mode 100644
index 000000000..2e0513159
--- /dev/null
+++ b/apps/queue-manager/tsconfig.json
@@ -0,0 +1,6 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "types": ["node"]
+ }
+}
diff --git a/apps/widget-demo/.example.env b/apps/widget-demo/.example.env
new file mode 100644
index 000000000..39539fe45
--- /dev/null
+++ b/apps/widget-demo/.example.env
@@ -0,0 +1,3 @@
+VITE_PROJECT_ID=
+VITE_ACCESS_TOKEN=
+VITE_TEMPLATE=
\ No newline at end of file
diff --git a/apps/widget-demo/.gitignore b/apps/widget-demo/.gitignore
new file mode 100644
index 000000000..a547bf36d
--- /dev/null
+++ b/apps/widget-demo/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/apps/widget-demo/index.html b/apps/widget-demo/index.html
new file mode 100644
index 000000000..0a6d08158
--- /dev/null
+++ b/apps/widget-demo/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+ Widget Demo
+
+
+
+
+
+
+
diff --git a/apps/widget-demo/package.json b/apps/widget-demo/package.json
new file mode 100644
index 000000000..c69c0a18f
--- /dev/null
+++ b/apps/widget-demo/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "@impler/widget-demo",
+ "version": "0.1.0",
+ "author": "knovator",
+ "license": "MIT",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "start": "vite",
+ "start:dev": "vite",
+ "prebuild": "rimraf dist",
+ "build": "tsc && vite build",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "@impler/react": "^0.1.0",
+ "react": "18.2.0",
+ "react-dom": "18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.21",
+ "@types/react-dom": "^18.0.6",
+ "@vitejs/plugin-react": "^2.2.0",
+ "rimraf": "^3.0.2",
+ "typescript": "^4.8.4",
+ "vite": "^3.2.3"
+ }
+}
\ No newline at end of file
diff --git a/apps/widget-demo/public/vite.svg b/apps/widget-demo/public/vite.svg
new file mode 100644
index 000000000..e7b8dfb1b
--- /dev/null
+++ b/apps/widget-demo/public/vite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/apps/widget-demo/src/App.tsx b/apps/widget-demo/src/App.tsx
new file mode 100644
index 000000000..2740f4c5b
--- /dev/null
+++ b/apps/widget-demo/src/App.tsx
@@ -0,0 +1,13 @@
+import { Button } from '@impler/react';
+
+export const App = () => {
+ return (
+
+
+
+ );
+};
diff --git a/apps/widget-demo/src/main.tsx b/apps/widget-demo/src/main.tsx
new file mode 100644
index 000000000..3f2a34f65
--- /dev/null
+++ b/apps/widget-demo/src/main.tsx
@@ -0,0 +1,9 @@
+import React from 'react';
+import ReactDOM from 'react-dom/client';
+import { App } from './App';
+
+ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
+
+
+
+);
diff --git a/apps/widget-demo/src/vite-env.d.ts b/apps/widget-demo/src/vite-env.d.ts
new file mode 100644
index 000000000..8c012e64c
--- /dev/null
+++ b/apps/widget-demo/src/vite-env.d.ts
@@ -0,0 +1,13 @@
+/* eslint-disable @typescript-eslint/naming-convention */
+///
+
+interface ImportMetaEnv {
+ readonly VITE_PROJECT_ID: string;
+ readonly VITE_ACCESS_TOKEN: string;
+ readonly VITE_TEMPLATE: string;
+ // more env variables...
+}
+
+interface ImportMeta {
+ readonly env: ImportMetaEnv;
+}
diff --git a/apps/widget-demo/tsconfig.json b/apps/widget-demo/tsconfig.json
new file mode 100644
index 000000000..3d0a51a86
--- /dev/null
+++ b/apps/widget-demo/tsconfig.json
@@ -0,0 +1,21 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": ["DOM", "DOM.Iterable", "ESNext"],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx"
+ },
+ "include": ["src"],
+ "references": [{ "path": "./tsconfig.node.json" }]
+}
diff --git a/apps/widget-demo/tsconfig.node.json b/apps/widget-demo/tsconfig.node.json
new file mode 100644
index 000000000..9d31e2aed
--- /dev/null
+++ b/apps/widget-demo/tsconfig.node.json
@@ -0,0 +1,9 @@
+{
+ "compilerOptions": {
+ "composite": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "allowSyntheticDefaultImports": true
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/apps/widget-demo/vite.config.ts b/apps/widget-demo/vite.config.ts
new file mode 100644
index 000000000..627a31962
--- /dev/null
+++ b/apps/widget-demo/vite.config.ts
@@ -0,0 +1,7 @@
+import { defineConfig } from 'vite';
+import react from '@vitejs/plugin-react';
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [react()],
+});
diff --git a/apps/widget/.eslintrc.js b/apps/widget/.eslintrc.js
new file mode 100644
index 000000000..0f7d8d40d
--- /dev/null
+++ b/apps/widget/.eslintrc.js
@@ -0,0 +1,38 @@
+module.exports = {
+ rules: {
+ 'func-names': 'off',
+ 'react/jsx-props-no-spreading': 'off',
+ 'react/no-array-index-key': 'off',
+ 'no-empty-pattern': 'off',
+ '@typescript-eslint/explicit-module-boundary-types': 'off',
+ 'react/no-unescaped-entities': 'off',
+ 'react/jsx-closing-bracket-location': 'off',
+ '@typescript-eslint/ban-types': 'off',
+ 'react/jsx-wrap-multilines': 'off',
+ 'jsx-a11y/anchor-is-valid': 'off',
+ 'promise/catch-or-return': 'off',
+ 'react/jsx-one-expression-per-line': 'off',
+ '@typescript-eslint/no-explicit-any': 'off',
+ 'jsx-a11y/aria-role': 'off',
+ 'jsx-a11y/no-static-element-interactions': 'off',
+ 'react/require-default-props': 'off',
+ 'react/no-danger': 'off',
+ 'jsx-a11y/click-events-have-key-events': 'off',
+ '@typescript-eslint/naming-convention': [
+ 'error',
+ {
+ filter: '_',
+ selector: 'variableLike',
+ leadingUnderscore: 'allow',
+ format: ['PascalCase', 'camelCase', 'UPPER_CASE'],
+ },
+ ],
+ },
+ ignorePatterns: ['craco.config.js'],
+ extends: ['../../.eslintrc.js'],
+ parserOptions: {
+ project: './tsconfig.json',
+ ecmaVersion: 2020,
+ sourceType: 'module',
+ },
+};
diff --git a/apps/widget/.example.env b/apps/widget/.example.env
new file mode 100644
index 000000000..b4ab84278
--- /dev/null
+++ b/apps/widget/.example.env
@@ -0,0 +1 @@
+REACT_APP_API_URL=http://localhost:3000
\ No newline at end of file
diff --git a/apps/widget/.gitignore b/apps/widget/.gitignore
new file mode 100644
index 000000000..4c9ae0ca3
--- /dev/null
+++ b/apps/widget/.gitignore
@@ -0,0 +1,27 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# production
+/build
+
+storybook-static
+# misc
+.DS_Store
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+cypress/videos
+cypress/screenshots
diff --git a/apps/widget/.storybook/main.js b/apps/widget/.storybook/main.js
new file mode 100644
index 000000000..3742746be
--- /dev/null
+++ b/apps/widget/.storybook/main.js
@@ -0,0 +1,8 @@
+module.exports = {
+ stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'],
+ addons: ['@storybook/addon-essentials'],
+ framework: '@storybook/react',
+ features: {
+ emotionAlias: false,
+ },
+};
diff --git a/apps/widget/.storybook/preview-head.html b/apps/widget/.storybook/preview-head.html
new file mode 100644
index 000000000..5935506f7
--- /dev/null
+++ b/apps/widget/.storybook/preview-head.html
@@ -0,0 +1,3 @@
+
+
+
diff --git a/apps/widget/craco.config.js b/apps/widget/craco.config.js
new file mode 100644
index 000000000..05e70caae
--- /dev/null
+++ b/apps/widget/craco.config.js
@@ -0,0 +1,14 @@
+const path = require('path');
+module.exports = {
+ webpack: {
+ alias: {
+ '@store': path.resolve(__dirname, './src/store'),
+ '@config': path.resolve(__dirname, './src/config'),
+ '@ui': path.resolve(__dirname, './src/design-system'),
+ '@types': path.resolve(__dirname, './src/types'),
+ '@icons': path.resolve(__dirname, './src/icons/index.ts'),
+ '@util': path.resolve(__dirname, './src/util/index.ts'),
+ '@hooks': path.resolve(__dirname, './src/hooks'),
+ },
+ },
+};
diff --git a/apps/widget/env.sh b/apps/widget/env.sh
new file mode 100755
index 000000000..e8ce8621b
--- /dev/null
+++ b/apps/widget/env.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+# Recreate config file
+rm -rf ./env-config.js
+touch ./env-config.js
+
+# Add assignment
+echo "window._env_ = {" >> ./env-config.js
+
+# Read each line in .env file
+# Each line represents key=value pairs
+while read -r line || [[ -n "$line" ]];
+do
+ # Split env variables by character `=`
+ if printf '%s\n' "$line" | grep -q -e '='; then
+ varname=$(printf '%s\n' "$line" | sed -e 's/=.*//')
+ varvalue=$(printf '%s\n' "$line" | sed -e 's/^[^=]*=//')
+ fi
+
+ # Read value of current variable if exists as Environment variable
+ value=$(printf '%s\n' "${!varname}")
+ # Otherwise use value from .env file
+ [[ -z $value ]] && value=${varvalue}
+
+ # Append configuration property to JS file
+ echo " $varname: \"$value\"," >> ./env-config.js
+done < .env
+
+echo "}" >> ./env-config.js
diff --git a/apps/widget/package.json b/apps/widget/package.json
new file mode 100644
index 000000000..6990cefd6
--- /dev/null
+++ b/apps/widget/package.json
@@ -0,0 +1,71 @@
+{
+ "name": "@impler/widget",
+ "version": "0.1.0",
+ "author": "knovator",
+ "license": "MIT",
+ "private": true,
+ "scripts": {
+ "start": "cross-env PORT=3500 BROWSER=none craco start",
+ "start:dev": "cross-env PORT=3500 BROWSER=none craco start",
+ "preinstall": "pnpm build",
+ "prebuild": "rimraf build",
+ "build": "craco build",
+ "precommit": "lint-staged",
+ "eject": "craco eject",
+ "lint": "eslint src",
+ "storybook": "start-storybook -p 6006 -s public",
+ "build-storybook": "build-storybook -s public",
+ "envsetup": "chmod +x ./env.sh && ./env.sh && mv env-config.js ./public/env-config.js",
+ "envsetup:docker": "chmod +x ./env.sh && ./env.sh && mv ./env-config.js ./build/env-config.js",
+ "start:static:build": "pnpm envsetup:docker && http-server build -p 4500 --proxy http://localhost:4500?",
+ "start:docker": "pnpm build && pnpm start:static:build"
+ },
+ "browserslist": {
+ "production": [
+ ">0.2%",
+ "not dead",
+ "not op_mini all"
+ ],
+ "development": [
+ "last 1 chrome version",
+ "last 1 firefox version",
+ "last 1 safari version"
+ ]
+ },
+ "lint-staged": {
+ "*.{js,jsx,ts,tsx}": [
+ "eslint"
+ ]
+ },
+ "dependencies": {
+ "@craco/craco": "^6.4.5",
+ "@emotion/react": "^11.10.5",
+ "@impler/client": "^0.1.0",
+ "@impler/shared": "^0.1.0",
+ "@mantine/core": "^5.6.3",
+ "@mantine/dropzone": "^5.6.3",
+ "@mantine/notifications": "5.6.3",
+ "@storybook/addon-essentials": "^6.5.13",
+ "@storybook/react": "^6.5.13",
+ "@tanstack/react-query": "^4.14.5",
+ "axios": "^0.26.1",
+ "cross-env": "^7.0.3",
+ "file-saver": "^2.0.5",
+ "http-server": "^14.1.1",
+ "react": "18.2.0",
+ "react-dom": "18.2.0",
+ "react-hook-form": "^7.39.1",
+ "react-router-dom": "^6.4.2",
+ "react-scripts": "5.0.1",
+ "rimraf": "^3.0.2",
+ "web-vitals": "^3.0.4",
+ "webfontloader": "^1.6.28",
+ "webpack-dev-server": "^4.11.1"
+ },
+ "devDependencies": {
+ "@types/file-saver": "^2.0.5",
+ "@types/react": "^18.0.21",
+ "@types/react-dom": "^18.0.6",
+ "typescript": "^4.8.3"
+ }
+}
diff --git a/apps/widget/public/arrow.svg b/apps/widget/public/arrow.svg
new file mode 100644
index 000000000..b6af7db86
--- /dev/null
+++ b/apps/widget/public/arrow.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/apps/widget/public/favicon.ico b/apps/widget/public/favicon.ico
new file mode 100644
index 000000000..a11777cc4
Binary files /dev/null and b/apps/widget/public/favicon.ico differ
diff --git a/apps/widget/public/index.html b/apps/widget/public/index.html
new file mode 100644
index 000000000..3f9e0c0c8
--- /dev/null
+++ b/apps/widget/public/index.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Impler Widget
+
+
+
+
+ You need to enable JavaScript to run this app.
+
+
+
+
+
+
diff --git a/apps/widget/public/logo192.png b/apps/widget/public/logo192.png
new file mode 100644
index 000000000..fc44b0a37
Binary files /dev/null and b/apps/widget/public/logo192.png differ
diff --git a/apps/widget/public/logo512.png b/apps/widget/public/logo512.png
new file mode 100644
index 000000000..a4e47a654
Binary files /dev/null and b/apps/widget/public/logo512.png differ
diff --git a/apps/widget/public/manifest.json b/apps/widget/public/manifest.json
new file mode 100644
index 000000000..32173287a
--- /dev/null
+++ b/apps/widget/public/manifest.json
@@ -0,0 +1,25 @@
+{
+ "short_name": "Impler",
+ "name": "Impler",
+ "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/apps/widget/public/robots.txt b/apps/widget/public/robots.txt
new file mode 100644
index 000000000..e9e57dc4d
--- /dev/null
+++ b/apps/widget/public/robots.txt
@@ -0,0 +1,3 @@
+# https://www.robotstxt.org/robotstxt.html
+User-agent: *
+Disallow:
diff --git a/apps/widget/src/components/App.tsx b/apps/widget/src/components/App.tsx
new file mode 100644
index 000000000..306a0b3a1
--- /dev/null
+++ b/apps/widget/src/components/App.tsx
@@ -0,0 +1,44 @@
+import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';
+import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
+import { NotificationsProvider } from '@mantine/notifications';
+import { MantineProvider } from '@mantine/core';
+import { CONTEXT_PATH, mantineConfig, variables } from '@config';
+import { WidgetShell } from './ApplicationShell';
+import { Container } from './Common/Container';
+import { Widget } from './widget';
+
+export function App() {
+ const queryClient = new QueryClient({
+ defaultOptions: {
+ queries: {
+ refetchOnWindowFocus: false,
+ refetchOnReconnect: false,
+ retry: false,
+ staleTime: variables.twentyFourHoursInMs,
+ },
+ },
+ });
+
+ return (
+
+
+
+
+
+
+
+
+
+
+ }
+ />
+
+
+
+
+
+ );
+}
diff --git a/apps/widget/src/components/ApplicationShell.tsx b/apps/widget/src/components/ApplicationShell.tsx
new file mode 100644
index 000000000..bfe8abb4c
--- /dev/null
+++ b/apps/widget/src/components/ApplicationShell.tsx
@@ -0,0 +1,52 @@
+import { useEffect } from 'react';
+import { Global } from '@emotion/react';
+
+export function WidgetShell({ children }: { children: JSX.Element }) {
+ const WrapperComponent = inIframe() ? TransparentShell : MockPreviewShell;
+
+ return {children} ;
+}
+
+function TransparentShell({ children }: { children: JSX.Element }) {
+ return {children}
;
+}
+
+function MockPreviewShell({ children }: { children: JSX.Element }) {
+ useEffect(() => {
+ if (document.querySelector('body')) {
+ (document.querySelector('body') as HTMLBodyElement).style.width = 'auto';
+ }
+ }, []);
+
+ return (
+
+
+ {children}
+
+ );
+}
+
+function inIframe() {
+ try {
+ return window.self !== window.top;
+ } catch (e) {
+ return true;
+ }
+}
diff --git a/apps/widget/src/components/Common/Container/Container.tsx b/apps/widget/src/components/Common/Container/Container.tsx
new file mode 100644
index 000000000..884753369
--- /dev/null
+++ b/apps/widget/src/components/Common/Container/Container.tsx
@@ -0,0 +1,107 @@
+import { useEffect, useState, PropsWithChildren } from 'react';
+import * as WebFont from 'webfontloader';
+import { useParams } from 'react-router-dom';
+import { Global } from '@emotion/react';
+import { API_URL, colors } from '@config';
+import { Provider } from '../Provider';
+import { ParentWindow } from '@util';
+import { useAuthentication } from '@hooks/useAuthentication';
+import { ApiService } from '@impler/client';
+import { EventTypesEnum, MessageHandlerDataType } from '@types';
+import { IInitPayload, IShowPayload } from '@impler/shared';
+
+let api: ApiService;
+
+export function Container({ children }: PropsWithChildren<{}>) {
+ if (!api) api = new ApiService(API_URL);
+ const { projectId = '' } = useParams<{ projectId: string }>();
+ const [showWidget, setShowWidget] = useState(false);
+ const [primaryPayload, setPrimaryPayload] = useState();
+ const [secondaryPayload, setSecondaryPayload] = useState();
+ const { isAuthenticated, refetch } = useAuthentication({ api, projectId, template: primaryPayload?.template });
+
+ useEffect(() => {
+ WebFont.load({
+ google: {
+ families: ['Lato'],
+ },
+ });
+ }, []);
+
+ useEffect(() => {
+ if (process.env.NODE_ENV === 'test') {
+ // eslint-disable-next-line
+ (window as any).initHandler = messageEventHandler;
+ }
+
+ window.addEventListener('message', messageEventHandler);
+
+ ParentWindow.Ready();
+
+ return () => window.removeEventListener('message', messageEventHandler);
+ }, []);
+
+ function messageEventHandler({ data }: { data?: MessageHandlerDataType }) {
+ if (data && data.type === EventTypesEnum.INIT_IFRAME) {
+ setPrimaryPayload(data.value);
+ if (data.value?.accessToken) {
+ api.setAuthorizationToken(data.value.accessToken);
+ }
+ refetch();
+ }
+ if (data && data.type === EventTypesEnum.SHOW_WIDGET) {
+ setShowWidget(true);
+ setSecondaryPayload(data.value);
+ }
+ }
+
+ if (!isAuthenticated || !showWidget) return null;
+
+ return (
+ <>
+
+ {primaryPayload ? (
+
+ {children}
+
+ ) : null}
+ >
+ );
+}
diff --git a/apps/widget/src/components/Common/Container/index.ts b/apps/widget/src/components/Common/Container/index.ts
new file mode 100644
index 000000000..8a1103ffa
--- /dev/null
+++ b/apps/widget/src/components/Common/Container/index.ts
@@ -0,0 +1 @@
+export * from './Container';
diff --git a/apps/widget/src/components/Common/Footer/Footer.tsx b/apps/widget/src/components/Common/Footer/Footer.tsx
new file mode 100644
index 000000000..a0a9aaa0c
--- /dev/null
+++ b/apps/widget/src/components/Common/Footer/Footer.tsx
@@ -0,0 +1,60 @@
+import { Group } from '@mantine/core';
+import { Button } from '@ui/Button';
+import { TEXTS } from '@config';
+import { PhasesEum } from '@types';
+
+interface IFooterProps {
+ active: PhasesEum;
+ primaryButtonLoading?: boolean;
+ secondaryButtonLoading?: boolean;
+ onPrevClick: () => void;
+ onNextClick: () => void;
+}
+
+export function Footer(props: IFooterProps) {
+ const { active, onNextClick, onPrevClick, primaryButtonLoading, secondaryButtonLoading } = props;
+
+ const FooterActions = {
+ [PhasesEum.UPLOAD]: (
+
+ {TEXTS.PHASE1.SEE_MAPPING}
+
+ ),
+ [PhasesEum.MAPPING]: (
+ <>
+
+ {TEXTS.PHASE2.UPLOAD_AGAIN}
+
+
+ {TEXTS.PHASE2.SEE_REVIEW}
+
+ >
+ ),
+ [PhasesEum.REVIEW]: (
+ <>
+
+ {TEXTS.PHASE2.UPLOAD_AGAIN}
+
+
+ {TEXTS.PHASE3.CONFIRM_UPLOAD}
+
+ >
+ ),
+ [PhasesEum.COMPLETE]: (
+ <>
+
+ {TEXTS.PHASE4.CLOSE}
+
+
+ {TEXTS.PHASE2.UPLOAD_AGAIN}
+
+ >
+ ),
+ };
+
+ return (
+
+ {FooterActions[active]}
+
+ );
+}
diff --git a/apps/widget/src/components/Common/Footer/index.ts b/apps/widget/src/components/Common/Footer/index.ts
new file mode 100644
index 000000000..ddcc5a9cd
--- /dev/null
+++ b/apps/widget/src/components/Common/Footer/index.ts
@@ -0,0 +1 @@
+export * from './Footer';
diff --git a/apps/widget/src/components/Common/Heading/Heading.tsx b/apps/widget/src/components/Common/Heading/Heading.tsx
new file mode 100644
index 000000000..58e9cc30c
--- /dev/null
+++ b/apps/widget/src/components/Common/Heading/Heading.tsx
@@ -0,0 +1,41 @@
+import { Group, Title } from '@mantine/core';
+import { Stepper } from '@ui/Stepper';
+import { TEXTS } from '@config';
+import { PhasesEum } from '@types';
+
+interface IHeadingProps {
+ active: PhasesEum;
+}
+
+const Titles = {
+ [PhasesEum.UPLOAD]: TEXTS.TITLES.UPLOAD,
+ [PhasesEum.MAPPING]: TEXTS.TITLES.MAPPING,
+ [PhasesEum.REVIEW]: TEXTS.TITLES.REVIEW,
+ [PhasesEum.COMPLETE]: TEXTS.TITLES.COMPLETE,
+};
+
+const Steps = [
+ {
+ label: TEXTS.STEPS.UPLOAD,
+ },
+ {
+ label: TEXTS.STEPS.MAPPING,
+ },
+ {
+ label: TEXTS.STEPS.REVIEW,
+ },
+ {
+ label: TEXTS.STEPS.COMPLETE,
+ },
+];
+
+export function Heading(props: IHeadingProps) {
+ const { active } = props;
+
+ return (
+
+ {Titles[active]}
+
+
+ );
+}
diff --git a/apps/widget/src/components/Common/Heading/index.ts b/apps/widget/src/components/Common/Heading/index.ts
new file mode 100644
index 000000000..6406e7b07
--- /dev/null
+++ b/apps/widget/src/components/Common/Heading/index.ts
@@ -0,0 +1 @@
+export * from './Heading';
diff --git a/apps/widget/src/components/Common/Layout/Layout.tsx b/apps/widget/src/components/Common/Layout/Layout.tsx
new file mode 100644
index 000000000..c8f4919ce
--- /dev/null
+++ b/apps/widget/src/components/Common/Layout/Layout.tsx
@@ -0,0 +1,21 @@
+import { PropsWithChildren } from 'react';
+import { Heading } from 'components/Common/Heading';
+import useStyles from './Styles';
+import { PhasesEum } from '@types';
+
+interface ILayoutProps {
+ active: PhasesEum;
+}
+
+export function Layout(props: PropsWithChildren) {
+ const { classes } = useStyles();
+ const { children, active } = props;
+
+ return (
+
+ {/* Heading */}
+
+
{children}
+
+ );
+}
diff --git a/apps/widget/src/components/Common/Layout/Styles.tsx b/apps/widget/src/components/Common/Layout/Styles.tsx
new file mode 100644
index 000000000..f7726c22e
--- /dev/null
+++ b/apps/widget/src/components/Common/Layout/Styles.tsx
@@ -0,0 +1,28 @@
+/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */
+import { createStyles, MantineTheme } from '@mantine/core';
+
+export const getRootStyles = (theme: MantineTheme): React.CSSProperties => ({
+ paddingRight: 24,
+ paddingLeft: 24,
+ paddingBottom: 24,
+ border: '1px solid transparent',
+ display: 'flex',
+ flexDirection: 'column',
+ height: '100%',
+});
+
+export const getContainerStyles = (theme: MantineTheme): React.CSSProperties => ({
+ flexDirection: 'column',
+ width: '100%',
+ alignItems: 'unset',
+ flexGrow: 1,
+ display: 'flex',
+ gap: theme.spacing.md,
+});
+
+export default createStyles((theme: MantineTheme, params, getRef): Record => {
+ return {
+ root: getRootStyles(theme),
+ container: getContainerStyles(theme),
+ };
+});
diff --git a/apps/widget/src/components/Common/Layout/index.ts b/apps/widget/src/components/Common/Layout/index.ts
new file mode 100644
index 000000000..9877e7f4a
--- /dev/null
+++ b/apps/widget/src/components/Common/Layout/index.ts
@@ -0,0 +1 @@
+export * from './Layout';
diff --git a/apps/widget/src/components/Common/Provider/Provider.tsx b/apps/widget/src/components/Common/Provider/Provider.tsx
new file mode 100644
index 000000000..45a1e698b
--- /dev/null
+++ b/apps/widget/src/components/Common/Provider/Provider.tsx
@@ -0,0 +1,34 @@
+import { PropsWithChildren } from 'react';
+import { ApiService } from '@impler/client';
+import ImplerContextProvider from '@store/impler.context';
+import APIContextProvider from '@store/api.context';
+import AppContextProvider from '@store/app.context';
+
+interface IProviderProps {
+ // api-context
+ api: ApiService;
+ // impler-context
+ projectId: string;
+ template?: string;
+ accessToken?: string;
+ extra?: string;
+ authHeaderValue?: string;
+}
+
+export function Provider(props: PropsWithChildren) {
+ const { api, projectId, template, accessToken, extra, authHeaderValue, children } = props;
+
+ return (
+
+
+ {children}
+
+
+ );
+}
diff --git a/apps/widget/src/components/Common/Provider/index.ts b/apps/widget/src/components/Common/Provider/index.ts
new file mode 100644
index 000000000..505094109
--- /dev/null
+++ b/apps/widget/src/components/Common/Provider/index.ts
@@ -0,0 +1 @@
+export * from './Provider';
diff --git a/apps/widget/src/components/widget/Phases/ConfirmModal/ConfirmModal.tsx b/apps/widget/src/components/widget/Phases/ConfirmModal/ConfirmModal.tsx
new file mode 100644
index 000000000..7b4e6714f
--- /dev/null
+++ b/apps/widget/src/components/widget/Phases/ConfirmModal/ConfirmModal.tsx
@@ -0,0 +1,36 @@
+import { Warning } from '@icons';
+import { colors, TEXTS } from '@config';
+import { Button } from '@ui/Button';
+import { Group, Modal as MantineModal, Text, Title } from '@mantine/core';
+import { replaceVariablesInString, numberFormatter } from '@impler/shared';
+
+interface IConfirmModalProps {
+ opened: boolean;
+ wrongDataCount: number;
+ onClose: () => void;
+ onConfirm: (exempt: boolean) => void;
+}
+
+export function ConfirmModal(props: IConfirmModalProps) {
+ const { opened, onClose, wrongDataCount, onConfirm } = props;
+
+ return (
+
+
+
+
+ {replaceVariablesInString(TEXTS.CONFIRM_MODAL.title, { count: numberFormatter(wrongDataCount) })}
+
+
+ {TEXTS.CONFIRM_MODAL.subTitle}
+
+
+ onConfirm(false)} variant="outline">
+ {TEXTS.CONFIRM_MODAL.EXEMPT_CONTINUE}
+
+ onConfirm(true)}>{TEXTS.CONFIRM_MODAL.KEEP_CONTINUE}
+
+
+
+ );
+}
diff --git a/apps/widget/src/components/widget/Phases/ConfirmModal/index.ts b/apps/widget/src/components/widget/Phases/ConfirmModal/index.ts
new file mode 100644
index 000000000..353d4b1ef
--- /dev/null
+++ b/apps/widget/src/components/widget/Phases/ConfirmModal/index.ts
@@ -0,0 +1 @@
+export * from './ConfirmModal';
diff --git a/apps/widget/src/components/widget/Phases/Phase1/Phase1.tsx b/apps/widget/src/components/widget/Phases/Phase1/Phase1.tsx
new file mode 100644
index 000000000..b0228c40a
--- /dev/null
+++ b/apps/widget/src/components/widget/Phases/Phase1/Phase1.tsx
@@ -0,0 +1,97 @@
+import { TEXTS } from '@config';
+import { Select } from '@ui/Select';
+import { Button } from '@ui/Button';
+import { Dropzone } from '@ui/Dropzone';
+import { LoadingOverlay } from '@ui/LoadingOverlay';
+import { Group } from '@mantine/core';
+import { Download } from '@icons';
+import useStyles from './Styles';
+import { Footer } from 'components/Common/Footer';
+import { usePhase1 } from '@hooks/Phase1/usePhase1';
+import { Controller } from 'react-hook-form';
+import { PhasesEum } from '@types';
+
+interface IPhase1Props {
+ onNextClick: () => void;
+}
+
+export function Phase1(props: IPhase1Props) {
+ const { classes } = useStyles();
+ const { onNextClick: goNext } = props;
+ const {
+ showSelectTemplate,
+ onSubmit,
+ trigger,
+ control,
+ templates,
+ isInitialDataLoaded,
+ isUploadLoading,
+ onDownload,
+ isDownloadInProgress,
+ } = usePhase1({
+ goNext,
+ });
+
+ return (
+ <>
+
+
+ {showSelectTemplate && (
+ (
+ {
+ field.onChange(value);
+ trigger('template');
+ }}
+ value={field.value}
+ ref={field.ref}
+ />
+ )}
+ />
+ )}
+
+ } onClick={onDownload}>
+ {TEXTS.PHASE1.DOWNLOAD_SAMPLE}
+
+
+
+
+ (
+ field.onChange(selectedFile[0])}
+ onClear={() => field.onChange(undefined)}
+ title={TEXTS.PHASE1.SELECT_FILE}
+ file={field.value}
+ error={fieldState.error?.message}
+ />
+ )}
+ />
+
+ {}}
+ active={PhasesEum.UPLOAD}
+ />
+ >
+ );
+}
diff --git a/apps/widget/src/components/widget/Phases/Phase1/Styles.tsx b/apps/widget/src/components/widget/Phases/Phase1/Styles.tsx
new file mode 100644
index 000000000..b21fd8b78
--- /dev/null
+++ b/apps/widget/src/components/widget/Phases/Phase1/Styles.tsx
@@ -0,0 +1,38 @@
+/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */
+import { createStyles, MantineTheme } from '@mantine/core';
+import { colors } from '@config';
+
+export const getContainerStyles = (theme: MantineTheme): React.CSSProperties => ({
+ flexDirection: 'column',
+ width: '100%',
+ alignItems: 'unset',
+});
+
+export const getTemplateContainerStyles = (theme: MantineTheme): React.CSSProperties => ({
+ justifyContent: 'space-between',
+ alignItems: 'flex-end',
+ width: '100%',
+});
+
+export const getDownloadTemplateStyles = (theme: MantineTheme): React.CSSProperties => ({
+ width: '50%',
+});
+
+export const getFooterStyles = (theme: MantineTheme): React.CSSProperties => ({
+ alignSelf: 'flex-end',
+});
+
+export const getDropzoneStyles = (theme: MantineTheme): React.CSSProperties => ({
+ flexGrow: 1,
+ display: 'flex',
+ flexDirection: 'column',
+});
+
+export default createStyles((theme: MantineTheme, params, getRef): Record => {
+ return {
+ container: getContainerStyles(theme),
+ templateContainer: getTemplateContainerStyles(theme),
+ download: getDownloadTemplateStyles(theme),
+ dropzone: getDropzoneStyles(theme),
+ };
+});
diff --git a/apps/widget/src/components/widget/Phases/Phase1/index.ts b/apps/widget/src/components/widget/Phases/Phase1/index.ts
new file mode 100644
index 000000000..c3e04fd88
--- /dev/null
+++ b/apps/widget/src/components/widget/Phases/Phase1/index.ts
@@ -0,0 +1 @@
+export * from './Phase1';
diff --git a/apps/widget/src/components/widget/Phases/Phase2/MappingHeading/MappingHeading.tsx b/apps/widget/src/components/widget/Phases/Phase2/MappingHeading/MappingHeading.tsx
new file mode 100644
index 000000000..4feb53c5f
--- /dev/null
+++ b/apps/widget/src/components/widget/Phases/Phase2/MappingHeading/MappingHeading.tsx
@@ -0,0 +1,21 @@
+import React from 'react';
+import { TEXTS } from '@config';
+import useStyles from './Styles';
+import { Group, Text } from '@mantine/core';
+
+export const MappingHeading = React.forwardRef((props, ref) => {
+ const { classes } = useStyles();
+
+ return (
+
+
+
+ {TEXTS.PHASE2.NAME_IN_SCHEMA_TITLE}
+
+
+ {TEXTS.PHASE2.NAME_IN_SHEET_TITLE}
+
+
+
+ );
+});
diff --git a/apps/widget/src/components/widget/Phases/Phase2/MappingHeading/Styles.tsx b/apps/widget/src/components/widget/Phases/Phase2/MappingHeading/Styles.tsx
new file mode 100644
index 000000000..ca415acf1
--- /dev/null
+++ b/apps/widget/src/components/widget/Phases/Phase2/MappingHeading/Styles.tsx
@@ -0,0 +1,17 @@
+/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */
+import { createStyles, MantineTheme } from '@mantine/core';
+
+export const getTextWrapperStyles = (theme: MantineTheme): React.CSSProperties => ({
+ [`@media (max-width: ${theme.breakpoints.md}px)`]: {
+ width: '100%',
+ },
+ [`@media (min-width: ${theme.breakpoints.md}px)`]: {
+ width: '70%',
+ },
+});
+
+export default createStyles((theme: MantineTheme, params, getRef): Record => {
+ return {
+ textWrapper: getTextWrapperStyles(theme),
+ };
+});
diff --git a/apps/widget/src/components/widget/Phases/Phase2/MappingHeading/index.ts b/apps/widget/src/components/widget/Phases/Phase2/MappingHeading/index.ts
new file mode 100644
index 000000000..f9f8ff5ec
--- /dev/null
+++ b/apps/widget/src/components/widget/Phases/Phase2/MappingHeading/index.ts
@@ -0,0 +1 @@
+export * from './MappingHeading';
diff --git a/apps/widget/src/components/widget/Phases/Phase2/Phase2.tsx b/apps/widget/src/components/widget/Phases/Phase2/Phase2.tsx
new file mode 100644
index 000000000..5535c0d36
--- /dev/null
+++ b/apps/widget/src/components/widget/Phases/Phase2/Phase2.tsx
@@ -0,0 +1,76 @@
+import { MappingItem } from '@ui/MappingItem';
+import { Footer } from 'components/Common/Footer';
+import useStyles from './Styles';
+import { useEffect, useRef, useState } from 'react';
+import { usePhase2 } from '@hooks/Phase2/usePhase2';
+import { PhasesEum } from '@types';
+import { Controller } from 'react-hook-form';
+import { MappingHeading } from './MappingHeading';
+import { LoadingOverlay } from '@ui/LoadingOverlay';
+
+interface IPhase2Props {
+ onPrevClick: () => void;
+ onNextClick: () => void;
+}
+
+const defaulWrappertHeight = 200;
+export function Phase2(props: IPhase2Props) {
+ const { classes } = useStyles();
+ const { onPrevClick, onNextClick } = props;
+ const [wrapperHeight, setWrapperHeight] = useState(defaulWrappertHeight);
+ const { headings, mappings, control, onSubmit, isInitialDataLoaded, isMappingFinalizing } = usePhase2({
+ goNext: onNextClick,
+ });
+ const wrapperRef = useRef() as React.MutableRefObject;
+ const titlesRef = useRef() as React.MutableRefObject;
+
+ useEffect(() => {
+ // setting wrapper height
+ setWrapperHeight(
+ wrapperRef.current.getBoundingClientRect().height - titlesRef.current.getBoundingClientRect().height
+ );
+ }, []);
+
+ return (
+ <>
+
+
+ {/* Heading */}
+
+ {/* Mapping Items */}
+
+ {Array.isArray(mappings) &&
+ mappings.map((mappingItem, index) => (
+ (
+
+ )}
+ />
+ ))}
+
+
+
+
+ >
+ );
+}
diff --git a/apps/widget/src/components/widget/Phases/Phase2/Styles.tsx b/apps/widget/src/components/widget/Phases/Phase2/Styles.tsx
new file mode 100644
index 000000000..72dd345ce
--- /dev/null
+++ b/apps/widget/src/components/widget/Phases/Phase2/Styles.tsx
@@ -0,0 +1,16 @@
+/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */
+import { createStyles, MantineTheme } from '@mantine/core';
+
+export const getMappingWrapperStyles = (theme: MantineTheme): React.CSSProperties => ({
+ overflowY: 'auto',
+ display: 'flex',
+ flexDirection: 'column',
+ gap: '15px',
+ paddingRight: 5,
+});
+
+export default createStyles((theme: MantineTheme, params, getRef): Record => {
+ return {
+ mappingWrapper: getMappingWrapperStyles(theme),
+ };
+});
diff --git a/apps/widget/src/components/widget/Phases/Phase2/index.ts b/apps/widget/src/components/widget/Phases/Phase2/index.ts
new file mode 100644
index 000000000..d3acb53a2
--- /dev/null
+++ b/apps/widget/src/components/widget/Phases/Phase2/index.ts
@@ -0,0 +1 @@
+export * from './Phase2';
diff --git a/apps/widget/src/components/widget/Phases/Phase3/Phase3.tsx b/apps/widget/src/components/widget/Phases/Phase3/Phase3.tsx
new file mode 100644
index 000000000..c5b07730a
--- /dev/null
+++ b/apps/widget/src/components/widget/Phases/Phase3/Phase3.tsx
@@ -0,0 +1,93 @@
+import { colors, TEXTS } from '@config';
+import { usePhase3 } from '@hooks/Phase3/usePhase3';
+import { Download, Warning } from '@icons';
+import { Group, Text } from '@mantine/core';
+import { PhasesEum } from '@types';
+import { Button } from '@ui/Button';
+import { LoadingOverlay } from '@ui/LoadingOverlay';
+import { Pagination } from '@ui/Pagination';
+import { Table } from '@ui/Table';
+import { Footer } from 'components/Common/Footer';
+import { useRef, useState, useEffect } from 'react';
+import { ConfirmModal } from '../ConfirmModal';
+import useStyles from './Styles';
+
+interface IPhase3Props {
+ onNextClick: (count: number) => void;
+ onPrevClick: () => void;
+}
+
+export function Phase3(props: IPhase3Props) {
+ const { classes } = useStyles();
+ const { onNextClick, onPrevClick } = props;
+ const [showConfirmModal, setShowConfirmModal] = useState(false);
+ const {
+ onPageChange,
+ onExportData,
+ heaings,
+ isInitialDataLoaded,
+ reviewData,
+ page,
+ totalPages,
+ totalData,
+ onConfirmReview,
+ isConfirmReviewLoading,
+ } = usePhase3({ onNext: onNextClick });
+ const tableWrapperRef = useRef() as React.MutableRefObject;
+ const [tableWrapperDimensions, setTableWrapperDimentions] = useState({
+ height: 200,
+ width: 500,
+ });
+
+ useEffect(() => {
+ // setting wrapper height
+ setTableWrapperDimentions({
+ height: tableWrapperRef.current.getBoundingClientRect().height,
+ width: tableWrapperRef.current.getBoundingClientRect().width,
+ });
+ }, []);
+
+ const onConfirmClick = () => {
+ setShowConfirmModal(true);
+ };
+
+ return (
+ <>
+
+
+
+
+ {TEXTS.PHASE3.INVALID_DATA_INFO}
+
+ } onClick={onExportData}>
+ {TEXTS.PHASE3.EXPORT_DATA}
+
+
+
+
+
+
+
+
+ setShowConfirmModal(false)}
+ opened={showConfirmModal}
+ wrongDataCount={totalData}
+ />
+ >
+ );
+}
diff --git a/apps/widget/src/components/widget/Phases/Phase3/Styles.tsx b/apps/widget/src/components/widget/Phases/Phase3/Styles.tsx
new file mode 100644
index 000000000..9ad5453fa
--- /dev/null
+++ b/apps/widget/src/components/widget/Phases/Phase3/Styles.tsx
@@ -0,0 +1,27 @@
+/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */
+import { createStyles, MantineTheme } from '@mantine/core';
+import { colors } from '@config';
+
+export const getContainerStyles = (theme: MantineTheme): React.CSSProperties => ({
+ flexDirection: 'column',
+ width: '100%',
+ alignItems: 'unset',
+});
+
+export const getTextContainerStyles = (theme: MantineTheme): React.CSSProperties => ({
+ justifyContent: 'space-between',
+});
+
+export const getWarningIconStyles = (theme: MantineTheme): React.CSSProperties => ({
+ backgroundColor: colors.lightDanger,
+ borderRadius: '100%',
+ padding: 2,
+});
+
+export default createStyles((theme: MantineTheme, params, getRef): Record => {
+ return {
+ container: getContainerStyles(theme),
+ textContainer: getTextContainerStyles(theme),
+ warningIcon: getWarningIconStyles(theme),
+ };
+});
diff --git a/apps/widget/src/components/widget/Phases/Phase3/index.ts b/apps/widget/src/components/widget/Phases/Phase3/index.ts
new file mode 100644
index 000000000..3cc518662
--- /dev/null
+++ b/apps/widget/src/components/widget/Phases/Phase3/index.ts
@@ -0,0 +1 @@
+export * from './Phase3';
diff --git a/apps/widget/src/components/widget/Phases/Phase4/Phase4.tsx b/apps/widget/src/components/widget/Phases/Phase4/Phase4.tsx
new file mode 100644
index 000000000..e258d6879
--- /dev/null
+++ b/apps/widget/src/components/widget/Phases/Phase4/Phase4.tsx
@@ -0,0 +1,34 @@
+import { Group, Title, Text } from '@mantine/core';
+import { colors, TEXTS } from '@config';
+import { CheckIcon } from '@icons';
+import { Footer } from 'components/Common/Footer';
+import useStyles from './Styles';
+import { PhasesEum } from '@types';
+import { numberFormatter, replaceVariablesInString } from '@impler/shared';
+
+interface IPhase4Props {
+ onCloseClick: () => void;
+ onUploadAgainClick: () => void;
+ rowsCount: number;
+}
+
+export function Phase4(props: IPhase4Props) {
+ const { classes } = useStyles();
+ const { rowsCount, onUploadAgainClick, onCloseClick } = props;
+
+ return (
+ <>
+
+
+
+ {replaceVariablesInString(TEXTS.COMPLETE.title, { count: numberFormatter(rowsCount) })}
+
+
+ {replaceVariablesInString(TEXTS.COMPLETE.subTitle, { count: numberFormatter(rowsCount) })}
+
+
+
+
+ >
+ );
+}
diff --git a/apps/widget/src/components/widget/Phases/Phase4/Styles.tsx b/apps/widget/src/components/widget/Phases/Phase4/Styles.tsx
new file mode 100644
index 000000000..e36ec7b1c
--- /dev/null
+++ b/apps/widget/src/components/widget/Phases/Phase4/Styles.tsx
@@ -0,0 +1,30 @@
+/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */
+import { colors } from '@config';
+import { createStyles, MantineTheme } from '@mantine/core';
+import React from 'react';
+
+export const getWrapperStyles = (theme: MantineTheme): React.CSSProperties => ({
+ flexDirection: 'column',
+ textAlign: 'center',
+ alignItems: 'center',
+ justifyContent: 'center',
+ flexGrow: 1,
+ overflow: 'auto',
+ height: '100%',
+ gap: 0,
+});
+
+export const getCheckIconStyles = (theme: MantineTheme): React.CSSProperties => ({
+ backgroundColor: colors.success,
+ color: colors.white,
+ height: 70,
+ borderRadius: '100%',
+ padding: 10,
+});
+
+export default createStyles((theme: MantineTheme, params, getRef): Record => {
+ return {
+ wrapper: getWrapperStyles(theme),
+ check: getCheckIconStyles(theme),
+ };
+});
diff --git a/apps/widget/src/components/widget/Phases/Phase4/index.ts b/apps/widget/src/components/widget/Phases/Phase4/index.ts
new file mode 100644
index 000000000..c0a2563fd
--- /dev/null
+++ b/apps/widget/src/components/widget/Phases/Phase4/index.ts
@@ -0,0 +1 @@
+export * from './Phase4';
diff --git a/apps/widget/src/components/widget/Phases/PromptModal/PromptModal.tsx b/apps/widget/src/components/widget/Phases/PromptModal/PromptModal.tsx
new file mode 100644
index 000000000..6a57b5b4a
--- /dev/null
+++ b/apps/widget/src/components/widget/Phases/PromptModal/PromptModal.tsx
@@ -0,0 +1,43 @@
+import { Warning } from '@icons';
+import { colors, TEXTS } from '@config';
+import { Button } from '@ui/Button';
+import { Group, Modal as MantineModal, Text, Title } from '@mantine/core';
+import { PromptModalTypesEnum } from '@types';
+
+interface IPromptModalProps {
+ opened: boolean;
+ onCancel: () => void;
+ onConfirm: () => void;
+ action?: PromptModalTypesEnum;
+}
+
+export function PromptModal(props: IPromptModalProps) {
+ const { opened, onCancel, onConfirm, action } = props;
+ const subTitle = {
+ [PromptModalTypesEnum.CLOSE]: TEXTS.PROMPT.SUBTITLE_CLOSE,
+ [PromptModalTypesEnum.UPLOAD_AGAIN]: TEXTS.PROMPT.SUBTITLE_RESET,
+ '': '',
+ };
+
+ return (
+
+
+
+
+ {TEXTS.PROMPT.title}
+
+
+ {subTitle[action || '']}
+
+
+
+ {TEXTS.PROMPT.NO}
+
+
+ {TEXTS.PROMPT.YES}
+
+
+
+
+ );
+}
diff --git a/apps/widget/src/components/widget/Phases/PromptModal/index.ts b/apps/widget/src/components/widget/Phases/PromptModal/index.ts
new file mode 100644
index 000000000..614fbc983
--- /dev/null
+++ b/apps/widget/src/components/widget/Phases/PromptModal/index.ts
@@ -0,0 +1 @@
+export * from './PromptModal';
diff --git a/apps/widget/src/components/widget/Widget.tsx b/apps/widget/src/components/widget/Widget.tsx
new file mode 100644
index 000000000..a8723e79c
--- /dev/null
+++ b/apps/widget/src/components/widget/Widget.tsx
@@ -0,0 +1,71 @@
+import { useState } from 'react';
+import { Modal } from '@ui/Modal';
+import { ParentWindow } from '@util';
+import { useAppState } from '@store/app.context';
+import { useQueryClient } from '@tanstack/react-query';
+import { PhasesEum, PromptModalTypesEnum } from '@types';
+import { Phase1 } from './Phases/Phase1';
+import { Phase2 } from './Phases/Phase2';
+import { Phase3 } from './Phases/Phase3';
+import { Phase4 } from './Phases/Phase4';
+import { PromptModal } from './Phases/PromptModal';
+import { Layout } from 'components/Common/Layout';
+
+export function Widget() {
+ const defaultDataCount = 0;
+ const queryClient = useQueryClient();
+ const { reset: resetAppState } = useAppState();
+ const [phase, setPhase] = useState(PhasesEum.UPLOAD);
+ const [dataCount, setDataCount] = useState(defaultDataCount);
+ const [promptContinueAction, setPromptContinueAction] = useState();
+
+ const onUploadResetClick = () => {
+ setPromptContinueAction(PromptModalTypesEnum.UPLOAD_AGAIN);
+ };
+ const onPromptConfirm = () => {
+ setPromptContinueAction(undefined);
+ if (promptContinueAction === PromptModalTypesEnum.CLOSE) closeWidget();
+ resetProgress();
+ };
+ const onPromptCancel = () => {
+ setPromptContinueAction(undefined);
+ };
+ const onClose = () => {
+ if ([PhasesEum.UPLOAD, PhasesEum.COMPLETE].includes(phase)) closeWidget();
+ else setPromptContinueAction(PromptModalTypesEnum.CLOSE);
+ };
+ const closeWidget = () => {
+ ParentWindow.Close();
+ resetProgress();
+ };
+ const resetProgress = () => {
+ resetAppState();
+ queryClient.clear();
+ setPhase(PhasesEum.UPLOAD);
+ };
+ const onComplete = (count: number) => {
+ setDataCount(count);
+ setPhase(PhasesEum.COMPLETE);
+ };
+
+ const PhaseView = {
+ [PhasesEum.UPLOAD]: setPhase(PhasesEum.MAPPING)} />,
+ [PhasesEum.MAPPING]: setPhase(PhasesEum.REVIEW)} onPrevClick={onUploadResetClick} />,
+ [PhasesEum.REVIEW]: ,
+ [PhasesEum.COMPLETE]: ,
+ };
+
+ return (
+
+
+ {PhaseView[phase]}
+
+
+
+ );
+}
diff --git a/apps/widget/src/components/widget/index.ts b/apps/widget/src/components/widget/index.ts
new file mode 100644
index 000000000..b42adc889
--- /dev/null
+++ b/apps/widget/src/components/widget/index.ts
@@ -0,0 +1 @@
+export * from './Widget';
diff --git a/apps/widget/src/config/app.config.ts b/apps/widget/src/config/app.config.ts
new file mode 100644
index 000000000..b06df3406
--- /dev/null
+++ b/apps/widget/src/config/app.config.ts
@@ -0,0 +1,9 @@
+import { isBrowser } from '@impler/shared';
+import { getContextPath, ImplerComponentEnum } from '@impler/shared';
+
+export const API_URL =
+ isBrowser() && (window as any).Cypress
+ ? window._env_?.REACT_APP_API_URL || process.env.REACT_APP_API_URL || 'http://localhost:1336'
+ : window._env_?.REACT_APP_API_URL || process.env.REACT_APP_API_URL || 'http://localhost:3000';
+
+export const CONTEXT_PATH = getContextPath(ImplerComponentEnum.WIDGET);
diff --git a/apps/widget/src/config/colors.config.ts b/apps/widget/src/config/colors.config.ts
new file mode 100644
index 000000000..f2346eaef
--- /dev/null
+++ b/apps/widget/src/config/colors.config.ts
@@ -0,0 +1,14 @@
+export const colors = {
+ primary: '#24A0ED',
+ success: '#569D4F',
+ darkDeem: '#666666',
+ lightDeem: '#CCCCCC',
+ lightGray: '#F8F8F8',
+ black: '#000000',
+ red: '#f03e3e',
+ danger: '#AB3022',
+ lightDanger: '#FDEBEB',
+ light: '#F2F9FE',
+ white: '#FFFFFF',
+ gray: '#ebebeb',
+};
diff --git a/apps/widget/src/config/index.ts b/apps/widget/src/config/index.ts
new file mode 100644
index 000000000..3141b2b5c
--- /dev/null
+++ b/apps/widget/src/config/index.ts
@@ -0,0 +1,5 @@
+export * from './app.config';
+export * from './theme.config';
+export * from './colors.config';
+export * from './texts.config';
+export * from './variable.config';
diff --git a/apps/widget/src/config/texts.config.ts b/apps/widget/src/config/texts.config.ts
new file mode 100644
index 000000000..27cb145e5
--- /dev/null
+++ b/apps/widget/src/config/texts.config.ts
@@ -0,0 +1,70 @@
+export const TEXTS = {
+ TITLES: {
+ UPLOAD: 'Upload',
+ MAPPING: 'Mapping',
+ REVIEW: 'Review',
+ COMPLETE: 'Complete',
+ },
+ STEPS: {
+ UPLOAD: 'Upload',
+ MAPPING: 'Mapping',
+ REVIEW: 'Review',
+ COMPLETE: 'Complete',
+ },
+ DROPZONE: {
+ TITLE: 'Drop your file here or ',
+ BROWSE: 'Browse',
+ SUBTITLE: 'Select any .csv, .xlx or .xlsx file',
+ FILE_SELECTION: 'File selected successfully',
+ },
+ PHASE1: {
+ SELECT_TITLE: 'Template',
+ SELECT_PLACEHOLDER: 'Select Template',
+ DOWNLOAD_SAMPLE_TITLE: 'Download sample csv file',
+ DOWNLOAD_SAMPLE: 'Download sample',
+ SEE_MAPPING: 'See Mapping',
+ SELECT_FILE: 'Select a file',
+ },
+ PHASE2: {
+ UPLOAD_AGAIN: 'Upload Again',
+ SEE_REVIEW: 'Review Data',
+ NAME_IN_SCHEMA_TITLE: 'Column in schema',
+ NAME_IN_SHEET_TITLE: 'Column in your sheet',
+ },
+ PHASE3: {
+ INVALID_DATA_INFO: 'Sheet contains invalid data, hover over columns to see error',
+ EXPORT_DATA: 'Export Data',
+ CONFIRM_UPLOAD: 'Complete Upload',
+ },
+ PHASE4: {
+ CLOSE: 'Close',
+ },
+ CONFIRM_MODAL: {
+ title: '{count} rows appears to be have wrong data',
+ subTitle: 'You can choose to exempt wrong data or keep your wrong data and confirm your upload',
+ EXEMPT_CONTINUE: 'Exempt wrong data and Continue',
+ KEEP_CONTINUE: 'Continue with wrong data',
+ },
+ COMPLETE: {
+ title: 'Bravo! {count} rows have been uploaded',
+ subTitle: '{count} rows have been uploaded successfully, and currently is in process, it will be ready shortly.',
+ UPLOAD_AGAIN: 'Upload new File',
+ },
+ PROMPT: {
+ title: `Are You sure? You'll lost your progress`,
+ SUBTITLE_CLOSE: 'Your Import is in progress, Clicking Yes will close the widget',
+ SUBTITLE_RESET: 'Your Import is in progress, Clicking Yes will reset your import',
+ YES: 'Yes',
+ NO: 'No',
+ },
+ VALIDATION: {
+ TEMPLATE_REQUIRED: 'Template is required',
+ FILE_REQUIRED: 'File is required',
+ },
+ NOTIFICATIONS: {
+ INCOMPLETE_TEMPLATE: {
+ title: 'Oops!',
+ message: 'It looks like selected Template is Incomplete, Please select another one!',
+ },
+ },
+};
diff --git a/apps/widget/src/config/theme.config.ts b/apps/widget/src/config/theme.config.ts
new file mode 100644
index 000000000..3afeeaf25
--- /dev/null
+++ b/apps/widget/src/config/theme.config.ts
@@ -0,0 +1,10 @@
+import { MantineThemeOverride } from '@mantine/core';
+
+export const spacings = { xs: 15, sm: 20, md: 25, lg: 30, xl: 40 };
+
+export const mantineConfig: MantineThemeOverride = {
+ fontFamily: "'Lato', sans serif",
+ headings: {
+ fontFamily: "'Lato', sans serif",
+ },
+};
diff --git a/apps/widget/src/config/variable.config.ts b/apps/widget/src/config/variable.config.ts
new file mode 100644
index 000000000..8f095d33c
--- /dev/null
+++ b/apps/widget/src/config/variable.config.ts
@@ -0,0 +1,9 @@
+const milliseconds = 1000,
+ hours = 24,
+ seconds = 60,
+ minutes = 60;
+
+export const variables = {
+ error: 'message',
+ twentyFourHoursInMs: milliseconds * minutes * seconds * hours,
+};
diff --git a/apps/widget/src/design-system/Button/Button.stories.tsx b/apps/widget/src/design-system/Button/Button.stories.tsx
new file mode 100644
index 000000000..ec7e3089f
--- /dev/null
+++ b/apps/widget/src/design-system/Button/Button.stories.tsx
@@ -0,0 +1,35 @@
+import { ComponentStory, ComponentMeta } from '@storybook/react';
+import { Button } from './Button';
+
+export default {
+ title: 'Button',
+ component: Button,
+ argTypes: {
+ onClick: {
+ action: 'clicked',
+ },
+ size: {
+ control: {
+ type: 'select',
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
+ },
+ },
+ color: {
+ control: {
+ type: 'select',
+ options: ['red', 'green', 'blue'],
+ },
+ },
+ },
+} as ComponentMeta;
+
+const Template: ComponentStory = (args) => ;
+
+export const Simple = Template.bind({});
+Simple.args = {
+ children: 'Click me',
+ variant: 'filled',
+ disabled: false,
+ loading: false,
+ color: 'blue',
+};
diff --git a/apps/widget/src/design-system/Button/Button.tsx b/apps/widget/src/design-system/Button/Button.tsx
new file mode 100644
index 000000000..0a3881bf5
--- /dev/null
+++ b/apps/widget/src/design-system/Button/Button.tsx
@@ -0,0 +1,30 @@
+import { PropsWithChildren, ReactNode } from 'react';
+import { Button as MantineButton, MantineSize } from '@mantine/core';
+
+interface IButtonProps {
+ variant?: 'filled' | 'outline';
+ disabled?: boolean;
+ loading?: boolean;
+ onClick?: () => void;
+ size?: MantineSize;
+ color?: 'blue' | 'red' | 'gray' | string;
+ leftIcon?: ReactNode;
+}
+
+export function Button(props: PropsWithChildren) {
+ const { variant, disabled, children, loading, onClick, size = 'md', color, leftIcon } = props;
+
+ return (
+
+ {children}
+
+ );
+}
diff --git a/apps/widget/src/design-system/Button/index.ts b/apps/widget/src/design-system/Button/index.ts
new file mode 100644
index 000000000..8b166a86e
--- /dev/null
+++ b/apps/widget/src/design-system/Button/index.ts
@@ -0,0 +1 @@
+export * from './Button';
diff --git a/apps/widget/src/design-system/Dropzone/Dropzone.stories.tsx b/apps/widget/src/design-system/Dropzone/Dropzone.stories.tsx
new file mode 100644
index 000000000..f10ab8c0c
--- /dev/null
+++ b/apps/widget/src/design-system/Dropzone/Dropzone.stories.tsx
@@ -0,0 +1,41 @@
+import { MIME_TYPES } from '@mantine/dropzone';
+import { ComponentStory, ComponentMeta } from '@storybook/react';
+import { Dropzone } from './Dropzone';
+
+export default {
+ title: 'Dropzone',
+ component: Dropzone,
+ argTypes: {
+ accept: {
+ control: {
+ type: 'multi-select',
+ options: MIME_TYPES,
+ },
+ },
+ onDrop: {
+ action: 'onDrop',
+ },
+ onClear: {
+ action: 'onClear',
+ },
+ },
+} as ComponentMeta;
+
+const Template: ComponentStory = (args) => ;
+
+export const Default = Template.bind({});
+
+export const WithFile = Template.bind({});
+WithFile.args = {
+ title: 'Select a file',
+ file: {
+ name: 'Document.tsx',
+ size: 1200,
+ } as unknown as File,
+};
+
+export const WithError = Template.bind({});
+WithError.args = {
+ title: 'Select a file',
+ error: 'File is required',
+};
diff --git a/apps/widget/src/design-system/Dropzone/Dropzone.style.ts b/apps/widget/src/design-system/Dropzone/Dropzone.style.ts
new file mode 100644
index 000000000..03ad30be0
--- /dev/null
+++ b/apps/widget/src/design-system/Dropzone/Dropzone.style.ts
@@ -0,0 +1,55 @@
+/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */
+import { createStyles, MantineTheme } from '@mantine/core';
+import { colors } from '../../config/colors.config';
+
+export const getRootStyles = (theme: MantineTheme, hasError: boolean): React.CSSProperties => ({
+ borderColor: hasError ? colors.red : colors.primary,
+ flexGrow: 1,
+});
+
+export const getSuccessRootStyles = (theme: MantineTheme): React.CSSProperties => ({
+ borderColor: colors.success,
+ borderWidth: 2,
+ borderStyle: 'dashed',
+ padding: theme.spacing.md,
+ borderRadius: 4,
+ position: 'relative',
+ flexGrow: 1,
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+});
+
+export const getIconStyles = (theme) => ({
+ height: 70,
+});
+
+export const getCheckIconStyles = (theme) => ({
+ height: 60,
+ backgroundColor: colors.success,
+ borderRadius: '50%',
+ color: 'white',
+ display: 'block',
+});
+
+export const getWrapperStyles = (theme) => ({
+ width: '100%',
+});
+
+export const getDropzoneInnerStyles = (theme: MantineTheme): React.CSSProperties => ({
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ height: '100%',
+});
+
+export default createStyles((theme: MantineTheme, { hasError }: { hasError: boolean }, getRef): Record => {
+ return {
+ icon: getIconStyles(theme),
+ successRoot: getSuccessRootStyles(theme),
+ root: getRootStyles(theme, hasError),
+ checkIcon: getCheckIconStyles(theme),
+ wrapper: getWrapperStyles(theme),
+ inner: getDropzoneInnerStyles(theme),
+ };
+});
diff --git a/apps/widget/src/design-system/Dropzone/Dropzone.tsx b/apps/widget/src/design-system/Dropzone/Dropzone.tsx
new file mode 100644
index 000000000..47bd437e2
--- /dev/null
+++ b/apps/widget/src/design-system/Dropzone/Dropzone.tsx
@@ -0,0 +1,96 @@
+import { Group, Text } from '@mantine/core';
+import { Dropzone as MantineDropzone, FileWithPath, MIME_TYPES } from '@mantine/dropzone';
+import useStyles from './Dropzone.style';
+import { TEXTS } from '../../config/texts.config';
+import { colors } from '../../config/colors.config';
+import { FileIcon, CheckIcon } from '../../icons';
+import { File as FileCMP } from '../File';
+
+interface IDropzoneProps {
+ loading?: boolean;
+ accept?: string[];
+ onDrop: (files: FileWithPath[]) => void;
+ onClear?: () => void;
+ file?: FileWithPath;
+ title?: string;
+ error?: string;
+ className?: string;
+}
+
+export function Dropzone(props: IDropzoneProps) {
+ const {
+ loading,
+ accept = [MIME_TYPES.csv, MIME_TYPES.xls, MIME_TYPES.xlsx],
+ onDrop,
+ onClear,
+ file,
+ title,
+ className,
+ error,
+ } = props;
+ const { classes } = useStyles({ hasError: !!error });
+ const wrapperClasses = [classes.wrapper];
+ if (className) wrapperClasses.push(className);
+
+ const isFileSelected = !!(file && file.name && file.size);
+
+ const SelectedFileContent = () => {
+ return (
+
+
+
+
+
+
+
+ {TEXTS.DROPZONE.FILE_SELECTION}
+
+ {/* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */}
+
+
+
+
+ );
+ };
+
+ const SelectFileContent = () => {
+ return (
+
+
+
+
+ {TEXTS.DROPZONE.TITLE}{' '}
+
+ {TEXTS.DROPZONE.BROWSE}
+
+
+
+
+
+
+
+
+ {TEXTS.DROPZONE.SUBTITLE}
+
+
+
+
+ );
+ };
+
+ return (
+
+ {title ? (
+
+ {title}
+
+ ) : null}
+ {isFileSelected ? : }
+ {error ? (
+
+ {error}
+
+ ) : null}
+
+ );
+}
diff --git a/apps/widget/src/design-system/Dropzone/index.ts b/apps/widget/src/design-system/Dropzone/index.ts
new file mode 100644
index 000000000..35202a669
--- /dev/null
+++ b/apps/widget/src/design-system/Dropzone/index.ts
@@ -0,0 +1 @@
+export * from './Dropzone';
diff --git a/apps/widget/src/design-system/File/File.stories.tsx b/apps/widget/src/design-system/File/File.stories.tsx
new file mode 100644
index 000000000..f0b5c7336
--- /dev/null
+++ b/apps/widget/src/design-system/File/File.stories.tsx
@@ -0,0 +1,20 @@
+import { ComponentStory, ComponentMeta } from '@storybook/react';
+import { File } from './File';
+
+export default {
+ title: 'File',
+ component: File,
+ argTypes: {
+ onClear: {
+ action: 'onClear',
+ },
+ },
+} as ComponentMeta;
+
+const Template: ComponentStory = (args) => ;
+
+export const Simple = Template.bind({});
+Simple.args = {
+ name: 'Document.xlsx',
+ size: 1000,
+};
diff --git a/apps/widget/src/design-system/File/File.style.ts b/apps/widget/src/design-system/File/File.style.ts
new file mode 100644
index 000000000..5896ccfe3
--- /dev/null
+++ b/apps/widget/src/design-system/File/File.style.ts
@@ -0,0 +1,45 @@
+/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */
+import { createStyles, MantineTheme } from '@mantine/core';
+import { colors } from '../../config/colors.config';
+
+export const getContainerStyles = (theme: MantineTheme): React.CSSProperties => ({
+ borderColor: colors.lightDeem,
+ borderWidth: 1,
+ borderStyle: 'solid',
+ borderRadius: 4,
+ padding: theme.spacing.xs,
+ display: 'flex',
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+});
+
+export const getFileIconStyles = (theme: MantineTheme): React.CSSProperties => ({
+ color: colors.darkDeem,
+ height: '20px',
+ width: '20px',
+});
+
+export const getCrossIconStyles = (theme: MantineTheme): React.CSSProperties => ({
+ color: colors.danger,
+ height: '25px',
+ cursor: 'pointer',
+});
+
+export const getNameTextStyles = (theme: MantineTheme): React.CSSProperties => ({
+ color: colors.darkDeem,
+ fontWeight: 'bold',
+});
+
+export const getSizeTextStyles = (theme: MantineTheme): React.CSSProperties => ({
+ color: colors.darkDeem,
+});
+
+export default createStyles((theme: MantineTheme, params, getRef): Record => {
+ return {
+ root: getContainerStyles(theme),
+ fileIcon: getFileIconStyles(theme),
+ crossIcon: getCrossIconStyles(theme),
+ nameText: getNameTextStyles(theme),
+ sizeText: getSizeTextStyles(theme),
+ };
+});
diff --git a/apps/widget/src/design-system/File/File.tsx b/apps/widget/src/design-system/File/File.tsx
new file mode 100644
index 000000000..d28a47b4c
--- /dev/null
+++ b/apps/widget/src/design-system/File/File.tsx
@@ -0,0 +1,40 @@
+import { FileIcon, CrossIcon } from '../../icons';
+import { Group, Text } from '@mantine/core';
+import useStyles from './File.style';
+import { colors } from '../../config/colors.config';
+import { formatBytes } from '../../util/helpers';
+
+interface IFile {
+ name: string;
+ size: number;
+ onClear?: () => void;
+}
+
+export function File(props: IFile) {
+ const { onClear, name, size } = props;
+ const { classes } = useStyles();
+
+ const onClearClick = (e: MouseEvent) => {
+ e.preventDefault();
+ if (onClear) {
+ onClear();
+ }
+ };
+
+ return (
+
+
+
+
+ {name}
+
+
+
+
+ {formatBytes(size)}
+
+
+
+
+ );
+}
diff --git a/apps/widget/src/design-system/File/index.ts b/apps/widget/src/design-system/File/index.ts
new file mode 100644
index 000000000..6fb12521b
--- /dev/null
+++ b/apps/widget/src/design-system/File/index.ts
@@ -0,0 +1 @@
+export * from './File';
diff --git a/apps/widget/src/design-system/InvalidWarning/InvalidWarning.tsx b/apps/widget/src/design-system/InvalidWarning/InvalidWarning.tsx
new file mode 100644
index 000000000..483e24fe2
--- /dev/null
+++ b/apps/widget/src/design-system/InvalidWarning/InvalidWarning.tsx
@@ -0,0 +1,24 @@
+import { Tooltip } from '@mantine/core';
+import { colors } from '../../config/colors.config';
+
+interface InvalidWarningProps {
+ label: string;
+}
+export function InvalidWarning(props: InvalidWarningProps) {
+ const { label } = props;
+
+ return (
+
+
+ {/* eslint-disable-next-line max-len */}
+
+
+
+ );
+}
diff --git a/apps/widget/src/design-system/InvalidWarning/index.ts b/apps/widget/src/design-system/InvalidWarning/index.ts
new file mode 100644
index 000000000..516a46128
--- /dev/null
+++ b/apps/widget/src/design-system/InvalidWarning/index.ts
@@ -0,0 +1 @@
+export * from './InvalidWarning';
diff --git a/apps/widget/src/design-system/LoadingOverlay/LoadingOverlay.tsx b/apps/widget/src/design-system/LoadingOverlay/LoadingOverlay.tsx
new file mode 100644
index 000000000..8b791e549
--- /dev/null
+++ b/apps/widget/src/design-system/LoadingOverlay/LoadingOverlay.tsx
@@ -0,0 +1,11 @@
+import { LoadingOverlay as MantineLoadingOverlay } from '@mantine/core';
+
+interface ILoadingOverlayProps {
+ visible: boolean;
+}
+
+export function LoadingOverlay(props: ILoadingOverlayProps) {
+ const { visible } = props;
+
+ return ;
+}
diff --git a/apps/widget/src/design-system/LoadingOverlay/index.ts b/apps/widget/src/design-system/LoadingOverlay/index.ts
new file mode 100644
index 000000000..2453ce63f
--- /dev/null
+++ b/apps/widget/src/design-system/LoadingOverlay/index.ts
@@ -0,0 +1 @@
+export * from './LoadingOverlay';
diff --git a/apps/widget/src/design-system/MappingItem/MappingItem.stories.tsx b/apps/widget/src/design-system/MappingItem/MappingItem.stories.tsx
new file mode 100644
index 000000000..f5fd1806f
--- /dev/null
+++ b/apps/widget/src/design-system/MappingItem/MappingItem.stories.tsx
@@ -0,0 +1,48 @@
+import { ComponentStory, ComponentMeta } from '@storybook/react';
+import { MappingItem } from './MappingItem';
+
+export default {
+ title: 'MappingItem',
+ component: MappingItem,
+} as ComponentMeta;
+
+const Template: ComponentStory = (args) => ;
+
+export const NotMapped = Template.bind({});
+
+NotMapped.args = {
+ options: [
+ {
+ label: 'Firstname',
+ value: '1',
+ },
+ {
+ label: 'Lastname',
+ value: '2',
+ },
+ ],
+ searchable: true,
+ heading: 'First Name',
+ size: 'sm',
+ placeholder: 'Select Field',
+};
+
+export const Mapped = Template.bind({});
+
+Mapped.args = {
+ options: [
+ {
+ label: 'Firstname',
+ value: '1',
+ },
+ {
+ label: 'Lastname',
+ value: '2',
+ },
+ ],
+ searchable: true,
+ heading: 'First Name',
+ size: 'sm',
+ placeholder: 'Select Field',
+ value: '1',
+};
diff --git a/apps/widget/src/design-system/MappingItem/MappingItem.style.ts b/apps/widget/src/design-system/MappingItem/MappingItem.style.ts
new file mode 100644
index 000000000..d3a5be0bc
--- /dev/null
+++ b/apps/widget/src/design-system/MappingItem/MappingItem.style.ts
@@ -0,0 +1,85 @@
+/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */
+import { createStyles, MantineTheme } from '@mantine/core';
+import { colors } from '../../config/colors.config';
+
+export const getRootStyles = (theme: MantineTheme): React.CSSProperties => ({
+ justifyContent: 'space-between',
+ width: '100%',
+ [`@media (max-width: ${theme.breakpoints.md}px)`]: {
+ flexDirection: 'column',
+ alignItems: 'flex-start',
+ gap: 3,
+ },
+});
+
+export const getSelectionRootStyles = (theme: MantineTheme): React.CSSProperties => ({
+ borderColor: colors.lightDeem,
+ borderWidth: 1,
+ borderStyle: 'solid',
+ borderRadius: 4,
+ padding: 0,
+ [`@media (max-width: ${theme.breakpoints.md}px)`]: {
+ width: '100%',
+ },
+ [`@media (min-width: ${theme.breakpoints.md}px)`]: {
+ width: '70%',
+ },
+});
+
+export const getHeadingStyles = (theme: MantineTheme) => ({
+ padding: theme.spacing.xs,
+ backgroundColor: colors.light,
+ display: 'flex',
+ alignItems: 'center',
+ width: '50%',
+ position: 'relative',
+ borderTopLeftRadius: 4,
+ borderBottomLeftRadius: 4,
+ '&:after': {
+ content: '""',
+ position: 'absolute',
+ background: 'url("arrow.svg")',
+ backgroundPosition: 'center center',
+ backgroundSize: 'cover',
+ width: 17,
+ height: '100%',
+ left: '100%',
+ top: 0,
+ zIndex: 10,
+ },
+});
+
+export const getSelectStyles = (theme: MantineTheme, height: number): React.CSSProperties => ({
+ border: 'none',
+ height: height,
+ cursor: 'pointer',
+});
+
+export const getSelectRootStyles = (theme: MantineTheme): React.CSSProperties => ({
+ width: '50%',
+});
+
+export const getStatusTextStyles = (theme: MantineTheme): React.CSSProperties => ({
+ display: 'flex',
+ alignItems: 'center',
+ gap: theme.spacing.sm,
+ [`@media (max-width: ${theme.breakpoints.md}px)`]: {
+ flexDirection: 'row-reverse',
+ },
+});
+
+export const getRequiredStyles = (theme: MantineTheme): React.CSSProperties => ({
+ color: 'red',
+});
+
+export default createStyles((theme: MantineTheme, params: { height: number }, getRef): Record => {
+ return {
+ root: getRootStyles(theme),
+ statusText: getStatusTextStyles(theme),
+ selectionRoot: getSelectionRootStyles(theme),
+ selectRoot: getSelectRootStyles(theme),
+ select: getSelectStyles(theme, params.height),
+ heading: getHeadingStyles(theme),
+ required: getRequiredStyles(theme),
+ };
+});
diff --git a/apps/widget/src/design-system/MappingItem/MappingItem.tsx b/apps/widget/src/design-system/MappingItem/MappingItem.tsx
new file mode 100644
index 000000000..ca7be367d
--- /dev/null
+++ b/apps/widget/src/design-system/MappingItem/MappingItem.tsx
@@ -0,0 +1,73 @@
+import { Group, Select, Text } from '@mantine/core';
+import React, { useEffect, useRef, useState } from 'react';
+import useStyles from './MappingItem.style';
+import { ChevronDown, GreenCheck } from '../../icons';
+
+interface IOption {
+ label: string;
+ value: string;
+}
+
+interface IMappingItem {
+ heading: string;
+ required?: boolean;
+ options: IOption[] | string[];
+ value?: string;
+ placeholder?: string;
+ size?: 'sm' | 'md';
+ searchable?: boolean;
+ mappingSucceedText?: string;
+ mappingFailedText?: string;
+ onChange?: (value: any) => void;
+}
+
+export const MappingItem = React.forwardRef((props: IMappingItem, ref) => {
+ const {
+ heading,
+ options,
+ required,
+ value,
+ onChange,
+ placeholder = 'Select field',
+ size = 'sm',
+ searchable = true,
+ mappingFailedText = 'Not Mapped',
+ mappingSucceedText = 'Mapping Successfull',
+ } = props;
+ const defaultGroupHeight = 45;
+ const [groupHeight, setGroupHeight] = useState(defaultGroupHeight);
+ const groupRef = useRef(null);
+ const { classes } = useStyles({ height: groupHeight });
+
+ useEffect(() => {
+ setGroupHeight(groupRef.current?.getBoundingClientRect().height || defaultGroupHeight);
+ }, []);
+
+ return (
+
+
+
+ {heading}
+ {required ? * : null}
+
+ }
+ clearable
+ size={size}
+ searchable={searchable}
+ dropdownComponent="div"
+ onChange={(selectedValue) => onChange && onChange(selectedValue)}
+ ref={ref}
+ />
+
+
+ {value ? : null}
+ {value ? mappingSucceedText : mappingFailedText}
+
+
+ );
+});
diff --git a/apps/widget/src/design-system/MappingItem/index.ts b/apps/widget/src/design-system/MappingItem/index.ts
new file mode 100644
index 000000000..b8ba3fe12
--- /dev/null
+++ b/apps/widget/src/design-system/MappingItem/index.ts
@@ -0,0 +1 @@
+export * from './MappingItem';
diff --git a/apps/widget/src/design-system/Modal/Modal.stories.tsx b/apps/widget/src/design-system/Modal/Modal.stories.tsx
new file mode 100644
index 000000000..16928e2c0
--- /dev/null
+++ b/apps/widget/src/design-system/Modal/Modal.stories.tsx
@@ -0,0 +1,36 @@
+import { ComponentStory, ComponentMeta } from '@storybook/react';
+import { Modal } from './Modal';
+
+export default {
+ title: 'Modal',
+ component: Modal,
+ argTypes: {
+ size: {
+ control: {
+ type: 'select',
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
+ },
+ },
+ padding: {
+ control: {
+ type: 'select',
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
+ },
+ },
+ onClose: {
+ action: 'onClose',
+ },
+ },
+} as ComponentMeta;
+
+const Template: ComponentStory = (args) => ;
+
+export const Simple = Template.bind({});
+Simple.args = {
+ title: 'Modal title',
+ size: '100%',
+ centered: true,
+ opened: true,
+ overflow: 'inside',
+ children: 'Content',
+};
diff --git a/apps/widget/src/design-system/Modal/Modal.style.ts b/apps/widget/src/design-system/Modal/Modal.style.ts
new file mode 100644
index 000000000..148abd551
--- /dev/null
+++ b/apps/widget/src/design-system/Modal/Modal.style.ts
@@ -0,0 +1,29 @@
+/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */
+import { createStyles, MantineTheme } from '@mantine/core';
+import React from 'react';
+import { colors } from '../../config/colors.config';
+
+export const getHeaderStyles = (theme: MantineTheme): React.CSSProperties => ({
+ marginBottom: theme.spacing.xs,
+ marginRight: 0,
+});
+
+export const getModalStyles = (theme: MantineTheme): React.CSSProperties => ({
+ padding: '100px',
+ height: 'calc(100vh - 20%)',
+ width: 'calc(100vw - 20%)',
+ display: 'flex',
+ flexDirection: 'column',
+});
+
+export const getModalBodyStyles = (theme: MantineTheme): React.CSSProperties => ({
+ flexGrow: 1,
+});
+
+export default createStyles((theme: MantineTheme, params, getRef): Record => {
+ return {
+ header: getHeaderStyles(theme),
+ modal: getModalStyles(theme),
+ body: getModalBodyStyles(theme),
+ };
+});
diff --git a/apps/widget/src/design-system/Modal/Modal.tsx b/apps/widget/src/design-system/Modal/Modal.tsx
new file mode 100644
index 000000000..ec5c94641
--- /dev/null
+++ b/apps/widget/src/design-system/Modal/Modal.tsx
@@ -0,0 +1,34 @@
+import { PropsWithChildren } from 'react';
+import { Modal as MantineModal } from '@mantine/core';
+import useStyles from './Modal.style';
+
+interface IModalProps extends JSX.ElementChildrenAttribute {
+ title?: string;
+ opened: boolean;
+ centered?: boolean;
+ onClose: () => void;
+ overflow?: 'inside' | 'outside';
+ size?: 'sm' | 'md' | 'lg' | '100%' | number;
+}
+
+export function Modal(props: PropsWithChildren) {
+ const { children, onClose, opened, title, centered = true } = props;
+ const { classes } = useStyles();
+
+ return (
+
+ {children}
+
+ );
+}
diff --git a/apps/widget/src/design-system/Modal/index.ts b/apps/widget/src/design-system/Modal/index.ts
new file mode 100644
index 000000000..cb89ee178
--- /dev/null
+++ b/apps/widget/src/design-system/Modal/index.ts
@@ -0,0 +1 @@
+export * from './Modal';
diff --git a/apps/widget/src/design-system/Pagination/Pagination.stories.tsx b/apps/widget/src/design-system/Pagination/Pagination.stories.tsx
new file mode 100644
index 000000000..4aa75f0ec
--- /dev/null
+++ b/apps/widget/src/design-system/Pagination/Pagination.stories.tsx
@@ -0,0 +1,20 @@
+import { ComponentStory, ComponentMeta } from '@storybook/react';
+import { Pagination } from './Pagination';
+
+export default {
+ title: 'Pagination',
+ component: Pagination,
+ argTypes: {
+ onChange: {
+ action: 'onChange',
+ },
+ },
+} as ComponentMeta;
+
+const Template: ComponentStory = (args) => ;
+
+export const Simple = Template.bind({});
+Simple.args = {
+ total: 10,
+ page: 1,
+};
diff --git a/apps/widget/src/design-system/Pagination/Pagination.tsx b/apps/widget/src/design-system/Pagination/Pagination.tsx
new file mode 100644
index 000000000..736ed0cbf
--- /dev/null
+++ b/apps/widget/src/design-system/Pagination/Pagination.tsx
@@ -0,0 +1,19 @@
+import { Pagination as MantinePagination, Group } from '@mantine/core';
+
+interface IPaginationProps {
+ page?: number;
+ total: number;
+ size?: 'sm' | 'md';
+ onChange?: (page: number) => void;
+}
+
+export function Pagination(props: IPaginationProps) {
+ const defaultPage = 1;
+ const { total, page = defaultPage, size = 'md', onChange } = props;
+
+ return (
+
+
+
+ );
+}
diff --git a/apps/widget/src/design-system/Pagination/index.ts b/apps/widget/src/design-system/Pagination/index.ts
new file mode 100644
index 000000000..e016c96b7
--- /dev/null
+++ b/apps/widget/src/design-system/Pagination/index.ts
@@ -0,0 +1 @@
+export * from './Pagination';
diff --git a/apps/widget/src/design-system/Select/Select.stories.tsx b/apps/widget/src/design-system/Select/Select.stories.tsx
new file mode 100644
index 000000000..dc71189ed
--- /dev/null
+++ b/apps/widget/src/design-system/Select/Select.stories.tsx
@@ -0,0 +1,16 @@
+import { ComponentStory, ComponentMeta } from '@storybook/react';
+import { Select } from './Select';
+
+export default {
+ title: 'Select',
+ component: Select,
+} as ComponentMeta;
+
+const Template: ComponentStory = (args) => ;
+
+export const Simple = Template.bind({});
+Simple.args = {
+ title: 'Template',
+ data: [{ value: 'Users', label: 'Users' }],
+ placeholder: 'Select Template',
+};
diff --git a/apps/widget/src/design-system/Select/Select.styles.ts b/apps/widget/src/design-system/Select/Select.styles.ts
new file mode 100644
index 000000000..a698cabc3
--- /dev/null
+++ b/apps/widget/src/design-system/Select/Select.styles.ts
@@ -0,0 +1,27 @@
+/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */
+import { colors } from '../../config/colors.config';
+import { createStyles, MantineTheme } from '@mantine/core';
+
+export const getLabelStyles = (theme: MantineTheme): React.CSSProperties => ({
+ fontWeight: 'bold',
+ color: colors.black,
+});
+
+export const getSelectStyles = (theme: MantineTheme): React.CSSProperties => ({
+ color: colors.darkDeem,
+ cursor: 'pointer',
+});
+
+export const getRootStyles = (theme: MantineTheme, width: string | number): React.CSSProperties => ({
+ width,
+});
+
+export default createStyles(
+ (theme: MantineTheme, { width }: { width: string | number }, getRef): Record => {
+ return {
+ label: getLabelStyles(theme),
+ select: getSelectStyles(theme),
+ root: getRootStyles(theme, width),
+ };
+ }
+);
diff --git a/apps/widget/src/design-system/Select/Select.tsx b/apps/widget/src/design-system/Select/Select.tsx
new file mode 100644
index 000000000..c1c6eab7f
--- /dev/null
+++ b/apps/widget/src/design-system/Select/Select.tsx
@@ -0,0 +1,46 @@
+import React from 'react';
+import { Select as MantineNativeSelect } from '@mantine/core';
+import useStyles from './Select.styles';
+import { ChevronDown } from '../../icons';
+
+interface IOption {
+ value: string;
+ label: string;
+}
+
+export interface ISelectProps {
+ title?: string;
+ placeholder?: string;
+ data: IOption[];
+ error?: string;
+ required?: boolean;
+ width?: string | number;
+ value?: string;
+ onChange?: (value: any) => void;
+}
+
+export const Select = React.forwardRef((props: ISelectProps, ref) => {
+ const { title, placeholder, data, error, required = true, width = '100%', onChange, value, ...extraProps } = props;
+ const { classes } = useStyles({ width });
+
+ return (
+ }
+ classNames={{
+ label: classes.label,
+ input: classes.select,
+ root: classes.root,
+ }}
+ value={value}
+ onChange={(selectedValue) => onChange && onChange(selectedValue)}
+ required={required}
+ {...extraProps}
+ />
+ );
+});
diff --git a/apps/widget/src/design-system/Select/index.ts b/apps/widget/src/design-system/Select/index.ts
new file mode 100644
index 000000000..7868ecbae
--- /dev/null
+++ b/apps/widget/src/design-system/Select/index.ts
@@ -0,0 +1 @@
+export * from './Select';
diff --git a/apps/widget/src/design-system/Stepper/Stepper.stories.tsx b/apps/widget/src/design-system/Stepper/Stepper.stories.tsx
new file mode 100644
index 000000000..df1cced76
--- /dev/null
+++ b/apps/widget/src/design-system/Stepper/Stepper.stories.tsx
@@ -0,0 +1,25 @@
+import { ComponentStory, ComponentMeta } from '@storybook/react';
+import { Stepper } from './Stepper';
+
+export default {
+ title: 'Stepper',
+ component: Stepper,
+} as ComponentMeta;
+
+const Template: ComponentStory = (args) => ;
+
+export const Simple = Template.bind({});
+Simple.args = {
+ active: 1,
+ steps: [
+ {
+ label: 'Import',
+ },
+ {
+ label: 'Mapping',
+ },
+ {
+ label: 'Review',
+ },
+ ],
+};
diff --git a/apps/widget/src/design-system/Stepper/Stepper.styles.ts b/apps/widget/src/design-system/Stepper/Stepper.styles.ts
new file mode 100644
index 000000000..c917c32c3
--- /dev/null
+++ b/apps/widget/src/design-system/Stepper/Stepper.styles.ts
@@ -0,0 +1,29 @@
+/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */
+import { colors } from '../../config/colors.config';
+import { createStyles, MantineTheme } from '@mantine/core';
+import { IStepperProps } from './Stepper';
+
+export const getSeparatorStyles = (theme: MantineTheme) => ({
+ backgroundColor: 'none',
+ flex: 0,
+ marginLeft: 7,
+ marginRight: 7,
+ color: colors.lightGray,
+});
+
+export const getStepLabelStyles = (theme: MantineTheme) => ({
+ color: colors.darkDeem,
+ fontWeight: 600,
+});
+
+export const getStepBodyStyles = (theme: MantineTheme) => ({
+ marginLeft: '5px',
+});
+
+export default createStyles((theme: MantineTheme, params: IStepperProps, getRef): Record => {
+ return {
+ separator: getSeparatorStyles(theme),
+ stepLabel: getStepLabelStyles(theme),
+ stepBody: getStepBodyStyles(theme),
+ };
+});
diff --git a/apps/widget/src/design-system/Stepper/Stepper.tsx b/apps/widget/src/design-system/Stepper/Stepper.tsx
new file mode 100644
index 000000000..fa9664c19
--- /dev/null
+++ b/apps/widget/src/design-system/Stepper/Stepper.tsx
@@ -0,0 +1,37 @@
+import { CheckIcon } from '../../icons/check.icon';
+import { Stepper as MantineStepper, DefaultMantineColor } from '@mantine/core';
+import useStyles from './Stepper.styles';
+
+interface IStep {
+ label?: string;
+ description?: string;
+}
+
+export interface IStepperProps {
+ active: number;
+ steps: IStep[];
+}
+
+export function Stepper(props: IStepperProps) {
+ const { active, steps } = props;
+ const { classes } = useStyles(props);
+
+ const getColor = (index: number): DefaultMantineColor => {
+ if (index == active) {
+ return 'blue';
+ } else if (index < active) {
+ return 'green';
+ }
+
+ return 'gray';
+ };
+
+ return (
+ }>
+ {Array.isArray(steps) &&
+ steps.map((step, index) => (
+
+ ))}
+
+ );
+}
diff --git a/apps/widget/src/design-system/Stepper/index.ts b/apps/widget/src/design-system/Stepper/index.ts
new file mode 100644
index 000000000..43e65a4b9
--- /dev/null
+++ b/apps/widget/src/design-system/Stepper/index.ts
@@ -0,0 +1 @@
+export * from './Stepper';
diff --git a/apps/widget/src/design-system/Table/Table.stories.tsx b/apps/widget/src/design-system/Table/Table.stories.tsx
new file mode 100644
index 000000000..025e2cdeb
--- /dev/null
+++ b/apps/widget/src/design-system/Table/Table.stories.tsx
@@ -0,0 +1,42 @@
+import { ComponentStory, ComponentMeta } from '@storybook/react';
+import { Table } from './Table';
+
+export default {
+ title: 'Table',
+ component: Table,
+} as ComponentMeta;
+
+const Template: ComponentStory = (args) => ;
+
+export const Simple = Template.bind({});
+Simple.args = {
+ headings: [
+ { title: 'First Name', key: 'firstName' },
+ { title: 'Last Name', key: 'lastName' },
+ { title: 'Surname', key: 'surname' },
+ ],
+ data: [{ firstName: 'John', lastName: 'Baber', surname: 'Doe' }],
+};
+
+export const Empty = Template.bind({});
+Empty.args = {
+ headings: [
+ { title: 'First Name', key: 'firstName' },
+ { title: 'Last Name', key: 'lastName' },
+ { title: 'Surname', key: 'surname' },
+ ],
+ data: [],
+};
+
+export const WithError = Template.bind({});
+WithError.args = {
+ headings: [
+ { title: 'First Name', key: 'firstName' },
+ { title: 'Last Name', key: 'lastName' },
+ { title: 'Surname', key: 'surname' },
+ ],
+ data: [
+ { firstName: 'John', lastName: 'Baber', surname: 'Doe', error: '`firstName` should be unique' },
+ { firstName: 'John', lastName: 'Baber', surname: 'Doe', error: '`lastName` should be unique' },
+ ],
+};
diff --git a/apps/widget/src/design-system/Table/Table.style.ts b/apps/widget/src/design-system/Table/Table.style.ts
new file mode 100644
index 000000000..a02f84fbe
--- /dev/null
+++ b/apps/widget/src/design-system/Table/Table.style.ts
@@ -0,0 +1,32 @@
+/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */
+import { createStyles, MantineTheme } from '@mantine/core';
+import { colors } from '../../config/colors.config';
+
+export const getTableStyles = (theme: MantineTheme) => ({
+ textAlign: 'center',
+ overflow: 'auto',
+ display: 'block',
+ whiteSpace: 'nowrap',
+ 'thead tr th': {
+ position: 'sticky',
+ top: 0,
+ 'z-index': 1,
+ background: colors.gray,
+ },
+});
+
+export const getHeadingStyles = (theme: MantineTheme): React.CSSProperties => ({
+ backgroundColor: colors.lightGray,
+});
+
+export const getInvalidColumnStyles = (theme: MantineTheme): React.CSSProperties => ({
+ backgroundColor: colors.lightDanger,
+});
+
+export default createStyles((theme: MantineTheme, params, getRef): Record => {
+ return {
+ table: getTableStyles(theme),
+ heading: getHeadingStyles(theme),
+ invalidColumn: getInvalidColumnStyles(theme),
+ };
+});
diff --git a/apps/widget/src/design-system/Table/Table.tsx b/apps/widget/src/design-system/Table/Table.tsx
new file mode 100644
index 000000000..5acf1a74d
--- /dev/null
+++ b/apps/widget/src/design-system/Table/Table.tsx
@@ -0,0 +1,90 @@
+import { Table as MantineTable } from '@mantine/core';
+import useStyles from './Table.style';
+import { getErrorObject } from '../../util/helpers';
+import { InvalidWarning } from '../InvalidWarning';
+import { variables } from '../../config/variable.config';
+import React from 'react';
+
+interface IHeadingItem {
+ title: string;
+ key: string;
+ width?: number | string;
+}
+
+interface ITableProps {
+ emptyDataText?: string;
+ headings?: IHeadingItem[];
+ data?: Record[];
+ style?: React.CSSProperties;
+}
+
+export function Table(props: ITableProps) {
+ const defaultColSpan = 1;
+ const { classes } = useStyles();
+ const { data, headings, emptyDataText = 'No Data Found!', style } = props;
+
+ const isHeadingsEmpty = !headings || !Array.isArray(headings) || !headings.length;
+ const isDataEmpty = !data || !Array.isArray(data) || !data.length;
+
+ const THead = () => {
+ if (isHeadingsEmpty) return ;
+
+ return (
+
+
+ {headings.map((heading: IHeadingItem, index: number) => (
+
+ {heading.title}
+
+ ))}
+
+
+ );
+ };
+
+ const TBody = () => {
+ let errorObject: Record;
+ if (isHeadingsEmpty) return ;
+
+ if (isDataEmpty)
+ return (
+
+
+ {emptyDataText}
+
+
+ );
+
+ return (
+
+ {data.map((item: Record, i: number) => {
+ errorObject = getErrorObject(item[variables.error]);
+
+ return (
+
+ {headings.map((heading: IHeadingItem, fieldIndex: number) =>
+ errorObject[heading.key] ? (
+ // if error exist for column
+
+ {item[heading.key]}
+
+
+ ) : (
+ // normal column
+ {item[heading.key]}
+ )
+ )}
+
+ );
+ })}
+
+ );
+ };
+
+ return (
+
+
+
+
+ );
+}
diff --git a/apps/widget/src/design-system/Table/index.ts b/apps/widget/src/design-system/Table/index.ts
new file mode 100644
index 000000000..75193adc3
--- /dev/null
+++ b/apps/widget/src/design-system/Table/index.ts
@@ -0,0 +1 @@
+export * from './Table';
diff --git a/apps/widget/src/global.d.ts b/apps/widget/src/global.d.ts
new file mode 100644
index 000000000..31822ef51
--- /dev/null
+++ b/apps/widget/src/global.d.ts
@@ -0,0 +1,11 @@
+interface IMessagePayload {
+ type: string;
+ [key: string]: any; // eslint-disable-line @typescript-eslint/no-explicit-any
+}
+
+declare interface Window {
+ parentIFrame: {
+ sendMessage: (payload: IMessagePayload) => void;
+ };
+ _env_: any;
+}
diff --git a/apps/widget/src/hooks/Phase1/usePhase1.ts b/apps/widget/src/hooks/Phase1/usePhase1.ts
new file mode 100644
index 000000000..0c172289f
--- /dev/null
+++ b/apps/widget/src/hooks/Phase1/usePhase1.ts
@@ -0,0 +1,98 @@
+import { useState } from 'react';
+import { useForm } from 'react-hook-form';
+import { useImplerState } from '@store/impler.context';
+import { useMutation, useQuery } from '@tanstack/react-query';
+import { useAPIState } from '@store/api.context';
+import { IErrorObject, IOption, ITemplate, IUpload } from '@impler/shared';
+import { useAppState } from '@store/app.context';
+import { downloadFileFromURL, notifier } from '@util';
+import { IFormvalues, IUploadValues } from '@types';
+
+interface IUsePhase1Props {
+ goNext: () => void;
+}
+
+export function usePhase1({ goNext }: IUsePhase1Props) {
+ const { api } = useAPIState();
+ const { setUploadInfo } = useAppState();
+ const [templates, setTemplates] = useState([]);
+ const [isDownloadInProgress, setIsDownloadInProgress] = useState(false);
+ const { projectId, template, authHeaderValue, extra } = useImplerState();
+ const { data, isFetched, isLoading } = useQuery(
+ ['templates'],
+ () => api.getTemplates(projectId),
+ {
+ onSuccess(templatesResponse) {
+ setTemplates(
+ templatesResponse.map((item) => ({
+ label: item.name,
+ value: item._id,
+ }))
+ );
+ },
+ }
+ );
+ const { isLoading: isUploadLoading, mutate } = useMutation(
+ ['upload'],
+ (values: any) => api.uploadFile(values),
+ {
+ onSuccess(uploadData) {
+ setUploadInfo(uploadData);
+ goNext();
+ },
+ }
+ );
+ const {
+ control,
+ register,
+ trigger,
+ getValues,
+ handleSubmit,
+ formState: { errors },
+ } = useForm();
+
+ const onDownload = async () => {
+ setIsDownloadInProgress(true);
+ const isTemplateValid = await trigger('template');
+ if (!isTemplateValid) {
+ setIsDownloadInProgress(false);
+
+ return;
+ }
+
+ let selectedTemplate: ITemplate | undefined;
+ const selectedTemplateValue = getValues('template');
+ if (selectedTemplateValue && data) {
+ selectedTemplate = data.find((templateItem) => templateItem._id === selectedTemplateValue);
+ } else if (template && data) {
+ selectedTemplate = data.find((templateItem) => templateItem.code === template || templateItem._id === template);
+ }
+
+ if (selectedTemplate && selectedTemplate.sampleFileUrl)
+ downloadFileFromURL(selectedTemplate.sampleFileUrl, `${selectedTemplate.code}-sample.csv`);
+ else notifier.showError('INCOMPLETE_TEMPLATE');
+ setIsDownloadInProgress(false);
+ };
+
+ const onSubmit = (submitData: IFormvalues) => {
+ mutate({
+ ...submitData,
+ authHeaderValue,
+ extra,
+ });
+ };
+
+ return {
+ control,
+ errors,
+ trigger,
+ register,
+ templates,
+ isUploadLoading,
+ onDownload,
+ isDownloadInProgress,
+ isInitialDataLoaded: isFetched && !isLoading,
+ showSelectTemplate: !template,
+ onSubmit: handleSubmit(onSubmit),
+ };
+}
diff --git a/apps/widget/src/hooks/Phase2/usePhase2.ts b/apps/widget/src/hooks/Phase2/usePhase2.ts
new file mode 100644
index 000000000..05710d3e8
--- /dev/null
+++ b/apps/widget/src/hooks/Phase2/usePhase2.ts
@@ -0,0 +1,60 @@
+import { IMapping, IErrorObject, IMappingFinalize, IUpload } from '@impler/shared';
+import { useAPIState } from '@store/api.context';
+import { useAppState } from '@store/app.context';
+import { useQuery, useMutation } from '@tanstack/react-query';
+import { useForm } from 'react-hook-form';
+
+interface IUsePhase2Props {
+ goNext: () => void;
+}
+
+export function usePhase2({ goNext }: IUsePhase2Props) {
+ const { api } = useAPIState();
+ const { uploadInfo, setUploadInfo } = useAppState();
+ const { control, reset, handleSubmit } = useForm<{ mappings: IMappingFinalize[] }>();
+ const {
+ isFetched,
+ isLoading,
+ data: mappings,
+ } = useQuery(
+ [`mapping:${uploadInfo._id}`],
+ () => api.getMappings(uploadInfo._id),
+ {
+ onSuccess(mappingsResponse) {
+ reset({
+ mappings: mappingsResponse.map((mapping) => ({
+ _columnId: mapping.column._columnId,
+ columnHeading: mapping.columnHeading,
+ })),
+ });
+ },
+ }
+ );
+ const { isLoading: isMappingFinalizing, mutate: finalizeMapping } = useMutation<
+ IUpload,
+ IErrorObject,
+ IMappingFinalize[],
+ any
+ >(
+ [`mapping:${uploadInfo._id}-finalize`],
+ (finalizedMappings) => api.finalizeMappings(uploadInfo._id, finalizedMappings),
+ {
+ onSuccess(updatedUploadInfo) {
+ setUploadInfo(updatedUploadInfo);
+ goNext();
+ },
+ }
+ );
+ const onFinalizeMapping = (data: { mappings: IMappingFinalize[] }) => {
+ finalizeMapping(data.mappings);
+ };
+
+ return {
+ control,
+ mappings,
+ isMappingFinalizing,
+ headings: uploadInfo.headings,
+ isInitialDataLoaded: isFetched && !isLoading,
+ onSubmit: handleSubmit(onFinalizeMapping),
+ };
+}
diff --git a/apps/widget/src/hooks/Phase3/usePhase3.ts b/apps/widget/src/hooks/Phase3/usePhase3.ts
new file mode 100644
index 000000000..c9fdedcc8
--- /dev/null
+++ b/apps/widget/src/hooks/Phase3/usePhase3.ts
@@ -0,0 +1,87 @@
+import { IErrorObject, IReviewData, IUpload } from '@impler/shared';
+import { useAPIState } from '@store/api.context';
+import { useAppState } from '@store/app.context';
+import { useMutation, useQuery } from '@tanstack/react-query';
+import { downloadFileFromURL } from '@util';
+import { useState } from 'react';
+
+const defaultPage = 1;
+
+interface IUsePhase3Props {
+ onNext: (dataCount: number) => void;
+}
+
+export function usePhase3({ onNext }: IUsePhase3Props) {
+ const { api } = useAPIState();
+ const { uploadInfo, setUploadInfo } = useAppState();
+ const [page, setPage] = useState(defaultPage);
+ const [totalPages, setTotalPages] = useState(defaultPage);
+ const {
+ data: reviewData,
+ isLoading: isReviewDataLoading,
+ isFetched: isReviewDataFetched,
+ } = useQuery(
+ [`review`, page],
+ () => api.getReviewData(uploadInfo._id, page),
+ {
+ onSuccess(data) {
+ if (!data.totalRecords) {
+ // Confirm review if spreadsheet do not have invalid records
+ confirmReview(false);
+ } else {
+ setPage(Number(data.page));
+ setTotalPages(data.totalPages);
+ }
+ },
+ }
+ );
+ const { isLoading: isGetUploadLoading, refetch: getUpload } = useQuery(
+ [`getUpload:${uploadInfo._id}`],
+ () => api.getUpload(uploadInfo._id),
+ {
+ onSuccess(data) {
+ setUploadInfo(data);
+ downloadFileFromURL(data.invalidCSVDataFileUrl, `invalid-data-${uploadInfo._id}.csv`);
+ },
+ enabled: false,
+ }
+ );
+ const { isLoading: isConfirmReviewLoading, mutate: confirmReview } = useMutation<
+ IUpload,
+ IErrorObject,
+ boolean,
+ [string]
+ >(
+ [`confirm:${uploadInfo._id}`],
+ (processInvalidRecords) => api.confirmReview(uploadInfo._id, processInvalidRecords),
+ {
+ onSuccess() {
+ onNext(uploadInfo.totalRecords);
+ },
+ }
+ );
+
+ const onPageChange = (newPageNumber: number) => {
+ setPage(newPageNumber);
+ };
+
+ const onExportData = () => {
+ if (!uploadInfo.invalidCSVDataFileUrl) getUpload();
+ else downloadFileFromURL(uploadInfo.invalidCSVDataFileUrl, `invalid-data-${uploadInfo._id}.csv`);
+ };
+
+ return {
+ page,
+ totalPages,
+ onPageChange,
+ onExportData,
+ isGetUploadLoading,
+ isConfirmReviewLoading,
+ onConfirmReview: confirmReview,
+ heaings: uploadInfo.headings.map((key: string) => ({ title: key, key })),
+ reviewData: reviewData?.data || [],
+ // eslint-disable-next-line no-magic-numbers
+ totalData: reviewData?.totalRecords || 0,
+ isInitialDataLoaded: isReviewDataFetched && !isReviewDataLoading,
+ };
+}
diff --git a/apps/widget/src/hooks/useAuthentication.ts b/apps/widget/src/hooks/useAuthentication.ts
new file mode 100644
index 000000000..90a213829
--- /dev/null
+++ b/apps/widget/src/hooks/useAuthentication.ts
@@ -0,0 +1,44 @@
+import { useState, useEffect } from 'react';
+import { ApiService } from '@impler/client';
+import { IErrorObject } from '@impler/shared';
+import { logger, ParentWindow } from '@util';
+import { useQuery } from '@tanstack/react-query';
+
+interface IUseAuthenticationProps {
+ api: ApiService;
+ projectId: string;
+ template?: string;
+}
+export function useAuthentication({ api, projectId, template }: IUseAuthenticationProps) {
+ const [isAuthenticated, setIsAuthenticated] = useState(false);
+ const { data, refetch, error } = useQuery(
+ ['valid'],
+ () => api.checkIsRequestvalid(projectId, template) as Promise,
+ {
+ enabled: false,
+ retry: 0,
+ }
+ );
+
+ useEffect(() => {
+ if (data) setIsValidAuthenticated();
+ else if (error) {
+ setAuthenticationError(error.message);
+ }
+ }, [error, data]);
+
+ function setIsValidAuthenticated() {
+ setIsAuthenticated(true);
+ ParentWindow.AuthenticationValid();
+ }
+
+ function setAuthenticationError(message: string) {
+ logger.logError(logger.ErrorTypesEnum.INVALID_PROPS, message);
+ ParentWindow.AuthenticationError(message);
+ }
+
+ return {
+ isAuthenticated,
+ refetch,
+ };
+}
diff --git a/apps/widget/src/icons/check.icon.tsx b/apps/widget/src/icons/check.icon.tsx
new file mode 100644
index 000000000..4b22d7be0
--- /dev/null
+++ b/apps/widget/src/icons/check.icon.tsx
@@ -0,0 +1,16 @@
+import { IIcon } from '@types';
+
+export function CheckIcon(props: IIcon) {
+ return (
+
+ {/* eslint-disable-next-line max-len */}
+
+
+ );
+}
diff --git a/apps/widget/src/icons/chevron-down.icon.tsx b/apps/widget/src/icons/chevron-down.icon.tsx
new file mode 100644
index 000000000..5c95058ec
--- /dev/null
+++ b/apps/widget/src/icons/chevron-down.icon.tsx
@@ -0,0 +1,24 @@
+import { IIcon } from '@types';
+
+export function ChevronDown(props: IIcon) {
+ return (
+
+
+
+ );
+}
diff --git a/apps/widget/src/icons/cross.icon.tsx b/apps/widget/src/icons/cross.icon.tsx
new file mode 100644
index 000000000..54a574518
--- /dev/null
+++ b/apps/widget/src/icons/cross.icon.tsx
@@ -0,0 +1,17 @@
+import { IIcon } from '@types';
+
+export function CrossIcon(props: IIcon) {
+ return (
+
+ {/* eslint-disable-next-line max-len */}
+
+
+ );
+}
diff --git a/apps/widget/src/icons/download.icon.tsx b/apps/widget/src/icons/download.icon.tsx
new file mode 100644
index 000000000..0b5ee11e8
--- /dev/null
+++ b/apps/widget/src/icons/download.icon.tsx
@@ -0,0 +1,17 @@
+import { IIcon } from '@types';
+
+export function Download(props: IIcon) {
+ return (
+
+ {/* eslint-disable-next-line max-len */}
+
+
+ );
+}
diff --git a/apps/widget/src/icons/file.icon.tsx b/apps/widget/src/icons/file.icon.tsx
new file mode 100644
index 000000000..cb9827fe1
--- /dev/null
+++ b/apps/widget/src/icons/file.icon.tsx
@@ -0,0 +1,20 @@
+import { IIcon } from '@types';
+
+export function FileIcon(props: IIcon) {
+ return (
+
+
+
+ );
+}
diff --git a/apps/widget/src/icons/green-check.icon.tsx b/apps/widget/src/icons/green-check.icon.tsx
new file mode 100644
index 000000000..4ac318ecc
--- /dev/null
+++ b/apps/widget/src/icons/green-check.icon.tsx
@@ -0,0 +1,23 @@
+import { IIcon } from '@types';
+
+export function GreenCheck(props: IIcon) {
+ return (
+
+
+
+ );
+}
diff --git a/apps/widget/src/icons/index.ts b/apps/widget/src/icons/index.ts
new file mode 100644
index 000000000..5a6ed639e
--- /dev/null
+++ b/apps/widget/src/icons/index.ts
@@ -0,0 +1,7 @@
+export * from './file.icon';
+export * from './check.icon';
+export * from './cross.icon';
+export * from './chevron-down.icon';
+export * from './green-check.icon';
+export * from './download.icon';
+export * from './warning.icon';
diff --git a/apps/widget/src/icons/warning.icon.tsx b/apps/widget/src/icons/warning.icon.tsx
new file mode 100644
index 000000000..455193b6b
--- /dev/null
+++ b/apps/widget/src/icons/warning.icon.tsx
@@ -0,0 +1,19 @@
+import { IIcon } from '@types';
+
+export function Warning(props: IIcon) {
+ const { className, styles, fill } = props;
+
+ return (
+
+ {/* eslint-disable-next-line max-len */}
+
+
+ );
+}
diff --git a/apps/widget/src/index.tsx b/apps/widget/src/index.tsx
new file mode 100644
index 000000000..eeb063147
--- /dev/null
+++ b/apps/widget/src/index.tsx
@@ -0,0 +1,20 @@
+import { createRoot } from 'react-dom/client';
+import reportWebVitals from './reportWebVitals';
+import { App } from './components/App';
+import React from 'react';
+
+const container = document.getElementById('root');
+// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+const root = createRoot(container!);
+root.render(
+
+
+
+);
+
+/*
+ * If you want to start measuring performance in your app, pass a function
+ * to log results (for example: reportWebVitals(console.log))
+ * or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
+ */
+reportWebVitals();
diff --git a/apps/widget/src/react-app-env.d.ts b/apps/widget/src/react-app-env.d.ts
new file mode 100644
index 000000000..6431bc5fc
--- /dev/null
+++ b/apps/widget/src/react-app-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/apps/widget/src/reportWebVitals.ts b/apps/widget/src/reportWebVitals.ts
new file mode 100644
index 000000000..b8b88926c
--- /dev/null
+++ b/apps/widget/src/reportWebVitals.ts
@@ -0,0 +1,17 @@
+import { ReportHandler } from 'web-vitals';
+
+const reportWebVitals = (onPerfEntry?: ReportHandler) => {
+ if (onPerfEntry && onPerfEntry instanceof Function) {
+ import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
+ getCLS(onPerfEntry);
+ getFID(onPerfEntry);
+ getFCP(onPerfEntry);
+ getLCP(onPerfEntry);
+ getTTFB(onPerfEntry);
+
+ return null;
+ });
+ }
+};
+
+export default reportWebVitals;
diff --git a/apps/widget/src/setupTests.ts b/apps/widget/src/setupTests.ts
new file mode 100644
index 000000000..276db2f2f
--- /dev/null
+++ b/apps/widget/src/setupTests.ts
@@ -0,0 +1,7 @@
+/*
+ * jest-dom adds custom jest matchers for asserting on DOM nodes.
+ * allows you to do things like:
+ * expect(element).toHaveTextContent(/react/i)
+ * learn more: https://github.com/testing-library/jest-dom
+ */
+import '@testing-library/jest-dom';
diff --git a/apps/widget/src/store/api.context.tsx b/apps/widget/src/store/api.context.tsx
new file mode 100644
index 000000000..e98914fa4
--- /dev/null
+++ b/apps/widget/src/store/api.context.tsx
@@ -0,0 +1,31 @@
+import React, { createContext, useContext } from 'react';
+import { IApiStore } from '../types';
+
+interface APIContextProviderProps extends React.PropsWithChildren, IApiStore {}
+
+const APIContext = createContext(null);
+
+const APIContextProvider = ({
+ api,
+ // other
+ children,
+}: APIContextProviderProps) => {
+ return (
+
+ {children}
+
+ );
+};
+
+export function useAPIState() {
+ const context = useContext(APIContext);
+ if (!context) throw new Error('API Context must be used within APIContextProvider');
+
+ return context;
+}
+
+export default APIContextProvider;
diff --git a/apps/widget/src/store/app.context.tsx b/apps/widget/src/store/app.context.tsx
new file mode 100644
index 000000000..6d71440a6
--- /dev/null
+++ b/apps/widget/src/store/app.context.tsx
@@ -0,0 +1,26 @@
+import React, { createContext, useContext, useState } from 'react';
+import { IUpload } from '@impler/shared';
+import { IAppStore } from '../types';
+
+type AppContextProviderProps = React.PropsWithChildren;
+
+const AppContext = createContext(null);
+
+const AppContextProvider = ({ children }: AppContextProviderProps) => {
+ const [uploadInfo, setUploadInfo] = useState({} as IUpload);
+
+ const reset = () => {
+ setUploadInfo({} as IUpload);
+ };
+
+ return {children} ;
+};
+
+export function useAppState() {
+ const context = useContext(AppContext);
+ if (!context) throw new Error('App Context must be used within AppContextProvider');
+
+ return context;
+}
+
+export default AppContextProvider;
diff --git a/apps/widget/src/store/impler.context.tsx b/apps/widget/src/store/impler.context.tsx
new file mode 100644
index 000000000..aacf3f839
--- /dev/null
+++ b/apps/widget/src/store/impler.context.tsx
@@ -0,0 +1,39 @@
+import React, { createContext, useContext } from 'react';
+import { IImplerStore } from '../types';
+
+interface ImplerContextProviderProps extends React.PropsWithChildren, IImplerStore {}
+
+const ImplerContext = createContext(null);
+
+const ImplerContextProvider = ({
+ projectId,
+ template,
+ accessToken,
+ authHeaderValue,
+ extra,
+ // other
+ children,
+}: ImplerContextProviderProps) => {
+ return (
+
+ {children}
+
+ );
+};
+
+export function useImplerState() {
+ const context = useContext(ImplerContext);
+ if (!context) throw new Error('Impler Context must be used within ImplerContextProvider');
+
+ return context;
+}
+
+export default ImplerContextProvider;
diff --git a/apps/widget/src/types/component.types.ts b/apps/widget/src/types/component.types.ts
new file mode 100644
index 000000000..f1112ffa9
--- /dev/null
+++ b/apps/widget/src/types/component.types.ts
@@ -0,0 +1,35 @@
+import { IInitPayload, IShowPayload } from '@impler/shared';
+import { EventTypesEnum } from './event.types';
+
+export type MessageHandlerDataType =
+ | {
+ type: EventTypesEnum.INIT_IFRAME;
+ value: IInitPayload;
+ }
+ | {
+ type: EventTypesEnum.SHOW_WIDGET;
+ value: IShowPayload;
+ };
+
+export enum PromptModalTypesEnum {
+ 'CLOSE' = 'CLOSE',
+ 'UPLOAD_AGAIN' = 'UPLOAD_AGAIN',
+}
+
+export enum PhasesEum {
+ UPLOAD,
+ MAPPING,
+ REVIEW,
+ CONFIRMATION,
+ COMPLETE,
+}
+
+export interface IFormvalues {
+ template: string;
+ file: File;
+}
+
+export interface IUploadValues extends IFormvalues {
+ authHeaderValue?: string;
+ extra?: string;
+}
diff --git a/apps/widget/src/types/event.types.ts b/apps/widget/src/types/event.types.ts
new file mode 100644
index 000000000..72f96a0e0
--- /dev/null
+++ b/apps/widget/src/types/event.types.ts
@@ -0,0 +1,8 @@
+export enum EventTypesEnum {
+ INIT_IFRAME = 'INIT_IFRAME',
+ SHOW_WIDGET = 'SHOW_WIDGET',
+ WIDGET_READY = 'WIDGET_READY',
+ CLOSE_WIDGET = 'CLOSE_WIDGET',
+ AUTHENTICATION_VALID = 'AUTHENTICATION_VALID',
+ AUTHENTICATION_ERROR = 'AUTHENTICATION_ERROR',
+}
diff --git a/apps/widget/src/types/icon.types.ts b/apps/widget/src/types/icon.types.ts
new file mode 100644
index 000000000..049cb9515
--- /dev/null
+++ b/apps/widget/src/types/icon.types.ts
@@ -0,0 +1,6 @@
+export interface IIcon {
+ fill?: string;
+ styles?: React.CSSProperties;
+ className?: string;
+ onClick?: (e: any) => void;
+}
diff --git a/apps/widget/src/types/index.ts b/apps/widget/src/types/index.ts
new file mode 100644
index 000000000..41d802842
--- /dev/null
+++ b/apps/widget/src/types/index.ts
@@ -0,0 +1,4 @@
+export * from './store.types';
+export * from './icon.types';
+export * from './component.types';
+export * from './event.types';
diff --git a/apps/widget/src/types/store.types.ts b/apps/widget/src/types/store.types.ts
new file mode 100644
index 000000000..cf9d611d3
--- /dev/null
+++ b/apps/widget/src/types/store.types.ts
@@ -0,0 +1,20 @@
+import { ApiService } from '@impler/client';
+import { IUpload } from '@impler/shared';
+
+export interface IImplerStore {
+ projectId: string;
+ template?: string;
+ accessToken?: string;
+ extra?: string;
+ authHeaderValue?: string;
+}
+
+export interface IApiStore {
+ api: ApiService;
+}
+
+export interface IAppStore {
+ uploadInfo: IUpload;
+ reset: () => void;
+ setUploadInfo: (uploadInfo: IUpload) => void;
+}
diff --git a/apps/widget/src/util/helpers.ts b/apps/widget/src/util/helpers.ts
new file mode 100644
index 000000000..0fc177c9a
--- /dev/null
+++ b/apps/widget/src/util/helpers.ts
@@ -0,0 +1,45 @@
+import { saveAs } from 'file-saver';
+
+export function getErrorObject(error: string): Record {
+ if (!error) return {};
+ const errorStrs = error.split(`, `);
+ let fieldName: string;
+
+ return errorStrs.reduce((acc: Record, val: string) => {
+ [, fieldName] = val.split(/`/);
+ acc[fieldName] = val;
+
+ return acc;
+ }, {});
+}
+
+// eslint-disable-next-line no-magic-numbers
+export function formatBytes(bytes, decimals = 2) {
+ if (!+bytes) return '0 Bytes';
+
+ const KBSize = 1024;
+ // eslint-disable-next-line no-magic-numbers
+ const dm = decimals < 0 ? 0 : decimals;
+ const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
+
+ const i = Math.floor(Math.log(bytes) / Math.log(KBSize));
+
+ return `${parseFloat((bytes / Math.pow(KBSize, i)).toFixed(dm))} ${sizes[i]}`;
+}
+
+function isValidHttpUrl(string: string) {
+ let url: URL | undefined;
+ try {
+ url = new URL(string);
+ } catch (_) {
+ return false;
+ }
+
+ return url.protocol === 'http:' || url.protocol === 'https:';
+}
+
+export function downloadFileFromURL(url: string, name: string) {
+ if (!isValidHttpUrl(url)) return;
+
+ saveAs(url, name);
+}
diff --git a/apps/widget/src/util/index.ts b/apps/widget/src/util/index.ts
new file mode 100644
index 000000000..f4b61a053
--- /dev/null
+++ b/apps/widget/src/util/index.ts
@@ -0,0 +1,4 @@
+export * from './helpers';
+export * as ParentWindow from './parent-window';
+export * as logger from './logger';
+export * from './notifier';
diff --git a/apps/widget/src/util/logger.ts b/apps/widget/src/util/logger.ts
new file mode 100644
index 000000000..1bfd25b2d
--- /dev/null
+++ b/apps/widget/src/util/logger.ts
@@ -0,0 +1,7 @@
+/* eslint-disable no-console */
+export enum ErrorTypesEnum {
+ INVALID_PROPS = 'INVALID_PROPS',
+}
+export function logError(type: ErrorTypesEnum, message: string) {
+ console.error(`[${type}] ${message}`);
+}
diff --git a/apps/widget/src/util/notifier/Notifier.tsx b/apps/widget/src/util/notifier/Notifier.tsx
new file mode 100644
index 000000000..c417afe16
--- /dev/null
+++ b/apps/widget/src/util/notifier/Notifier.tsx
@@ -0,0 +1,23 @@
+import { colors, TEXTS } from '@config';
+import { showNotification } from '@mantine/notifications';
+
+const autoCloseDuration = 5000;
+export function showError(type: keyof typeof TEXTS.NOTIFICATIONS) {
+ const notificationData = TEXTS.NOTIFICATIONS[type];
+ showNotification({
+ color: '#FFFFFF',
+ autoClose: autoCloseDuration,
+ title: notificationData.title,
+ message: notificationData.message,
+ styles: () => ({
+ root: {
+ '&::before': {
+ backgroundColor: colors.red,
+ },
+ },
+ title: {
+ fontWeight: 'bold',
+ },
+ }),
+ });
+}
diff --git a/apps/widget/src/util/notifier/index.ts b/apps/widget/src/util/notifier/index.ts
new file mode 100644
index 000000000..6204fe672
--- /dev/null
+++ b/apps/widget/src/util/notifier/index.ts
@@ -0,0 +1 @@
+export * as notifier from './Notifier';
diff --git a/apps/widget/src/util/parent-window.ts b/apps/widget/src/util/parent-window.ts
new file mode 100644
index 000000000..37f25428a
--- /dev/null
+++ b/apps/widget/src/util/parent-window.ts
@@ -0,0 +1,14 @@
+import { EventTypesEnum } from '@types';
+
+export function Ready() {
+ window.parent.postMessage({ type: EventTypesEnum.WIDGET_READY }, '*');
+}
+export function Close() {
+ window.parent.postMessage({ type: EventTypesEnum.CLOSE_WIDGET }, '*');
+}
+export function AuthenticationValid() {
+ window.parent.postMessage({ type: EventTypesEnum.AUTHENTICATION_VALID }, '*');
+}
+export function AuthenticationError(message: string) {
+ window.parent.postMessage({ type: EventTypesEnum.AUTHENTICATION_ERROR, value: { message } }, '*');
+}
diff --git a/apps/widget/tsconfig.json b/apps/widget/tsconfig.json
new file mode 100644
index 000000000..e8fd7dcb9
--- /dev/null
+++ b/apps/widget/tsconfig.json
@@ -0,0 +1,37 @@
+{
+ "compilerOptions": {
+ "target": "es5",
+ "lib": [
+ "dom",
+ "dom.iterable",
+ "esnext"
+ ],
+ "noImplicitAny": false,
+ "allowJs": true,
+ "skipLibCheck": true,
+ "esModuleInterop": true,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "noFallthroughCasesInSwitch": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "baseUrl": "src",
+ "paths": {
+ "@store/*": ["store/*"],
+ "@config": ["config/index.ts"],
+ "@ui/*": ["design-system/*"],
+ "@types": ["types/index.ts"],
+ "@icons": ["icons/index.ts"],
+ "@util": ["util/index.ts"],
+ "@hooks/*": ["hooks/*"]
+ }
+ },
+ "include": [
+ "src"
+ ]
+}
diff --git a/lerna.json b/lerna.json
new file mode 100644
index 000000000..6be5a1ba5
--- /dev/null
+++ b/lerna.json
@@ -0,0 +1,8 @@
+{
+ "$schema": "node_modules/lerna/schemas/lerna-schema.json",
+ "npmClient": "pnpm",
+ "useNx": true,
+ "useWorkspaces": true,
+ "packages": ["apps/*", "libs/*", "packages/*"],
+ "version": "0.1.0"
+}
diff --git a/libs/dal/.eslintrc.js b/libs/dal/.eslintrc.js
new file mode 100644
index 000000000..5a2cc7f1e
--- /dev/null
+++ b/libs/dal/.eslintrc.js
@@ -0,0 +1,3 @@
+module.exports = {
+ extends: ['../../.eslintrc.js'],
+};
diff --git a/libs/dal/package.json b/libs/dal/package.json
new file mode 100644
index 000000000..3e32202cf
--- /dev/null
+++ b/libs/dal/package.json
@@ -0,0 +1,32 @@
+{
+ "name": "@impler/dal",
+ "version": "0.1.0",
+ "author": "knovator",
+ "license": "MIT",
+ "private": true,
+ "main": "dist/index.js",
+ "types": "dist/index.d.ts",
+ "scripts": {
+ "start": "pnpm run build:watch",
+ "preinstall": "pnpm build",
+ "prebuild": "rimraf dist",
+ "start:dev": "pnpm run build:watch",
+ "build": "cross-env node_modules/.bin/tsc -p tsconfig.build.json",
+ "build:watch": "cross-env node_modules/.bin/tsc -p tsconfig.build.json -w --preserveWatchOutput",
+ "lint": "eslint src",
+ "lint:fix": "eslint src --fix"
+ },
+ "dependencies": {
+ "class-transformer": "^0.5.1",
+ "mongoose": "^6.6.1",
+ "rimraf": "^3.0.2"
+ },
+ "devDependencies": {
+ "@types/node": "^18.7.18",
+ "eslint-plugin-prettier": "^4.2.1",
+ "nodemon": "^2.0.20",
+ "ts-node": "^10.9.1",
+ "tsconfig-paths": "^4.1.0",
+ "typescript": "^4.8.3"
+ }
+}
diff --git a/libs/dal/src/dal.service.ts b/libs/dal/src/dal.service.ts
new file mode 100644
index 000000000..2f8cbb6f4
--- /dev/null
+++ b/libs/dal/src/dal.service.ts
@@ -0,0 +1,28 @@
+import { Connection, ConnectOptions } from 'mongoose';
+import * as mongoose from 'mongoose';
+
+export class DalService {
+ connection: Connection;
+
+ async connect(url: string, config: ConnectOptions = {}) {
+ const instance = await mongoose.connect(url, config);
+
+ this.connection = instance.connection;
+
+ return this.connection;
+ }
+
+ isConnected(): boolean {
+ return this.connection && this.connection.readyState === 1;
+ }
+
+ async disconnect() {
+ await mongoose.disconnect();
+ }
+
+ async destroy() {
+ if (process.env.NODE_ENV !== 'test') throw new Error('Allowed only in test mode');
+
+ await mongoose.connection.dropDatabase();
+ }
+}
diff --git a/libs/dal/src/index.ts b/libs/dal/src/index.ts
new file mode 100644
index 000000000..5d59ab1fe
--- /dev/null
+++ b/libs/dal/src/index.ts
@@ -0,0 +1,9 @@
+export * from './dal.service';
+export * from './repositories/project';
+export * from './repositories/common';
+export * from './repositories/template';
+export * from './repositories/column';
+export * from './repositories/file';
+export * from './repositories/upload';
+export * from './repositories/mapping';
+export * from './repositories/webhook-log';
diff --git a/libs/dal/src/repositories/base-repository.ts b/libs/dal/src/repositories/base-repository.ts
new file mode 100644
index 000000000..087273edc
--- /dev/null
+++ b/libs/dal/src/repositories/base-repository.ts
@@ -0,0 +1,125 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
+import { ClassConstructor, plainToClass } from 'class-transformer';
+import { Document, FilterQuery, Model, QueryOptions, Types, UpdateQuery } from 'mongoose';
+
+export class BaseRepository {
+ public _model: Model;
+
+ constructor(protected MongooseModel: Model, protected entity: ClassConstructor) {
+ this._model = MongooseModel;
+ }
+
+ public static createObjectId() {
+ return new Types.ObjectId().toString();
+ }
+
+ async count(query: FilterQuery): Promise {
+ return await this.MongooseModel.countDocuments(query);
+ }
+
+ async aggregate(query: any[]): Promise {
+ return await this.MongooseModel.aggregate(query);
+ }
+
+ async findById(id: string, select?: string): Promise {
+ const data = await this.MongooseModel.findById(id, select);
+ if (!data) return null;
+
+ return this.mapEntity(data.toObject());
+ }
+
+ async findOne(query: FilterQuery, select?: string) {
+ const data = await this.MongooseModel.findOne(query, select);
+ if (!data) return null;
+
+ return this.mapEntity(data.toObject());
+ }
+
+ async delete(query: FilterQuery) {
+ const data = await this.MongooseModel.findOneAndDelete(query);
+
+ return data;
+ }
+
+ async deleteMany(query: FilterQuery): Promise<{ acknowledged: boolean; deletedCount: number }> {
+ const data = await this.MongooseModel.deleteMany(query);
+
+ return data;
+ }
+
+ async find(
+ query: FilterQuery,
+ select = '',
+ options: { limit?: number; sort?: any; skip?: number } = {}
+ ): Promise {
+ const data = await this.MongooseModel.find(query, select, {
+ sort: options.sort || null,
+ })
+ .skip(options.skip)
+ .limit(options.limit)
+ .lean()
+ .exec();
+
+ return this.mapEntities(data);
+ }
+
+ async *findBatch(
+ query: FilterQuery,
+ select = '',
+ options: { limit?: number; sort?: any; skip?: number } = {},
+ batchSize = 500
+ ) {
+ for await (const doc of this._model
+ .find(query, select, {
+ sort: options.sort || null,
+ })
+ .batchSize(batchSize)
+ .cursor()) {
+ yield this.mapEntities(doc);
+ }
+ }
+
+ async create(data: Partial): Promise {
+ const newEntity = new this.MongooseModel(data);
+ const saved = await newEntity.save();
+
+ return this.mapEntity(saved);
+ }
+
+ async createMany(data: T[]): Promise {
+ return await this.MongooseModel.insertMany(data);
+ }
+
+ async update(
+ query: FilterQuery,
+ updateBody: any
+ ): Promise<{
+ matched: number;
+ modified: number;
+ }> {
+ const saved = await this.MongooseModel.updateMany(query, updateBody, {
+ multi: true,
+ });
+
+ return {
+ matched: saved.matchedCount,
+ modified: saved.modifiedCount,
+ };
+ }
+
+ async findOneAndUpdate(
+ query: FilterQuery,
+ updateBody: UpdateQuery,
+ options: QueryOptions = { new: true } // By default return updated document
+ ): Promise {
+ return this.MongooseModel.findOneAndUpdate(query, updateBody, options);
+ }
+
+ protected mapEntity(data: any): T {
+ return plainToClass(this.entity, JSON.parse(JSON.stringify(data))) as any;
+ }
+
+ protected mapEntities(data: any): T[] {
+ return plainToClass(this.entity, JSON.parse(JSON.stringify(data)));
+ }
+}
diff --git a/libs/dal/src/repositories/column/column.entity.ts b/libs/dal/src/repositories/column/column.entity.ts
new file mode 100644
index 000000000..47ba5aa3b
--- /dev/null
+++ b/libs/dal/src/repositories/column/column.entity.ts
@@ -0,0 +1,25 @@
+export class ColumnEntity {
+ _id?: string;
+
+ name: string;
+
+ key: string;
+
+ alternateKeys: string[];
+
+ isRequired: boolean;
+
+ isUnique: boolean;
+
+ type: string;
+
+ regex: string;
+
+ regexDescription: string;
+
+ selectValues: string[];
+
+ sequence: number;
+
+ _templateId: string;
+}
diff --git a/libs/dal/src/repositories/column/column.repository.ts b/libs/dal/src/repositories/column/column.repository.ts
new file mode 100644
index 000000000..630c50a03
--- /dev/null
+++ b/libs/dal/src/repositories/column/column.repository.ts
@@ -0,0 +1,9 @@
+import { BaseRepository } from '../base-repository';
+import { ColumnEntity } from './column.entity';
+import { Column } from './column.schema';
+
+export class ColumnRepository extends BaseRepository {
+ constructor() {
+ super(Column, ColumnEntity);
+ }
+}
diff --git a/libs/dal/src/repositories/column/column.schema.ts b/libs/dal/src/repositories/column/column.schema.ts
new file mode 100644
index 000000000..bb900b320
--- /dev/null
+++ b/libs/dal/src/repositories/column/column.schema.ts
@@ -0,0 +1,29 @@
+import { Schema, Document, model, models } from 'mongoose';
+import { schemaOptions } from '../schema-default.options';
+import { ColumnEntity } from './column.entity';
+
+const columnSchema = new Schema(
+ {
+ name: String,
+ key: String,
+ alternateKeys: [String],
+ isRequired: Boolean,
+ isUnique: Boolean,
+ regex: String,
+ regexDescription: String,
+ selectValues: [String],
+ sequence: Number,
+ _templateId: {
+ type: Schema.Types.String,
+ ref: 'Template',
+ },
+ type: String,
+ },
+ { ...schemaOptions }
+);
+
+interface IColumnDocument extends ColumnEntity, Document {
+ _id: never;
+}
+
+export const Column = models.Column || model('Column', columnSchema);
diff --git a/libs/dal/src/repositories/column/index.ts b/libs/dal/src/repositories/column/index.ts
new file mode 100644
index 000000000..ab1944ab4
--- /dev/null
+++ b/libs/dal/src/repositories/column/index.ts
@@ -0,0 +1,3 @@
+export * from './column.entity';
+export * from './column.repository';
+export * from './column.schema';
diff --git a/libs/dal/src/repositories/common/common.repository.ts b/libs/dal/src/repositories/common/common.repository.ts
new file mode 100644
index 000000000..f5782632d
--- /dev/null
+++ b/libs/dal/src/repositories/common/common.repository.ts
@@ -0,0 +1,22 @@
+import { FilterQuery, models, Types } from 'mongoose';
+
+export class CommonRepository {
+ async count(name: string, query: FilterQuery): Promise {
+ const model = models[name];
+ if (model) {
+ const count = await model.count(query);
+
+ return count;
+ }
+
+ throw new Error(`Model ${name} does not exists`);
+ }
+
+ validMongoId(id: string): boolean {
+ return Types.ObjectId.isValid(id);
+ }
+
+ generateMongoId(): string {
+ return new Types.ObjectId().toString();
+ }
+}
diff --git a/libs/dal/src/repositories/common/index.ts b/libs/dal/src/repositories/common/index.ts
new file mode 100644
index 000000000..8c96f8234
--- /dev/null
+++ b/libs/dal/src/repositories/common/index.ts
@@ -0,0 +1 @@
+export * from './common.repository';
diff --git a/libs/dal/src/repositories/file/file.entity.ts b/libs/dal/src/repositories/file/file.entity.ts
new file mode 100644
index 000000000..57f6cba29
--- /dev/null
+++ b/libs/dal/src/repositories/file/file.entity.ts
@@ -0,0 +1,11 @@
+export class FileEntity {
+ _id?: string;
+
+ name: string;
+
+ originalName: string;
+
+ mimeType: string;
+
+ path: string;
+}
diff --git a/libs/dal/src/repositories/file/file.repository.ts b/libs/dal/src/repositories/file/file.repository.ts
new file mode 100644
index 000000000..3803721ef
--- /dev/null
+++ b/libs/dal/src/repositories/file/file.repository.ts
@@ -0,0 +1,9 @@
+import { BaseRepository } from '../base-repository';
+import { FileEntity } from './file.entity';
+import { File } from './file.schema';
+
+export class FileRepository extends BaseRepository {
+ constructor() {
+ super(File, FileEntity);
+ }
+}
diff --git a/libs/dal/src/repositories/file/file.schema.ts b/libs/dal/src/repositories/file/file.schema.ts
new file mode 100644
index 000000000..63f62d70f
--- /dev/null
+++ b/libs/dal/src/repositories/file/file.schema.ts
@@ -0,0 +1,19 @@
+import { Schema, Document, model, models } from 'mongoose';
+import { schemaOptions } from '../schema-default.options';
+import { FileEntity } from './file.entity';
+
+const fileSchema = new Schema(
+ {
+ name: String,
+ originalName: String,
+ mimeType: String,
+ path: String,
+ },
+ { ...schemaOptions }
+);
+
+interface IFileDocument extends FileEntity, Document {
+ _id: never;
+}
+
+export const File = models.File || model('File', fileSchema);
diff --git a/libs/dal/src/repositories/file/index.ts b/libs/dal/src/repositories/file/index.ts
new file mode 100644
index 000000000..62cb2e747
--- /dev/null
+++ b/libs/dal/src/repositories/file/index.ts
@@ -0,0 +1,3 @@
+export * from './file.entity';
+export * from './file.repository';
+export * from './file.schema';
diff --git a/libs/dal/src/repositories/mapping/index.ts b/libs/dal/src/repositories/mapping/index.ts
new file mode 100644
index 000000000..1f58c6b20
--- /dev/null
+++ b/libs/dal/src/repositories/mapping/index.ts
@@ -0,0 +1,3 @@
+export * from './mapping.entity';
+export * from './mapping.repository';
+export * from './mapping.schema';
diff --git a/libs/dal/src/repositories/mapping/mapping.entity.ts b/libs/dal/src/repositories/mapping/mapping.entity.ts
new file mode 100644
index 000000000..a57c0cef9
--- /dev/null
+++ b/libs/dal/src/repositories/mapping/mapping.entity.ts
@@ -0,0 +1,9 @@
+export class MappingEntity {
+ _id?: string;
+
+ _columnId: string;
+
+ _uploadId: string;
+
+ columnHeading: string;
+}
diff --git a/libs/dal/src/repositories/mapping/mapping.repository.ts b/libs/dal/src/repositories/mapping/mapping.repository.ts
new file mode 100644
index 000000000..06967ddad
--- /dev/null
+++ b/libs/dal/src/repositories/mapping/mapping.repository.ts
@@ -0,0 +1,26 @@
+import { BaseRepository } from '../base-repository';
+import { MappingEntity } from './mapping.entity';
+import { Mapping } from './mapping.schema';
+
+export class MappingRepository extends BaseRepository {
+ constructor() {
+ super(Mapping, MappingEntity);
+ }
+
+ async getMappingInfo(_uploadId: string) {
+ const mappings = await Mapping.find({ _uploadId }).populate('_columnId', 'name _id sequence');
+
+ return mappings.map((mapping) => ({
+ _id: mapping._id,
+ id: mapping._id,
+ columnHeading: mapping.columnHeading,
+ column: mapping._columnId
+ ? {
+ _columnId: (mapping._columnId as any)._id,
+ name: (mapping._columnId as any).name,
+ sequence: (mapping._columnId as any).sequence,
+ }
+ : null,
+ }));
+ }
+}
diff --git a/libs/dal/src/repositories/mapping/mapping.schema.ts b/libs/dal/src/repositories/mapping/mapping.schema.ts
new file mode 100644
index 000000000..fee680374
--- /dev/null
+++ b/libs/dal/src/repositories/mapping/mapping.schema.ts
@@ -0,0 +1,24 @@
+import { Schema, Document, model, models, Model } from 'mongoose';
+import { schemaOptions } from '../schema-default.options';
+import { MappingEntity } from './mapping.entity';
+
+const mappingSchema = new Schema(
+ {
+ columnHeading: String,
+ _columnId: {
+ type: Schema.Types.String,
+ ref: 'Column',
+ },
+ _uploadId: {
+ type: Schema.Types.String,
+ ref: 'Upload',
+ },
+ },
+ { ...schemaOptions }
+);
+
+interface IMappingDocument extends MappingEntity, Document {
+ _id: never;
+}
+
+export const Mapping = (models.Mapping as Model) || model('Mapping', mappingSchema);
diff --git a/libs/dal/src/repositories/project/index.ts b/libs/dal/src/repositories/project/index.ts
new file mode 100644
index 000000000..3fafcdda2
--- /dev/null
+++ b/libs/dal/src/repositories/project/index.ts
@@ -0,0 +1,3 @@
+export * from './project.entity';
+export * from './project.repository';
+export * from './project.schema';
diff --git a/libs/dal/src/repositories/project/project.entity.ts b/libs/dal/src/repositories/project/project.entity.ts
new file mode 100644
index 000000000..2d4a9c573
--- /dev/null
+++ b/libs/dal/src/repositories/project/project.entity.ts
@@ -0,0 +1,9 @@
+export class ProjectEntity {
+ _id?: string;
+
+ name: string;
+
+ code: string;
+
+ authHeaderName: string;
+}
diff --git a/libs/dal/src/repositories/project/project.repository.ts b/libs/dal/src/repositories/project/project.repository.ts
new file mode 100644
index 000000000..02cef4fa6
--- /dev/null
+++ b/libs/dal/src/repositories/project/project.repository.ts
@@ -0,0 +1,9 @@
+import { BaseRepository } from '../base-repository';
+import { ProjectEntity } from './project.entity';
+import { Project } from './project.schema';
+
+export class ProjectRepository extends BaseRepository {
+ constructor() {
+ super(Project, ProjectEntity);
+ }
+}
diff --git a/libs/dal/src/repositories/project/project.schema.ts b/libs/dal/src/repositories/project/project.schema.ts
new file mode 100644
index 000000000..42187b51a
--- /dev/null
+++ b/libs/dal/src/repositories/project/project.schema.ts
@@ -0,0 +1,24 @@
+import { Schema, Document, model, models } from 'mongoose';
+import { schemaOptions } from '../schema-default.options';
+import { ProjectEntity } from './project.entity';
+
+const projectSchema = new Schema(
+ {
+ name: {
+ type: Schema.Types.String,
+ },
+ code: {
+ type: Schema.Types.String,
+ },
+ authHeaderName: {
+ type: Schema.Types.String,
+ },
+ },
+ { ...schemaOptions }
+);
+
+interface IProjectDocument extends ProjectEntity, Document {
+ _id: never;
+}
+
+export const Project = models.Project || model('Project', projectSchema);
diff --git a/libs/dal/src/repositories/schema-default.options.ts b/libs/dal/src/repositories/schema-default.options.ts
new file mode 100644
index 000000000..b3a091b05
--- /dev/null
+++ b/libs/dal/src/repositories/schema-default.options.ts
@@ -0,0 +1,7 @@
+export const schemaOptions = {
+ timestamps: true,
+ toJSON: {
+ virtuals: true,
+ },
+ toObject: { virtuals: true },
+};
diff --git a/libs/dal/src/repositories/template/index.ts b/libs/dal/src/repositories/template/index.ts
new file mode 100644
index 000000000..a5693e67a
--- /dev/null
+++ b/libs/dal/src/repositories/template/index.ts
@@ -0,0 +1,3 @@
+export * from './template.entity';
+export * from './template.repository';
+export * from './template.schema';
diff --git a/libs/dal/src/repositories/template/template.entity.ts b/libs/dal/src/repositories/template/template.entity.ts
new file mode 100644
index 000000000..13b0aaadd
--- /dev/null
+++ b/libs/dal/src/repositories/template/template.entity.ts
@@ -0,0 +1,15 @@
+export class TemplateEntity {
+ _id?: string;
+
+ name: string;
+
+ code: string;
+
+ callbackUrl: string;
+
+ chunkSize: number;
+
+ sampleFileUrl: string;
+
+ _projectId: string;
+}
diff --git a/libs/dal/src/repositories/template/template.repository.ts b/libs/dal/src/repositories/template/template.repository.ts
new file mode 100644
index 000000000..696fdf71c
--- /dev/null
+++ b/libs/dal/src/repositories/template/template.repository.ts
@@ -0,0 +1,9 @@
+import { BaseRepository } from '../base-repository';
+import { TemplateEntity } from './template.entity';
+import { Template } from './template.schema';
+
+export class TemplateRepository extends BaseRepository {
+ constructor() {
+ super(Template, TemplateEntity);
+ }
+}
diff --git a/libs/dal/src/repositories/template/template.schema.ts b/libs/dal/src/repositories/template/template.schema.ts
new file mode 100644
index 000000000..7ffe319a4
--- /dev/null
+++ b/libs/dal/src/repositories/template/template.schema.ts
@@ -0,0 +1,35 @@
+import { Schema, Document, model, models } from 'mongoose';
+import { schemaOptions } from '../schema-default.options';
+import { TemplateEntity } from './template.entity';
+
+const templateSchema = new Schema(
+ {
+ name: {
+ type: Schema.Types.String,
+ },
+ code: {
+ type: Schema.Types.String,
+ },
+ callbackUrl: {
+ type: Schema.Types.String,
+ },
+ chunkSize: {
+ type: Schema.Types.Number,
+ },
+ sampleFileUrl: {
+ type: Schema.Types.String,
+ },
+ _projectId: {
+ type: Schema.Types.ObjectId,
+ ref: 'Project',
+ index: true,
+ },
+ },
+ { ...schemaOptions }
+);
+
+interface ITemplateDocument extends TemplateEntity, Document {
+ _id: never;
+}
+
+export const Template = models.Template || model('Template', templateSchema);
diff --git a/libs/dal/src/repositories/upload/index.ts b/libs/dal/src/repositories/upload/index.ts
new file mode 100644
index 000000000..e41e477a9
--- /dev/null
+++ b/libs/dal/src/repositories/upload/index.ts
@@ -0,0 +1,3 @@
+export * from './upload.entity';
+export * from './upload.repository';
+export * from './upload.schema';
diff --git a/libs/dal/src/repositories/upload/upload.entity.ts b/libs/dal/src/repositories/upload/upload.entity.ts
new file mode 100644
index 000000000..69af17f6b
--- /dev/null
+++ b/libs/dal/src/repositories/upload/upload.entity.ts
@@ -0,0 +1,35 @@
+export class UploadEntity {
+ _id?: string;
+
+ _templateId: string;
+
+ _uploadedFileId: string;
+
+ _allDataFileId: string;
+
+ _validDataFileId: string;
+
+ _invalidDataFileId: string;
+
+ _invalidCSVDataFileId: string;
+
+ invalidCSVDataFileUrl: string;
+
+ headings: string[];
+
+ uploadedDate: Date;
+
+ totalRecords: number;
+
+ validRecords: number;
+
+ invalidRecords: number;
+
+ authHeaderValue: string;
+
+ status: string;
+
+ extra: string;
+
+ processInvalidRecords: boolean;
+}
diff --git a/libs/dal/src/repositories/upload/upload.repository.ts b/libs/dal/src/repositories/upload/upload.repository.ts
new file mode 100644
index 000000000..c8b4414ac
--- /dev/null
+++ b/libs/dal/src/repositories/upload/upload.repository.ts
@@ -0,0 +1,21 @@
+import { BaseRepository } from '../base-repository';
+import { UploadEntity } from './upload.entity';
+import { Upload } from './upload.schema';
+
+export class UploadRepository extends BaseRepository {
+ constructor() {
+ super(Upload, UploadEntity);
+ }
+
+ async getUploadInformation(uploadId: string): Promise {
+ return await Upload.findById(uploadId).populate('_allDataFileId', 'path name');
+ }
+ async getUploadInvalidDataInformation(uploadId: string): Promise {
+ return await Upload.findById(uploadId).populate('_invalidDataFileId', 'path name');
+ }
+ async getUploadProcessInformation(uploadId: string): Promise {
+ return await Upload.findById(uploadId)
+ .populate('_invalidDataFileId', 'path name')
+ .populate('_validDataFileId', 'path name');
+ }
+}
diff --git a/libs/dal/src/repositories/upload/upload.schema.ts b/libs/dal/src/repositories/upload/upload.schema.ts
new file mode 100644
index 000000000..6fbf5cdbe
--- /dev/null
+++ b/libs/dal/src/repositories/upload/upload.schema.ts
@@ -0,0 +1,60 @@
+import { Schema, Document, model, models, Model } from 'mongoose';
+import { schemaOptions } from '../schema-default.options';
+import { UploadEntity } from './upload.entity';
+
+const uploadSchema = new Schema(
+ {
+ _templateId: {
+ type: Schema.Types.String,
+ ref: 'Template',
+ index: true,
+ },
+ _allDataFileId: {
+ type: Schema.Types.String,
+ ref: 'File',
+ },
+ _uploadedFileId: {
+ type: Schema.Types.String,
+ ref: 'File',
+ },
+ _validDataFileId: {
+ type: Schema.Types.String,
+ ref: 'File',
+ },
+ _invalidDataFileId: {
+ type: Schema.Types.String,
+ ref: 'File',
+ },
+ _invalidCSVDataFileId: {
+ type: Schema.Types.String,
+ ref: 'File',
+ },
+ invalidCSVDataFileUrl: {
+ type: Schema.Types.String,
+ },
+ uploadedDate: {
+ type: Schema.Types.Date,
+ default: Date.now,
+ index: true,
+ },
+ headings: [String],
+ uploadDate: Date,
+ totalRecords: Number,
+ validRecords: String,
+ invalidRecords: String,
+ authHeaderValue: String,
+ status: String,
+ extra: String,
+ processInvalidRecords: {
+ type: Boolean,
+ default: false,
+ },
+ },
+ { ...schemaOptions }
+);
+
+interface IUploadDocument extends UploadEntity, Document {
+ _id: never;
+}
+
+export const Upload = (models.Upload as Model) || model('Upload', uploadSchema);
diff --git a/libs/dal/src/repositories/webhook-log/index.ts b/libs/dal/src/repositories/webhook-log/index.ts
new file mode 100644
index 000000000..e7e9563cd
--- /dev/null
+++ b/libs/dal/src/repositories/webhook-log/index.ts
@@ -0,0 +1,3 @@
+export * from './webhook-log.entity';
+export * from './webhook-log.repository';
+export * from './webhook-log.schema';
diff --git a/libs/dal/src/repositories/webhook-log/webhook-log.entity.ts b/libs/dal/src/repositories/webhook-log/webhook-log.entity.ts
new file mode 100644
index 000000000..a98045c7c
--- /dev/null
+++ b/libs/dal/src/repositories/webhook-log/webhook-log.entity.ts
@@ -0,0 +1,15 @@
+export class WebhookLogEntity {
+ _id?: string;
+
+ _uploadId: string;
+
+ callDate: Date;
+
+ status: string;
+
+ failedReason: string;
+
+ pageNumber: number;
+
+ responseStatusCode: number;
+}
diff --git a/libs/dal/src/repositories/webhook-log/webhook-log.repository.ts b/libs/dal/src/repositories/webhook-log/webhook-log.repository.ts
new file mode 100644
index 000000000..142b0e9dc
--- /dev/null
+++ b/libs/dal/src/repositories/webhook-log/webhook-log.repository.ts
@@ -0,0 +1,9 @@
+import { BaseRepository } from '../base-repository';
+import { WebhookLogEntity } from './webhook-log.entity';
+import { WebhookLog } from './webhook-log.schema';
+
+export class WebhookLogRepository extends BaseRepository {
+ constructor() {
+ super(WebhookLog, WebhookLogEntity);
+ }
+}
diff --git a/libs/dal/src/repositories/webhook-log/webhook-log.schema.ts b/libs/dal/src/repositories/webhook-log/webhook-log.schema.ts
new file mode 100644
index 000000000..18c40dd1b
--- /dev/null
+++ b/libs/dal/src/repositories/webhook-log/webhook-log.schema.ts
@@ -0,0 +1,24 @@
+import { Schema, Document, model, models } from 'mongoose';
+import { schemaOptions } from '../schema-default.options';
+import { WebhookLogEntity } from './webhook-log.entity';
+
+const webhookSchema = new Schema(
+ {
+ _uploadId: {
+ type: Schema.Types.String,
+ ref: 'Upload',
+ },
+ callDate: Date,
+ status: String,
+ failedReason: String,
+ pageNumber: Number,
+ responseStatusCode: Number,
+ },
+ { ...schemaOptions }
+);
+
+interface IWebhookLogDocument extends WebhookLogEntity, Document {
+ _id: never;
+}
+
+export const WebhookLog = models.WebhookLog || model('WebhookLog', webhookSchema);
diff --git a/libs/dal/src/types/env.d.ts b/libs/dal/src/types/env.d.ts
new file mode 100644
index 000000000..c9675e9c9
--- /dev/null
+++ b/libs/dal/src/types/env.d.ts
@@ -0,0 +1,8 @@
+declare namespace NodeJS {
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ export interface ProcessEnv {
+ REDIS_URL: string;
+ REDIS_ARENA_PORT: string;
+ NODE_ENV: 'test' | 'prod' | 'dev';
+ }
+}
diff --git a/libs/dal/tsconfig.build.json b/libs/dal/tsconfig.build.json
new file mode 100644
index 000000000..eafdc0417
--- /dev/null
+++ b/libs/dal/tsconfig.build.json
@@ -0,0 +1,13 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "module": "commonjs",
+ "target": "es6",
+ "declaration": true,
+ "esModuleInterop": false,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "types": ["node"]
+ },
+ "include": ["src/**/*"]
+}
diff --git a/libs/dal/tsconfig.json b/libs/dal/tsconfig.json
new file mode 100644
index 000000000..982e30773
--- /dev/null
+++ b/libs/dal/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "types": ["node"],
+ "esModuleInterop": false
+ }
+}
diff --git a/libs/embed/.editorconfig b/libs/embed/.editorconfig
new file mode 100644
index 000000000..92b9bb1e5
--- /dev/null
+++ b/libs/embed/.editorconfig
@@ -0,0 +1,13 @@
+#root = true
+
+[*]
+indent_style = space
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+max_line_length = 100
+indent_size = 2
+
+[*.md]
+trim_trailing_whitespace = false
diff --git a/libs/embed/.eslintrc.js b/libs/embed/.eslintrc.js
new file mode 100644
index 000000000..fcb2194be
--- /dev/null
+++ b/libs/embed/.eslintrc.js
@@ -0,0 +1,8 @@
+module.exports = {
+ parser: '@typescript-eslint/parser',
+ parserOptions: {
+ project: './tsconfig.json',
+ ecmaVersion: 2020,
+ sourceType: 'module',
+ },
+};
diff --git a/libs/embed/.gitignore b/libs/embed/.gitignore
new file mode 100644
index 000000000..d626d098e
--- /dev/null
+++ b/libs/embed/.gitignore
@@ -0,0 +1,12 @@
+node_modules
+coverage
+.nyc_output
+.DS_Store
+*.log
+.vscode
+.idea
+dist
+compiled
+.awcache
+.rpt2_cache
+docs
diff --git a/libs/embed/index.js b/libs/embed/index.js
new file mode 100644
index 000000000..86db1be8d
--- /dev/null
+++ b/libs/embed/index.js
@@ -0,0 +1,23 @@
+/* eslint-disable no-console */
+var http = require('http');
+var fs = require('fs');
+const path = require('path');
+let embedUmd = fs.readFileSync(path.join(__dirname, 'dist/embed.umd.min.js'));
+let embedEs5 = fs.readFileSync(path.join(__dirname, 'dist/embed.es5.min.js'));
+
+const DEFAULT_PORT = 4701;
+const PORT = process.env.PORT || DEFAULT_PORT;
+
+http
+ .createServer(function (req, res) {
+ if (req.url === '/embed.umd.min.js') res.end(embedUmd);
+ else if (req.url === '/embed.es5.min.js') res.end(embedEs5);
+ else res.end('Not found');
+ })
+ .on('listening', () => {
+ console.log(`Listening on port ${PORT}`);
+ })
+ .on('error', (err) => {
+ console.error(err);
+ })
+ .listen(process.env.PORT || PORT);
diff --git a/libs/embed/package.json b/libs/embed/package.json
new file mode 100644
index 000000000..ed5c5069f
--- /dev/null
+++ b/libs/embed/package.json
@@ -0,0 +1,59 @@
+{
+ "name": "@impler/embed",
+ "version": "0.1.0",
+ "private": true,
+ "license": "MIT",
+ "author": "knovator",
+ "main": "dist/embed.umd.min.js",
+ "module": "dist/embed.es5.min.js",
+ "typings": "dist/types/embed.d.ts",
+ "scripts": {
+ "lint": "eslint src",
+ "lint:fix": "pnpm lint --fix",
+ "preinstall": "pnpm build",
+ "prebuild": "rimraf dist",
+ "build": "tsc && cross-env ENVIRONMENT=local rollup -c rollup.config.js",
+ "build:dev": "tsc && cross-env ENVIRONMENT=dev rollup -c rollup.config.js -w",
+ "build:prod": "tsc && cross-env ENVIRONMENT=production rollup -c rollup.config.js",
+ "start:dev": "node index.js",
+ "start:docker": "node index.js",
+ "start": "node index.js",
+ "dev": "concurrently \"pnpm build:dev\" \"pnpm start:dev\"",
+ "precommit": "lint-staged"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ },
+ "lint-staged": {
+ "*.{js,jsx,ts,tsx}": ["eslint"],
+ "{*.json,.{babelrc,eslintrc,prettierrc,stylelintrc}}": [
+ "prettier --ignore-path .eslintignore --parser json --write"
+ ],
+ "*.{html,md,yml}": ["prettier --ignore-path .eslintignore --single-quote --write"]
+ },
+ "commitlint": {
+ "extends": ["@commitlint/config-conventional"]
+ },
+ "devDependencies": {
+ "@commitlint/cli": "^17.1.2",
+ "@commitlint/config-conventional": "^17.1.0",
+ "@rollup/plugin-commonjs": "^23.0.1",
+ "@rollup/plugin-json": "^5.0.1",
+ "@rollup/plugin-node-resolve": "^15.0.0",
+ "@rollup/plugin-replace": "^5.0.0",
+ "@rollup/plugin-typescript": "^9.0.1",
+ "@types/lodash.camelcase": "^4.3.7",
+ "@types/node": "^18.7.18",
+ "concurrently": "^7.4.0",
+ "cross-env": "^7.0.3",
+ "lint-staged": "^13.0.3",
+ "lodash.camelcase": "^4.3.0",
+ "prettier": "^2.7.1",
+ "rimraf": "^3.0.2",
+ "rollup": "^3.2.3",
+ "rollup-plugin-typescript2": "^0.34.1",
+ "ts-node": "^10.9.1",
+ "tslib": "^2.4.0",
+ "typescript": "^4.8.3"
+ }
+}
diff --git a/libs/embed/rollup.config.js b/libs/embed/rollup.config.js
new file mode 100644
index 000000000..c240dde44
--- /dev/null
+++ b/libs/embed/rollup.config.js
@@ -0,0 +1,54 @@
+const resolve = require('@rollup/plugin-node-resolve');
+const commonjs = require('@rollup/plugin-commonjs');
+const typescript = require('@rollup/plugin-typescript');
+const camelCase = require('lodash.camelcase');
+const json = require('@rollup/plugin-json');
+const replace = require('@rollup/plugin-replace');
+const pkg = require('./package.json');
+
+const libraryName = 'embed';
+
+module.exports = {
+ input: `src/${libraryName}.ts`,
+ output: [
+ {
+ file: pkg.main,
+ name: camelCase(libraryName),
+ format: 'iife',
+ sourcemap: false,
+ plugins: [],
+ },
+ {
+ file: pkg.module,
+ format: 'es',
+ sourcemap: false,
+ plugins: [],
+ },
+ ],
+ // Indicate here external modules you don't want to include in your bundle (i.e.: 'lodash')
+ external: [],
+ watch: {
+ include: 'src/**',
+ },
+ plugins: [
+ replace({
+ preventAssignment: true,
+ values: {
+ 'process.env.ENVIRONMENT': JSON.stringify(process.env.ENVIRONMENT),
+ 'process.env.WIDGET_URL': JSON.stringify(process.env.WIDGET_URL),
+ },
+ }),
+ // Allow json resolution
+ json(),
+ // Compile TypeScript files
+ typescript(),
+ // Allow bundling cjs modules (unlike webpack, rollup doesn't understand cjs)
+ commonjs({ extensions: ['.js', '.ts'] }),
+ /*
+ * Allow node_modules resolution, so you can use 'external' to control
+ * which external modules to include in the bundle
+ * https://github.com/rollup/rollup-plugin-node-resolve#usage
+ */
+ resolve(),
+ ],
+};
diff --git a/libs/embed/src/embed.ts b/libs/embed/src/embed.ts
new file mode 100644
index 000000000..f88fca99a
--- /dev/null
+++ b/libs/embed/src/embed.ts
@@ -0,0 +1,191 @@
+/* eslint no-undef: 0 */
+/* eslint promise/param-names: 0 */
+/* eslint-disable */
+//
+
+import * as EventTypes from './shared/eventTypes';
+import { UnmountedError, AuthenticationError } from './shared/errors';
+import { IFRAME_URL } from './shared/resources';
+
+const WEASL_WRAPPER_ID = 'impler-container';
+const IFRAME_ID = 'impler-iframe-element';
+const WRAPPER_CLASS_NAME = 'wrapper-impler-widget';
+
+class Impler {
+ public projectId: string | unknown;
+
+ private i18n?: Record;
+
+ private onloadFunc: (b: any) => void;
+
+ private iframe: HTMLIFrameElement | undefined;
+
+ private widgetVisible = false;
+
+ private listeners: { [key: string]: (data: any) => void } = {};
+
+ private initPayload: any;
+
+ private isAuthenticated: boolean = false;
+
+ private authenticationError?: string;
+
+ constructor(onloadFunc = function () {}) {
+ this.onloadFunc = onloadFunc;
+ this.widgetVisible = false;
+ }
+
+ on = (name: string, cb: (data: any) => void) => {
+ this.listeners[name] = cb;
+ };
+
+ init = (projectId: string, payload: any) => {
+ this.projectId = projectId;
+ this.initPayload = payload;
+ this.initializeIframe(projectId);
+ this.mountIframe();
+ };
+
+ positionIframe = () => {
+ const wrapper: any = document.querySelector(`.${WRAPPER_CLASS_NAME}`);
+
+ wrapper.style.position = 'absolute';
+ wrapper.style.height = '100vh';
+ wrapper.style.width = '100vw';
+ wrapper.style.top = '0';
+ wrapper.style.left = '0';
+ };
+
+ hideWidget = () => {
+ var elem = document.querySelector(`.${WRAPPER_CLASS_NAME}`) as HTMLBodyElement;
+
+ if (elem) {
+ elem.style.display = 'none';
+ }
+ };
+
+ showWidget = (payload: any) => {
+ this.ensureMounted();
+ this.widgetVisible = !this.widgetVisible;
+ var elem = document.querySelector(`.${WRAPPER_CLASS_NAME}`) as HTMLBodyElement;
+
+ if (elem) {
+ elem.style.display = 'inline-block';
+ }
+
+ this.iframe?.contentWindow?.postMessage(
+ {
+ type: EventTypes.SHOW_WIDGET,
+ value: payload,
+ },
+ '*'
+ );
+ };
+
+ // PRIVATE METHODS
+ ensureMounted = () => {
+ if (!document.getElementById(IFRAME_ID)) {
+ throw new UnmountedError('impler.init needs to be called first');
+ } else if (!this.isAuthenticated) {
+ throw new AuthenticationError(this.authenticationError || `You're not authenticated to access the widget`);
+ }
+ };
+
+ receiveMessage = (event: any) => {
+ if (!!event && !!event.data && !!event.data.type) {
+ // eslint-disable-next-line default-case
+ switch (event.data.type) {
+ case EventTypes.CLOSE_WIDGET:
+ this.hideWidget();
+ break;
+ case EventTypes.AUTHENTICATION_VALID:
+ this.isAuthenticated = true;
+ this.authenticationError = undefined;
+ break;
+ case EventTypes.AUTHENTICATION_ERROR:
+ this.isAuthenticated = false;
+ this.authenticationError = event.data.value?.message;
+ }
+ }
+ };
+
+ initializeIframe = (projectId: string) => {
+ if (!document.getElementById(IFRAME_ID)) {
+ const iframe = document.createElement('iframe');
+ window.addEventListener(
+ 'message',
+ (event) => {
+ if (!event.target || event?.data?.type !== EventTypes.WIDGET_READY) {
+ return;
+ }
+
+ iframe?.contentWindow?.postMessage({ type: EventTypes.INIT_IFRAME, value: this.initPayload }, '*');
+ },
+ true
+ );
+
+ iframe.style.backgroundColor = 'transparent';
+ iframe.src = `${IFRAME_URL}/${projectId}?`;
+ iframe.id = IFRAME_ID;
+ iframe.style.border = 'none';
+ iframe.style.position = 'fixed';
+ iframe.style.top = '0';
+ iframe.style.left = '0';
+ iframe.style.width = '100%';
+ iframe.style.height = '100%';
+ iframe.style.margin = '0';
+ iframe.style.padding = '0';
+ iframe.style.overflow = 'hidden';
+ iframe.style.zIndex = Number.MAX_SAFE_INTEGER.toString();
+ (iframe as any).crossorigin = 'anonymous';
+ this.iframe = iframe;
+ }
+ };
+
+ runPriorCalls = () => {
+ const allowedCalls: string[] = [];
+ const priorCalls =
+ window.impler && window.impler._c && typeof window.impler._c === 'object' ? window.impler._c : [];
+ priorCalls.forEach((call: string[]) => {
+ const method: any = call[0];
+ const args = call[1];
+ if (allowedCalls.includes(method)) {
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore
+ (this[method as any] as any).apply(this, args);
+ }
+ });
+ this.onloadFunc.call(window.impler, window.impler);
+ };
+
+ mountIframe = () => {
+ if (!document.getElementById(IFRAME_ID) && this.iframe) {
+ window.addEventListener('message', this.receiveMessage, false);
+
+ const wrapper = document.createElement('div');
+
+ wrapper.className = WRAPPER_CLASS_NAME;
+ wrapper.style.display = 'none';
+ wrapper.id = WEASL_WRAPPER_ID;
+ (
+ wrapper as any
+ ).style = `z-index: ${Number.MAX_SAFE_INTEGER}; width: 0; height: 0; position: relative; display: none;`;
+ wrapper.appendChild(this.iframe);
+ document.body.appendChild(wrapper);
+ }
+ };
+}
+
+export default ((window: any) => {
+ const onloadFunc =
+ window.impler && window.impler.onload && typeof window.impler.onload === 'function'
+ ? window.impler.onload
+ : function () {};
+
+ const impler = new Impler(onloadFunc);
+
+ (window as any).impler = {};
+ (window as any).impler.init = impler.init;
+ (window as any).impler.on = impler.on;
+ (window as any).impler.show = impler.showWidget;
+})(window);
\ No newline at end of file
diff --git a/libs/embed/src/global.d.ts b/libs/embed/src/global.d.ts
new file mode 100644
index 000000000..fad96a096
--- /dev/null
+++ b/libs/embed/src/global.d.ts
@@ -0,0 +1,5 @@
+// eslint-disable-next-line @typescript-eslint/naming-convention
+interface Window {
+ // eslint-disable-next-line
+ impler: any;
+}
diff --git a/libs/embed/src/shared/errors.ts b/libs/embed/src/shared/errors.ts
new file mode 100644
index 000000000..79eccc2f2
--- /dev/null
+++ b/libs/embed/src/shared/errors.ts
@@ -0,0 +1,34 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
+export class UnmountedError extends Error {
+ constructor(message = '', ...args: any) {
+ super(message, ...(args as []));
+ this.name = 'UnmountedError';
+ this.message = message;
+ }
+}
+
+export class ResponseError extends Error {
+ data: any;
+ constructor(message = '', data = {}, ...args: any) {
+ super(message, ...(args as []));
+ this.name = 'ResponseError';
+ this.message = message;
+ this.data = data;
+ }
+}
+
+export class DomainVerificationError extends Error {
+ constructor(message = '', ...args: any) {
+ super(message, ...(args as []));
+ this.name = 'DomainVerificationError';
+ this.message = message;
+ }
+}
+
+export class AuthenticationError extends Error {
+ constructor(message: string, ...args: any) {
+ super(message, ...(args as []));
+ this.name = 'AuthenticationError';
+ this.message = message;
+ }
+}
diff --git a/libs/embed/src/shared/eventTypes.ts b/libs/embed/src/shared/eventTypes.ts
new file mode 100644
index 000000000..bec1dc01e
--- /dev/null
+++ b/libs/embed/src/shared/eventTypes.ts
@@ -0,0 +1,8 @@
+export const WIDGET_READY = 'WIDGET_READY';
+export const INIT_IFRAME = 'INIT_IFRAME';
+
+export const SHOW_WIDGET = 'SHOW_WIDGET';
+
+export const CLOSE_WIDGET = 'CLOSE_WIDGET';
+export const AUTHENTICATION_VALID = 'AUTHENTICATION_VALID';
+export const AUTHENTICATION_ERROR = 'AUTHENTICATION_ERROR';
diff --git a/libs/embed/src/shared/helpers.ts b/libs/embed/src/shared/helpers.ts
new file mode 100644
index 000000000..a046f5c18
--- /dev/null
+++ b/libs/embed/src/shared/helpers.ts
@@ -0,0 +1,37 @@
+const COOKIE_NAME = 'WEASL_AUTH';
+
+export const expireToken = (clientId: string) => {
+ document.cookie = `${COOKIE_NAME}-${clientId}=;expires=${new Date().toUTCString()};`;
+};
+
+export const isMobile = () => window.innerWidth < 600;
+export const isTablet = () => window.innerWidth > 600 && window.innerWidth < 768;
+export const isDesktop = () => window.innerWidth > 768;
+export const isPortraitMode = () => window.innerHeight > window.innerWidth;
+
+export const allowedAttrTypes = ['STRING', 'NUMBER', 'BOOLEAN', 'JSON'];
+
+// TODO: use a library for this
+export const makeDomainMatcher = (actualDomain: string) => {
+ const [actualHost, actualPort] = actualDomain.split(':');
+ const actualDomainParts = actualHost.split('.');
+
+ return (allowedDomain: string) => {
+ const [allowedHost, allowedPort] = allowedDomain.split(':');
+
+ // check the ports first if both are there
+ if (allowedPort && actualPort && allowedPort !== actualPort) {
+ return false;
+ }
+
+ const allowedDomainParts = allowedHost.split('.');
+ const matched =
+ allowedDomainParts.length &&
+ allowedDomainParts.reduceRight(
+ (matchedSoFar, part, index) => matchedSoFar && part === actualDomainParts[index],
+ true
+ );
+
+ return matched;
+ };
+};
diff --git a/libs/embed/src/shared/resources.ts b/libs/embed/src/shared/resources.ts
new file mode 100644
index 000000000..fcf5368ec
--- /dev/null
+++ b/libs/embed/src/shared/resources.ts
@@ -0,0 +1,39 @@
+let ResourcesConstants: {
+ API_URL: string;
+ IFRAME_URL?: string;
+ WWW_URL?: string;
+ SENTRY_DSN: string;
+};
+
+// eslint-disable-next-line @typescript-eslint/ban-ts-comment
+// @ts-ignore
+if (process.env.ENVIRONMENT && process.env.ENVIRONMENT === '') {
+ ResourcesConstants = {
+ API_URL: '',
+ IFRAME_URL: process.env.WIDGET_URL,
+ WWW_URL: process.env.WIDGET_URL,
+ SENTRY_DSN: '',
+ };
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore
+} else if (process.env.ENVIRONMENT && process.env.ENVIRONMENT === 'dev') {
+ ResourcesConstants = {
+ API_URL: '',
+ IFRAME_URL: process.env.WIDGET_URL || 'http://localhost:3500',
+ WWW_URL: process.env.WIDGET_URL || 'http://localhost:3500',
+ SENTRY_DSN: '',
+ };
+} else {
+ ResourcesConstants = {
+ API_URL: '',
+ IFRAME_URL: process.env.WIDGET_URL || 'http://localhost:3500',
+ WWW_URL: process.env.WIDGET_URL || 'http://localhost:3500',
+ SENTRY_DSN: '',
+ };
+}
+
+export const DEBUG = false;
+export const { API_URL } = ResourcesConstants;
+export const { IFRAME_URL } = ResourcesConstants;
+export const { WWW_URL } = ResourcesConstants;
+export const { SENTRY_DSN } = ResourcesConstants;
diff --git a/libs/embed/test/index.html b/libs/embed/test/index.html
new file mode 100644
index 000000000..2e4802836
--- /dev/null
+++ b/libs/embed/test/index.html
@@ -0,0 +1,275 @@
+
+
+ Getting Started
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Open main menu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tom Cook
+
tom@example.com
+
+
+ View notifications
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Users
+
+
+ Import
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libs/embed/tsconfig.json b/libs/embed/tsconfig.json
new file mode 100644
index 000000000..55f55876d
--- /dev/null
+++ b/libs/embed/tsconfig.json
@@ -0,0 +1,18 @@
+{
+ "compilerOptions": {
+ "moduleResolution": "node",
+ "target": "es5",
+ "module": "es2015",
+ "lib": ["es2015", "es2016", "es2017", "dom"],
+ "strict": true,
+ "declaration": true,
+ "allowJs": true,
+ "allowSyntheticDefaultImports": true,
+ "experimentalDecorators": true,
+ "emitDecoratorMetadata": true,
+ "declarationDir": "dist/types",
+ "outDir": "dist/lib",
+ "typeRoots": ["node_modules/@types"]
+ },
+ "include": ["src", "index.js", "rollup.config.js"]
+}
diff --git a/libs/shared/.dockerignore b/libs/shared/.dockerignore
new file mode 100644
index 000000000..3c3629e64
--- /dev/null
+++ b/libs/shared/.dockerignore
@@ -0,0 +1 @@
+node_modules
diff --git a/libs/shared/.eslintrc.js b/libs/shared/.eslintrc.js
new file mode 100644
index 000000000..5a2cc7f1e
--- /dev/null
+++ b/libs/shared/.eslintrc.js
@@ -0,0 +1,3 @@
+module.exports = {
+ extends: ['../../.eslintrc.js'],
+};
diff --git a/libs/shared/nodemon.json b/libs/shared/nodemon.json
new file mode 100644
index 000000000..ea4346f30
--- /dev/null
+++ b/libs/shared/nodemon.json
@@ -0,0 +1,6 @@
+{
+ "watch": ["src"],
+ "ext": "ts",
+ "ignore": ["src/**/*.spec.ts"],
+ "exec": "ts-node -r tsconfig-paths/register src/main.app.ts"
+}
diff --git a/libs/shared/package.json b/libs/shared/package.json
new file mode 100644
index 000000000..fc46d7b36
--- /dev/null
+++ b/libs/shared/package.json
@@ -0,0 +1,42 @@
+{
+ "name": "@impler/shared",
+ "version": "0.1.0",
+ "description": "Reusable types and classes to shared between apps and libraries",
+ "license": "MIT",
+ "author": "knovator",
+ "repository": "https://github.com/knovator/impler.io",
+ "types": "dist/index.d.ts",
+ "main": "dist/index.js",
+ "keywords": ["impler", "knovator", "chavda-bhavik"],
+ "files": ["dist", "package.json"],
+ "scripts": {
+ "start": "npm run start:dev",
+ "preinstall": "pnpm build",
+ "prebuild": "rimraf dist",
+ "build": "cross-env node_modules/.bin/tsc -p tsconfig.build.json",
+ "build:watch": "cross-env node_modules/.bin/tsc -p tsconfig.build.json -w --preserveWatchOutput",
+ "start:dev": "pnpm build:watch",
+ "precommit": "lint-staged",
+ "lint": "eslint src",
+ "lint:fix": "pnpm lint -- --fix"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "devDependencies": {
+ "@types/node": "^18.7.18",
+ "rimraf": "^3.0.2",
+ "typescript": "^4.8.3"
+ },
+ "dependencies": {
+ "@aws-sdk/client-s3": "^3.185.0",
+ "axios": "^0.26.1"
+ },
+ "lint-staged": {
+ "*.{js,jsx,ts,tsx}": ["prettier --ignore-path .eslintignore --write"],
+ "{*.json,.{babelrc,eslintrc,prettierrc,stylelintrc}}": [
+ "prettier --ignore-path .eslintignore --parser json --write"
+ ],
+ "*.{html,md,yml}": ["prettier --ignore-path .eslintignore --single-quote --write"]
+ }
+}
diff --git a/libs/shared/src/config/api.config.ts b/libs/shared/src/config/api.config.ts
new file mode 100644
index 000000000..afd6493dd
--- /dev/null
+++ b/libs/shared/src/config/api.config.ts
@@ -0,0 +1 @@
+export const ACCESS_KEY_NAME = 'access-key';
diff --git a/libs/shared/src/config/contextPath.ts b/libs/shared/src/config/contextPath.ts
new file mode 100644
index 000000000..cb977be4f
--- /dev/null
+++ b/libs/shared/src/config/contextPath.ts
@@ -0,0 +1,33 @@
+export enum ImplerComponentEnum {
+ WEB,
+ API,
+ WIDGET,
+}
+
+export function getContextPath(component: ImplerComponentEnum) {
+ let contextPath = '';
+
+ if (process.env.GLOBAL_CONTEXT_PATH) {
+ contextPath += process.env.GLOBAL_CONTEXT_PATH + '/';
+ }
+
+ switch (component) {
+ case ImplerComponentEnum.API:
+ if (process.env.API_CONTEXT_PATH) {
+ contextPath += process.env.API_CONTEXT_PATH + '/';
+ }
+ break;
+ case ImplerComponentEnum.WEB:
+ if (process.env.FRONT_BASE_CONTEXT_PATH) {
+ contextPath += process.env.FRONT_BASE_CONTEXT_PATH + '/';
+ }
+ break;
+ case ImplerComponentEnum.WIDGET:
+ if (process.env.WIDGET_CONTEXT_PATH) {
+ contextPath += process.env.WIDGET_CONTEXT_PATH + '/';
+ }
+ break;
+ }
+
+ return contextPath;
+}
diff --git a/libs/shared/src/config/index.ts b/libs/shared/src/config/index.ts
new file mode 100644
index 000000000..8d615c6b8
--- /dev/null
+++ b/libs/shared/src/config/index.ts
@@ -0,0 +1,2 @@
+export * from './contextPath';
+export * from './api.config';
diff --git a/libs/shared/src/entities/Mapping/Mapping.interface.ts b/libs/shared/src/entities/Mapping/Mapping.interface.ts
new file mode 100644
index 000000000..8d783c3bf
--- /dev/null
+++ b/libs/shared/src/entities/Mapping/Mapping.interface.ts
@@ -0,0 +1,14 @@
+export interface IMapping {
+ _id: string;
+ column: {
+ _columnId: string;
+ name: string;
+ sequence: number;
+ };
+ columnHeading?: string;
+}
+
+export interface IMappingFinalize {
+ _columnId: string;
+ columnHeading: string;
+}
diff --git a/libs/shared/src/entities/Mapping/index.ts b/libs/shared/src/entities/Mapping/index.ts
new file mode 100644
index 000000000..6a29faa36
--- /dev/null
+++ b/libs/shared/src/entities/Mapping/index.ts
@@ -0,0 +1 @@
+export * from './Mapping.interface';
diff --git a/libs/shared/src/entities/Review/Review.interface.ts b/libs/shared/src/entities/Review/Review.interface.ts
new file mode 100644
index 000000000..2b408179a
--- /dev/null
+++ b/libs/shared/src/entities/Review/Review.interface.ts
@@ -0,0 +1,7 @@
+export interface IReviewData {
+ limit: number;
+ page: number;
+ totalPages: number;
+ totalRecords: number;
+ data: Record<'index' | 'error' | string, string>[];
+}
diff --git a/libs/shared/src/entities/Review/index.ts b/libs/shared/src/entities/Review/index.ts
new file mode 100644
index 000000000..144ae695d
--- /dev/null
+++ b/libs/shared/src/entities/Review/index.ts
@@ -0,0 +1 @@
+export * from './Review.interface';
diff --git a/libs/shared/src/entities/Template/Template.interface.ts b/libs/shared/src/entities/Template/Template.interface.ts
new file mode 100644
index 000000000..f81763c35
--- /dev/null
+++ b/libs/shared/src/entities/Template/Template.interface.ts
@@ -0,0 +1,9 @@
+export interface ITemplate {
+ _id: string;
+ name: string;
+ code: string;
+ callbackUrl: string;
+ chunkSize: number;
+ sampleFileUrl: string;
+ _projectId: string;
+}
diff --git a/libs/shared/src/entities/Template/index.ts b/libs/shared/src/entities/Template/index.ts
new file mode 100644
index 000000000..5fe403b50
--- /dev/null
+++ b/libs/shared/src/entities/Template/index.ts
@@ -0,0 +1 @@
+export * from './Template.interface';
diff --git a/libs/shared/src/entities/Upload/Upload.interface.ts b/libs/shared/src/entities/Upload/Upload.interface.ts
new file mode 100644
index 000000000..1cce7ebc3
--- /dev/null
+++ b/libs/shared/src/entities/Upload/Upload.interface.ts
@@ -0,0 +1,20 @@
+export interface IUpload {
+ _id: string;
+ _templateId: string;
+ _uploadedFileId: string;
+ _allDataFileId: string;
+ _validDataFileId: string;
+ _invalidDataFileId: string;
+ _invalidCSVDataFileId: string;
+ invalidCSVDataFileUrl: string;
+ headings: string[];
+ uploadedDate: Date;
+ totalRecords: number;
+ validRecords: number;
+ invalidRecords: number;
+ authHeaderValue: string;
+ status: string;
+ extra: string;
+ __v: number;
+ processInvalidRecords: boolean;
+}
diff --git a/libs/shared/src/entities/Upload/index.ts b/libs/shared/src/entities/Upload/index.ts
new file mode 100644
index 000000000..ccb72dbe1
--- /dev/null
+++ b/libs/shared/src/entities/Upload/index.ts
@@ -0,0 +1 @@
+export * from './Upload.interface';
diff --git a/libs/shared/src/entities/index.ts b/libs/shared/src/entities/index.ts
new file mode 100644
index 000000000..e5a4941a6
--- /dev/null
+++ b/libs/shared/src/entities/index.ts
@@ -0,0 +1,4 @@
+export * from './Upload';
+export * from './Template';
+export * from './Mapping';
+export * from './Review';
diff --git a/libs/shared/src/errors/file-not-exist.error.ts b/libs/shared/src/errors/file-not-exist.error.ts
new file mode 100644
index 000000000..05e1c431a
--- /dev/null
+++ b/libs/shared/src/errors/file-not-exist.error.ts
@@ -0,0 +1,6 @@
+export class FileNotExistError extends Error {
+ constructor() {
+ super('File not found for the key provided');
+ this.name = 'NonExistingFileError';
+ }
+}
diff --git a/libs/shared/src/errors/index.ts b/libs/shared/src/errors/index.ts
new file mode 100644
index 000000000..9e47009fa
--- /dev/null
+++ b/libs/shared/src/errors/index.ts
@@ -0,0 +1 @@
+export * from './file-not-exist.error';
diff --git a/libs/shared/src/index.ts b/libs/shared/src/index.ts
new file mode 100644
index 000000000..505d02668
--- /dev/null
+++ b/libs/shared/src/index.ts
@@ -0,0 +1,6 @@
+export * from './utils/helpers';
+export * from './types';
+export * from './errors';
+export * from './services';
+export * from './config';
+export * from './entities';
diff --git a/libs/shared/src/services/http-client/api.client.ts b/libs/shared/src/services/http-client/api.client.ts
new file mode 100644
index 000000000..98f35e54b
--- /dev/null
+++ b/libs/shared/src/services/http-client/api.client.ts
@@ -0,0 +1,60 @@
+import axios, { AxiosInstance, AxiosRequestHeaders } from 'axios';
+import { ACCESS_KEY_NAME } from '../../.';
+
+export interface IParamObject {
+ [key: string]: string | string[] | number | boolean;
+}
+
+export interface IErrorObject {
+ error: string;
+ message: string;
+ statusCode: number;
+}
+
+export class HttpClient {
+ private axiosClient: AxiosInstance;
+
+ constructor(private backendUrl: string) {
+ this.axiosClient = axios.create({
+ baseURL: backendUrl + '/v1',
+ });
+ }
+
+ setAuthorizationToken(token: string) {
+ this.axiosClient.defaults.headers.common[ACCESS_KEY_NAME] = token;
+ }
+
+ disposeAuthorizationToken() {
+ delete this.axiosClient.defaults.headers.common[ACCESS_KEY_NAME];
+ }
+
+ async get(url: string, params?: IParamObject) {
+ return this.callWrapper(this.axiosClient.get.bind(this, url, { params }));
+ }
+
+ async post(url: string, body = {}, headers: AxiosRequestHeaders = {}) {
+ return this.callWrapper(this.axiosClient.post.bind(this, url, body, { headers }));
+ }
+
+ async patch(url: string, body = {}) {
+ return this.callWrapper(this.axiosClient.patch.bind(this, url, body));
+ }
+
+ private callWrapper(axiosCall: any) {
+ return new Promise(async (resolve, reject) => {
+ try {
+ const response = await axiosCall();
+
+ resolve(response.data);
+ } catch (error) {
+ if (error.response) {
+ return reject(error.response.data as IErrorObject);
+ } else if (error.request) {
+ return reject(error.request);
+ } else {
+ return reject(error.message);
+ }
+ }
+ });
+ }
+}
diff --git a/libs/shared/src/services/http-client/index.ts b/libs/shared/src/services/http-client/index.ts
new file mode 100644
index 000000000..0552afceb
--- /dev/null
+++ b/libs/shared/src/services/http-client/index.ts
@@ -0,0 +1 @@
+export * from './api.client';
diff --git a/libs/shared/src/services/index.ts b/libs/shared/src/services/index.ts
new file mode 100644
index 000000000..10b85b072
--- /dev/null
+++ b/libs/shared/src/services/index.ts
@@ -0,0 +1,2 @@
+export * from './storage.service';
+export * from './http-client';
diff --git a/libs/shared/src/services/storage.service.ts b/libs/shared/src/services/storage.service.ts
new file mode 100644
index 000000000..50084b416
--- /dev/null
+++ b/libs/shared/src/services/storage.service.ts
@@ -0,0 +1,79 @@
+import { Readable } from 'stream';
+import {
+ S3Client,
+ PutObjectCommand,
+ PutObjectCommandOutput,
+ GetObjectCommand,
+ DeleteObjectCommand,
+} from '@aws-sdk/client-s3';
+import { FileNotExistError } from '../errors/file-not-exist.error';
+
+export interface IFilePath {
+ path: string;
+ name: string;
+}
+
+export abstract class StorageService {
+ abstract uploadFile(
+ key: string,
+ file: Buffer | string,
+ contentType: string,
+ isPublic?: boolean
+ ): Promise;
+ abstract getFileContent(key: string, encoding?: BufferEncoding): Promise;
+ abstract deleteFile(key: string): Promise;
+}
+
+async function streamToString(stream: Readable, encoding: BufferEncoding): Promise {
+ return await new Promise((resolve, reject) => {
+ const chunks: Uint8Array[] = [];
+ stream.on('data', (chunk) => chunks.push(chunk));
+ stream.on('error', reject);
+ stream.on('end', () => resolve(Buffer.concat(chunks).toString(encoding)));
+ });
+}
+
+export class S3StorageService implements StorageService {
+ private s3 = new S3Client({
+ region: process.env.S3_REGION,
+ endpoint: process.env.S3_LOCAL_STACK || undefined,
+ forcePathStyle: true,
+ });
+
+ async uploadFile(key: string, file: Buffer, contentType: string, isPublic = false): Promise {
+ const command = new PutObjectCommand({
+ Bucket: process.env.S3_BUCKET_NAME,
+ Key: key,
+ Body: file,
+ ACL: isPublic ? 'public-read' : 'private',
+ ContentType: contentType,
+ });
+
+ return await this.s3.send(command);
+ }
+
+ async getFileContent(key: string, encoding = 'utf8' as BufferEncoding): Promise {
+ try {
+ const command = new GetObjectCommand({
+ Bucket: process.env.S3_BUCKET_NAME,
+ Key: key,
+ });
+ const data = await this.s3.send(command);
+
+ return await streamToString(data.Body as Readable, encoding);
+ } catch (error) {
+ if (error.code === 404 || error.message === 'The specified key does not exist.') {
+ throw new FileNotExistError();
+ }
+ throw error;
+ }
+ }
+
+ async deleteFile(key: string): Promise {
+ const command = new DeleteObjectCommand({
+ Bucket: process.env.S3_BUCKET_NAME,
+ Key: key,
+ });
+ await this.s3.send(command);
+ }
+}
diff --git a/libs/shared/src/types/column/column.types.ts b/libs/shared/src/types/column/column.types.ts
new file mode 100644
index 000000000..a24b060e5
--- /dev/null
+++ b/libs/shared/src/types/column/column.types.ts
@@ -0,0 +1,9 @@
+export enum ColumnTypesEnum {
+ 'STRING' = 'String',
+ 'NUMBER' = 'Number',
+ 'DATE' = 'Date',
+ 'EMAIL' = 'Email',
+ 'REGEX' = 'Regex',
+ 'SELECT' = 'Select',
+ 'ANY' = 'Any',
+}
diff --git a/libs/shared/src/types/common/common.types.ts b/libs/shared/src/types/common/common.types.ts
new file mode 100644
index 000000000..efb6148c4
--- /dev/null
+++ b/libs/shared/src/types/common/common.types.ts
@@ -0,0 +1,7 @@
+export type PaginationResult = {
+ page: number;
+ data: any[];
+ limit: number;
+ totalPages: number;
+ totalRecords: number;
+};
diff --git a/libs/shared/src/types/index.ts b/libs/shared/src/types/index.ts
new file mode 100644
index 000000000..37c1d605b
--- /dev/null
+++ b/libs/shared/src/types/index.ts
@@ -0,0 +1,5 @@
+export * from './column/column.types';
+export * from './upload/upload.types';
+export * from './webhook-log/webhook-log.types';
+export * from './common/common.types';
+export * from './widget/widget.types';
diff --git a/libs/shared/src/types/upload/upload.types.ts b/libs/shared/src/types/upload/upload.types.ts
new file mode 100644
index 000000000..d317ce930
--- /dev/null
+++ b/libs/shared/src/types/upload/upload.types.ts
@@ -0,0 +1,59 @@
+export enum UploadStatusEnum {
+ 'UPLOADED' = 'Uploaded',
+ 'MAPPING' = 'Mapping',
+ 'MAPPED' = 'Mapped',
+ 'REVIEWING' = 'Reviewing',
+ 'REVIEWED' = 'Reviewed',
+ 'CONFIRMED' = 'Confirmed',
+ 'PROCESSING' = 'Processing',
+ 'COMPLETED' = 'Completed',
+}
+
+export const SupportedFileMimeTypes = [
+ 'text/csv', // csv
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', // EXCELX
+ 'application/vnd.ms-excel', // EXCEL
+];
+
+export enum FileMimeTypesEnum {
+ 'CSV' = 'text/csv',
+ 'EXCEL' = 'application/vnd.ms-excel',
+ 'EXCELX' = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+ 'JSON' = 'application/json',
+}
+
+export enum FileEncodingsEnum {
+ 'CSV' = 'utf8',
+ 'EXCEL' = 'base64',
+ 'EXCELX' = 'base64',
+ 'JSON' = 'utf8',
+}
+
+export enum QueuesEnum {
+ 'PROCESS_FILE' = 'PROCESS_FILE',
+}
+
+export type ProcessFileCachedData = {
+ page: number;
+ callbackUrl: string;
+ chunkSize: number;
+ code: string; // template code
+ extra?: string;
+ isInvalidRecords: boolean;
+ processInvalidRecords: boolean;
+ _templateId: string;
+ validDataFilePath?: string;
+ invalidDataFilePath?: string;
+};
+
+export type ProcessFileData = {
+ uploadId: string;
+ cache?: ProcessFileCachedData;
+};
+export type PublishToQueueData = ProcessFileData;
+
+export interface IFileInformation {
+ headings: string[];
+ data: Record[];
+ totalRecords: number;
+}
diff --git a/libs/shared/src/types/webhook-log/webhook-log.types.ts b/libs/shared/src/types/webhook-log/webhook-log.types.ts
new file mode 100644
index 000000000..834213c50
--- /dev/null
+++ b/libs/shared/src/types/webhook-log/webhook-log.types.ts
@@ -0,0 +1,4 @@
+export enum StatusEnum {
+ SUCCEED = 'Success',
+ FAILED = 'Failed',
+}
diff --git a/libs/shared/src/types/widget/widget.types.ts b/libs/shared/src/types/widget/widget.types.ts
new file mode 100644
index 000000000..40691bf0d
--- /dev/null
+++ b/libs/shared/src/types/widget/widget.types.ts
@@ -0,0 +1,12 @@
+export interface IInitPayload {
+ template?: string;
+ accessToken?: string;
+}
+export interface IShowPayload {
+ extra?: string;
+ authHeaderValue?: string;
+}
+export interface IOption {
+ value: string;
+ label: string;
+}
diff --git a/libs/shared/src/utils/helpers.ts b/libs/shared/src/utils/helpers.ts
new file mode 100644
index 000000000..8d24568cb
--- /dev/null
+++ b/libs/shared/src/utils/helpers.ts
@@ -0,0 +1,39 @@
+export const changeToCode = (str = '') =>
+ str
+ ?.replace(/[^\s\w]/gi, '')
+ ?.toUpperCase()
+ ?.replace(/ /g, '_');
+
+export function isBrowser() {
+ return typeof window !== 'undefined';
+}
+
+const defaultDigits = 2;
+export function numberFormatter(num: number, digits = defaultDigits) {
+ const lookup = [
+ { value: 1, symbol: '' },
+ { value: 1e3, symbol: 'k' },
+ { value: 1e6, symbol: 'M' },
+ { value: 1e9, symbol: 'G' },
+ { value: 1e12, symbol: 'T' },
+ { value: 1e15, symbol: 'P' },
+ { value: 1e18, symbol: 'E' },
+ ];
+ const rx = /\.0+$|(\.[0-9]*[1-9])0+$/;
+ const item = lookup
+ .slice()
+ .reverse()
+ .find(function (lookupItem) {
+ return num >= lookupItem.value;
+ });
+
+ return item ? (num / item.value).toFixed(digits).replace(rx, '$1') + item.symbol : '0';
+}
+
+export function replaceVariablesInString(str: string, obj: Record): string {
+ return str.replace(/{([^{}]*)}/g, function (a, b) {
+ const value = obj[b];
+
+ return typeof value === 'string' || typeof value === 'number' ? value : a;
+ });
+}
diff --git a/libs/shared/tsconfig.build.json b/libs/shared/tsconfig.build.json
new file mode 100644
index 000000000..953ea921a
--- /dev/null
+++ b/libs/shared/tsconfig.build.json
@@ -0,0 +1,12 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "module": "commonjs",
+ "target": "es6",
+ "declaration": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "types": ["node"]
+ },
+ "include": ["src/**/*"]
+}
diff --git a/libs/shared/tsconfig.json b/libs/shared/tsconfig.json
new file mode 100644
index 000000000..2e0513159
--- /dev/null
+++ b/libs/shared/tsconfig.json
@@ -0,0 +1,6 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "types": ["node"]
+ }
+}
diff --git a/nx.json b/nx.json
new file mode 100644
index 000000000..f8a33fbd5
--- /dev/null
+++ b/nx.json
@@ -0,0 +1,37 @@
+{
+ "extends": "@nrwl/workspace/presets/npm.json",
+ "npmScope": "@impler",
+ "tasksRunnerOptions": {
+ "default": {
+ "runner": "@nrwl/nx-cloud",
+ "options": {
+ "cacheableOperations": ["build", "test", "lint", "package", "prepare"],
+ "canTrackAnalytics": false,
+ "accessToken": "MzIxZDg2NWQtY2FkNC00ZjBlLTk5N2QtYWIzYjY5YzEyM2UzfHJlYWQtd3JpdGU="
+ }
+ }
+ },
+ "targetDependencies": {
+ "build": [
+ {
+ "target": "build",
+ "projects": "dependencies"
+ }
+ ],
+ "prepare": [
+ {
+ "target": "prepare",
+ "projects": "dependencies"
+ }
+ ],
+ "package": [
+ {
+ "target": "package",
+ "projects": "dependencies"
+ }
+ ]
+ },
+ "affected": {
+ "defaultBase": "main"
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 000000000..c999fa2e6
--- /dev/null
+++ b/package.json
@@ -0,0 +1,103 @@
+{
+ "name": "impler.io",
+ "version": "0.1.0",
+ "description": "Open source infrastructure to import data easily",
+ "packageManager": "pnpm@7.9.4",
+ "main": "",
+ "scripts": {
+ "clean": "pnpm run prebuild && lerna clean --yes",
+ "lint": "nx run-many --target=lint --all",
+ "kill-ports": "npx kill-port 4701 3000 3500",
+ "setup:project": "npx pnpm@7.9.4 i && node scripts/setup-env-files.js",
+ "start:dev": "cross-env TZ=UTC lerna run start:dev --parallel --concurrency=20 --scope=@impler/{api,widget,embed,queue-manager,widget-demo}",
+ "start:widget-demo": "cross-env nx run @impler/widget-demo:start",
+ "start:dal": "cross-env nx run @impler/dal:start",
+ "start:api": "cross-env nx run @impler/api:start",
+ "start:embed": "cross-env nx run @impler/embed:start",
+ "start:widget": "cross-env nx run @impler/widget:start",
+ "start:queue-manager": "cross-env nx run @impler/queue-manager:start",
+ "start:docker:embed": "cd libs/embed && npm run start:docker",
+ "prebuild": "nx run-many --target=prebuild --all",
+ "build": "nx run-many --target=build --all",
+ "build:api": "nx build @impler/api",
+ "build:dal": "nx build @impler/dal",
+ "build:react": "nx build @impler/react",
+ "build:shared": "nx build @impler/shared",
+ "build:widget": "nx build @impler/widget",
+ "build:embed": "nx build @impler/embed",
+ "build:client": "nx build @impler/client",
+ "build:widget-demo": "nx build @impler/widget-demo",
+ "test": "nx run-many --target=test --all",
+ "test:api": "pnpm run --filter @impler/api test",
+ "release:patch": "lerna version patch --no-push",
+ "release:minor": "lerna version minor --no-push",
+ "release:preminor": "lerna version preminor --no-push",
+ "release:prerelease": "lerna version prerelease --no-push",
+ "publish": "lerna publish from-package"
+ },
+ "keywords": [
+ "data-import",
+ "excel-import",
+ "csv-import",
+ "impler",
+ "knovator",
+ "chavda-bhavik"
+ ],
+ "author": "knovator",
+ "license": "MIT",
+ "husky": {
+ "hooks": {
+ "pre-commit": "lint-staged"
+ }
+ },
+ "workspaces": {
+ "packages": [
+ "apps/*",
+ "libs/*",
+ "packages/*"
+ ]
+ },
+ "lint-staged": {
+ "apps/**/*.{ts,tsx,json}": [
+ "prettier --ignore-path ./.prettierignore --write",
+ "eslint --fix"
+ ],
+ "packages/**/*.{ts,tsx,json}": [
+ "prettier --ignore-path ./.prettierignore --write",
+ "eslint --fix"
+ ],
+ "libs/**/*.{ts,js,json}": [
+ "prettier --ignore-path ./.prettierignore --write",
+ "eslint --fix"
+ ]
+ },
+ "devDependencies": {
+ "@commitlint/cli": "^17.1.2",
+ "@commitlint/config-conventional": "^17.1.0",
+ "@nrwl/nx-cloud": "^14.6.2",
+ "@nrwl/workspace": "^14.7.11",
+ "@typescript-eslint/eslint-plugin": "^5.38.0",
+ "@typescript-eslint/parser": "^5.38.0",
+ "cross-env": "^7.0.3",
+ "eslint": "^8.23.1",
+ "eslint-config-airbnb-typescript": "^17.0.0",
+ "eslint-config-prettier": "^8.5.0",
+ "eslint-plugin-eslint-comments": "^3.2.0",
+ "eslint-plugin-functional": "^4.4.0",
+ "eslint-plugin-import": "^2.26.0",
+ "eslint-plugin-jsx-a11y": "^6.6.1",
+ "eslint-plugin-prettier": "^4.2.1",
+ "eslint-plugin-promise": "^6.0.1",
+ "eslint-plugin-react": "^7.31.8",
+ "eslint-plugin-react-hooks": "^4.6.0",
+ "fs-extra": "^10.1.0",
+ "husky": "^8.0.1",
+ "lerna": "^6.0.3",
+ "lint-staged": "^13.0.3",
+ "nx": "^14.7.11",
+ "prettier": "^2.7.1"
+ },
+ "dependencies": {
+ "amqp-connection-manager": "^4.1.7"
+ }
+}
diff --git a/packages/client/.editorconfig b/packages/client/.editorconfig
new file mode 100644
index 000000000..63187fe16
--- /dev/null
+++ b/packages/client/.editorconfig
@@ -0,0 +1,15 @@
+# http://editorconfig.org
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+indent_size = 2
+indent_style = space
+insert_final_newline = true
+max_line_length = 80
+trim_trailing_whitespace = true
+
+[*.md]
+max_line_length = 0
+trim_trailing_whitespace = false
diff --git a/packages/client/.eslintrc.js b/packages/client/.eslintrc.js
new file mode 100644
index 000000000..5a2cc7f1e
--- /dev/null
+++ b/packages/client/.eslintrc.js
@@ -0,0 +1,3 @@
+module.exports = {
+ extends: ['../../.eslintrc.js'],
+};
diff --git a/packages/client/.gitignore b/packages/client/.gitignore
new file mode 100644
index 000000000..a77e73f9b
--- /dev/null
+++ b/packages/client/.gitignore
@@ -0,0 +1,25 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# production
+build
+
+.npmrc
+.idea/*
+.nyc_output
+
+test
+
+src/**.js
+coverage
+*.log
+package-lock.json
+
+storybook-static
diff --git a/packages/client/.prettierignore b/packages/client/.prettierignore
new file mode 100644
index 000000000..0e80a3c86
--- /dev/null
+++ b/packages/client/.prettierignore
@@ -0,0 +1,2 @@
+# package.json is formatted by package managers, so we ignore it here
+package.json
\ No newline at end of file
diff --git a/packages/client/package.json b/packages/client/package.json
new file mode 100644
index 000000000..2da64f295
--- /dev/null
+++ b/packages/client/package.json
@@ -0,0 +1,54 @@
+{
+ "name": "@impler/client",
+ "version": "0.1.0",
+ "description": "API client to be used in end user environments",
+ "license": "MIT",
+ "author": "knovator",
+ "repository": "https://github.com/knovator/impler.io",
+ "types": "dist/index.d.ts",
+ "main": "dist/index.js",
+ "keywords": [
+ "impler",
+ "knovator",
+ "chavda-bhavik"
+ ],
+ "files": [
+ "dist",
+ "package.json"
+ ],
+ "scripts": {
+ "start": "npm run start:dev",
+ "preinstall": "pnpm build",
+ "prebuild": "rimraf dist",
+ "start:dev": "npm run watch:build",
+ "build": "cross-env node_modules/.bin/tsc -p tsconfig.build.json",
+ "fix": "run-s fix:*",
+ "fix:prettier": "prettier \"src/**/*.ts\" --write",
+ "fix:lint": "eslint src --ext .ts --fix",
+ "test:prettier": "prettier \"src/**/*.ts\"",
+ "watch:build": "tsc -p tsconfig.json -w",
+ "doc": "run-s doc:html && open-cli build/docs/index.html",
+ "doc:html": "typedoc src/ --exclude **/*.spec.ts --target ES6 --mode file --out build/docs",
+ "doc:json": "typedoc src/ --exclude **/*.spec.ts --target ES6 --mode file --json build/docs/typedoc.json",
+ "doc:publish": "gh-pages -m \"[ci skip] Updates\" -d build/docs"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "devDependencies": {
+ "@types/node": "^18.11.9",
+ "rimraf": "^3.0.2",
+ "typedoc": "^0.23.20",
+ "typescript": "4.8.4"
+ },
+ "dependencies": {
+ "@impler/shared": "^0.1.0",
+ "axios": "^0.26.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "prettier": {
+ "singleQuote": true
+ }
+}
diff --git a/packages/client/src/api/api.service.ts b/packages/client/src/api/api.service.ts
new file mode 100644
index 000000000..f29cedcb5
--- /dev/null
+++ b/packages/client/src/api/api.service.ts
@@ -0,0 +1,101 @@
+import {
+ HttpClient,
+ ITemplate,
+ IUpload,
+ IMapping,
+ IReviewData,
+ IMappingFinalize,
+} from '@impler/shared';
+
+export class ApiService {
+ private httpClient: HttpClient;
+
+ isAuthenticated = false;
+
+ constructor(private backendUrl: string) {
+ this.httpClient = new HttpClient(backendUrl);
+ }
+
+ constructQueryString(obj: Record): string {
+ const arr = [];
+ Object.keys(obj).forEach((key: string) => {
+ if (obj[key] !== undefined && obj[key] !== null)
+ arr.push(`${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`);
+ });
+ const query = arr.join('&');
+
+ return query ? `?${query}` : '';
+ }
+
+ setAuthorizationToken(token: string) {
+ this.httpClient.setAuthorizationToken(token);
+
+ this.isAuthenticated = true;
+ }
+
+ disposeAuthorizationToken() {
+ this.httpClient.disposeAuthorizationToken();
+
+ this.isAuthenticated = false;
+ }
+
+ async checkIsRequestvalid(projectId: string, template?: string) {
+ return this.httpClient.post(`/common/valid`, { projectId, template });
+ }
+
+ async uploadFile(data: {
+ template: string;
+ file: File;
+ authHeaderValue?: string;
+ extra?: string;
+ }) {
+ const formData = new FormData();
+ formData.append('file', data.file);
+ if (data.authHeaderValue)
+ formData.append('authHeaderValue', data.authHeaderValue);
+ if (data.extra) formData.append('extra', data.extra);
+
+ return this.httpClient.post(`/upload/${data.template}`, formData, {
+ 'Content-Type': 'multipart/form-data',
+ }) as Promise;
+ }
+
+ async getTemplates(projectId: string): Promise {
+ return this.httpClient.get(`/template/${projectId}`) as Promise<
+ ITemplate[]
+ >;
+ }
+
+ async getMappings(uploadId: string): Promise {
+ return this.httpClient.get(`/mapping/${uploadId}`) as Promise;
+ }
+
+ async finalizeMappings(uploadId: string, mappings: IMappingFinalize[]) {
+ return this.httpClient.post(
+ `/mapping/${uploadId}/finalize`,
+ mappings
+ ) as Promise;
+ }
+
+ async getReviewData(
+ uploadId: string,
+ page?: number,
+ limit?: number
+ ): Promise {
+ const queryString = this.constructQueryString({ limit, page });
+
+ return this.httpClient.get(
+ `/review/${uploadId}${queryString}`
+ ) as Promise;
+ }
+
+ async confirmReview(uploadId: string, processInvalidRecords?: boolean) {
+ return this.httpClient.post(`/review/${uploadId}/confirm`, {
+ processInvalidRecords,
+ }) as Promise;
+ }
+
+ async getUpload(uploadId: string) {
+ return this.httpClient.get(`/upload/${uploadId}`) as Promise;
+ }
+}
diff --git a/packages/client/src/index.ts b/packages/client/src/index.ts
new file mode 100644
index 000000000..80cd9cbc1
--- /dev/null
+++ b/packages/client/src/index.ts
@@ -0,0 +1 @@
+export { ApiService } from './api/api.service';
diff --git a/packages/client/tsconfig.build.json b/packages/client/tsconfig.build.json
new file mode 100644
index 000000000..953ea921a
--- /dev/null
+++ b/packages/client/tsconfig.build.json
@@ -0,0 +1,12 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "module": "commonjs",
+ "target": "es6",
+ "declaration": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "types": ["node"]
+ },
+ "include": ["src/**/*"]
+}
diff --git a/packages/client/tsconfig.json b/packages/client/tsconfig.json
new file mode 100644
index 000000000..2e0513159
--- /dev/null
+++ b/packages/client/tsconfig.json
@@ -0,0 +1,6 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "types": ["node"]
+ }
+}
diff --git a/packages/react/.eslintrc.js b/packages/react/.eslintrc.js
new file mode 100644
index 000000000..3d1007597
--- /dev/null
+++ b/packages/react/.eslintrc.js
@@ -0,0 +1,23 @@
+module.exports = {
+ rules: {
+ 'func-names': 'off',
+ 'jsx-a11y/anchor-is-valid': 'off',
+ '@typescript-eslint/no-explicit-any': 'off',
+ 'react/require-default-props': 'off',
+ '@typescript-eslint/naming-convention': [
+ 'error',
+ {
+ filter: '_',
+ selector: 'variableLike',
+ leadingUnderscore: 'allow',
+ format: ['PascalCase', 'camelCase', 'UPPER_CASE'],
+ },
+ ],
+ },
+ extends: ['../../.eslintrc.js'],
+ parserOptions: {
+ project: './tsconfig.json',
+ ecmaVersion: 2020,
+ sourceType: 'module',
+ },
+};
diff --git a/packages/react/.gitignore b/packages/react/.gitignore
new file mode 100644
index 000000000..29313577c
--- /dev/null
+++ b/packages/react/.gitignore
@@ -0,0 +1,23 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# production
+build
+
+.npmrc
+.idea/*
+.nyc_output
+
+test
+
+src/**.js
+coverage
+*.log
+package-lock.json
diff --git a/packages/react/package.json b/packages/react/package.json
new file mode 100644
index 000000000..37313700c
--- /dev/null
+++ b/packages/react/package.json
@@ -0,0 +1,56 @@
+{
+ "name": "@impler/react",
+ "version": "0.1.0",
+ "description": "React library to show widget in client applications",
+ "license": "MIT",
+ "author": "knovator",
+ "repository": "https://github.com/knovator/impler.io",
+ "types": "dist/index.d.ts",
+ "main": "dist/cjs/index.js",
+ "module": "dist/esm/index.js",
+ "keywords": [
+ "impler",
+ "knovator",
+ "chavda-bhavik"
+ ],
+ "files": [
+ "dist",
+ "package.json"
+ ],
+ "scripts": {
+ "lint": "eslint src",
+ "lint:fix": "pnpm lint --fix",
+ "preinstall": "pnpm build",
+ "start": "npm run build:watch",
+ "prebuild": "rimraf dist",
+ "build": "rollup -c",
+ "build:watch": "rollup -c -w"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.19.6",
+ "@rollup/plugin-commonjs": "^23.0.1",
+ "@rollup/plugin-node-resolve": "^15.0.0",
+ "@rollup/plugin-typescript": "^9.0.1",
+ "@types/react": "^18.0.21",
+ "@types/styled-components": "^5.1.26",
+ "babel-loader": "^8.2.5",
+ "rimraf": "^3.0.2",
+ "rollup": "^3.2.3",
+ "rollup-plugin-dts": "^5.0.0",
+ "rollup-plugin-node-externals": "^5.0.1",
+ "rollup-plugin-peer-deps-external": "^2.2.4",
+ "rollup-plugin-terser": "^7.0.2",
+ "tslib": "^2.4.0",
+ "typescript": "^4.8.3"
+ },
+ "dependencies": {
+ "@impler/shared": "^0.1.0",
+ "styled-components": "^5.3.6"
+ }
+}
diff --git a/packages/react/rollup.config.js b/packages/react/rollup.config.js
new file mode 100644
index 000000000..aac3a9e73
--- /dev/null
+++ b/packages/react/rollup.config.js
@@ -0,0 +1,37 @@
+const resolve = require('@rollup/plugin-node-resolve');
+const commonjs = require('@rollup/plugin-commonjs');
+const typescript = require('@rollup/plugin-typescript');
+const { default: dts } = require('rollup-plugin-dts');
+const { terser } = require('rollup-plugin-terser');
+const { externals } = require('rollup-plugin-node-externals');
+const packageJson = require('./package.json');
+
+module.exports = [
+ {
+ input: 'src/index.ts',
+ output: [
+ {
+ file: packageJson.main,
+ format: 'cjs',
+ sourcemap: true,
+ },
+ {
+ file: packageJson.module,
+ format: 'esm',
+ sourcemap: true,
+ },
+ ],
+ plugins: [
+ externals(),
+ resolve({ preferBuiltins: false, browser: true }),
+ commonjs(),
+ typescript({ tsconfig: './tsconfig.json' }),
+ terser(),
+ ],
+ },
+ {
+ input: 'dist/esm/index.d.ts',
+ output: [{ file: 'dist/index.d.ts', format: 'esm' }],
+ plugins: [dts()],
+ },
+];
diff --git a/packages/react/src/components/button/Button.tsx b/packages/react/src/components/button/Button.tsx
new file mode 100644
index 000000000..e60882b0d
--- /dev/null
+++ b/packages/react/src/components/button/Button.tsx
@@ -0,0 +1,76 @@
+import { IInitPayload, IShowPayload } from '@impler/shared';
+import React, { useEffect, useState } from 'react';
+import styled from 'styled-components';
+import { logger } from '../../utils';
+import { ButtonProps } from './Button.types';
+
+const StyledButton = styled.button`
+ color: white;
+ font-weight: 700;
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ padding-left: 1rem;
+ padding-right: 1rem;
+ background-color: rgba(59, 130, 246, 1);
+ border-radius: 0.25rem;
+ cursor: pointer;
+ text-transform: none;
+ font-family: inherit;
+ font-size: 100%;
+ line-height: inherit;
+ border: none;
+ &:disabled {
+ cursor: not-allowed;
+ }
+`;
+
+export const Button = ({
+ children = 'Import',
+ className = '',
+ projectId,
+ template,
+ authHeaderValue,
+ accessToken,
+ extra,
+}: ButtonProps): JSX.Element => {
+ const [isImplerInitiated, setIsImplerInitiated] = useState(false);
+
+ useEffect(() => {
+ if (window.impler && projectId) {
+ const initPayload: IInitPayload = { accessToken, template };
+ window.impler.init(projectId, initPayload);
+ setIsImplerInitiated(true);
+ // eslint-disable-next-line no-console
+ } else if (!window.impler) logger.logError('IMPLER_UNDEFINED_ERROR');
+ else if (!projectId) logger.logError('PROJECTID_NOT_SPECIFIED');
+ }, []);
+
+ const onButtonClick = async () => {
+ if (window.impler) {
+ const payload: IShowPayload = {};
+ if (extra) {
+ if (typeof extra === 'object') payload.extra = JSON.stringify(extra);
+ else payload.extra = extra;
+ }
+ if (authHeaderValue) {
+ if (typeof authHeaderValue === 'function' && authHeaderValue.constructor.name === 'AsyncFunction') {
+ payload.authHeaderValue = await authHeaderValue();
+ } else if (typeof authHeaderValue === 'function') {
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore
+ payload.authHeaderValue = authHeaderValue();
+ } else {
+ payload.authHeaderValue = authHeaderValue;
+ }
+ }
+
+ window.impler.show(payload);
+ }
+ };
+
+ return (
+
+ {children}
+
+ );
+};
diff --git a/packages/react/src/components/button/Button.types.ts b/packages/react/src/components/button/Button.types.ts
new file mode 100644
index 000000000..787c97715
--- /dev/null
+++ b/packages/react/src/components/button/Button.types.ts
@@ -0,0 +1,9 @@
+export interface ButtonProps {
+ projectId: string;
+ accessToken?: string;
+ template?: string;
+ authHeaderValue?: string | (() => string) | (() => Promise);
+ extra?: string | Record;
+ children?: React.ReactNode;
+ className?: string;
+}
diff --git a/packages/react/src/components/button/index.ts b/packages/react/src/components/button/index.ts
new file mode 100644
index 000000000..8b3714688
--- /dev/null
+++ b/packages/react/src/components/button/index.ts
@@ -0,0 +1,2 @@
+export * from './Button';
+export * from './Button.types';
diff --git a/packages/react/src/components/index.ts b/packages/react/src/components/index.ts
new file mode 100644
index 000000000..eaf5eea7f
--- /dev/null
+++ b/packages/react/src/components/index.ts
@@ -0,0 +1 @@
+export * from './button';
diff --git a/packages/react/src/config/index.ts b/packages/react/src/config/index.ts
new file mode 100644
index 000000000..d3bd21ef9
--- /dev/null
+++ b/packages/react/src/config/index.ts
@@ -0,0 +1 @@
+export * from './texts.config';
diff --git a/packages/react/src/config/texts.config.ts b/packages/react/src/config/texts.config.ts
new file mode 100644
index 000000000..698e42ca1
--- /dev/null
+++ b/packages/react/src/config/texts.config.ts
@@ -0,0 +1,4 @@
+export const TEXTS = {
+ PROJECTID_NOT_SPECIFIED: 'It looks like you have not specified projectId to the import button which is required!',
+ IMPLER_UNDEFINED_ERROR: 'It looks like you have not added embed script or your embed script path is incorrect!',
+};
diff --git a/packages/react/src/global.d.ts b/packages/react/src/global.d.ts
new file mode 100644
index 000000000..5e3628d45
--- /dev/null
+++ b/packages/react/src/global.d.ts
@@ -0,0 +1,11 @@
+interface IMessagePayload {
+ type: string;
+ [key: string]: any; // eslint-disable-line @typescript-eslint/no-explicit-any
+}
+
+declare interface Window {
+ impler: any;
+ parentIFrame: {
+ sendMessage: (payload: IMessagePayload) => void;
+ };
+}
diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts
new file mode 100644
index 000000000..07635cbbc
--- /dev/null
+++ b/packages/react/src/index.ts
@@ -0,0 +1 @@
+export * from './components';
diff --git a/packages/react/src/utils/index.ts b/packages/react/src/utils/index.ts
new file mode 100644
index 000000000..07bc209e3
--- /dev/null
+++ b/packages/react/src/utils/index.ts
@@ -0,0 +1 @@
+export * as logger from './logger';
diff --git a/packages/react/src/utils/logger.ts b/packages/react/src/utils/logger.ts
new file mode 100644
index 000000000..59803f42e
--- /dev/null
+++ b/packages/react/src/utils/logger.ts
@@ -0,0 +1,6 @@
+import { TEXTS } from '../config';
+
+export const logError = (key: keyof typeof TEXTS) => {
+ // eslint-disable-next-line no-console
+ console.error(TEXTS[key]);
+};
diff --git a/packages/react/tsconfig.json b/packages/react/tsconfig.json
new file mode 100644
index 000000000..f96a5f060
--- /dev/null
+++ b/packages/react/tsconfig.json
@@ -0,0 +1,16 @@
+{
+ "include": ["src"],
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "forceConsistentCasingInFileNames": true,
+ "target": "es5",
+ "strict": true,
+ "typeRoots": ["./node_modules/@types"],
+ "jsx": "react",
+ "module": "ESNext",
+ "declarationDir": "types",
+ "sourceMap": true,
+ "outDir": "dist",
+ "emitDeclarationOnly": true,
+ }
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 000000000..c1c64ab5e
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,23229 @@
+lockfileVersion: 5.4
+
+importers:
+
+ .:
+ specifiers:
+ '@commitlint/cli': ^17.1.2
+ '@commitlint/config-conventional': ^17.1.0
+ '@nrwl/nx-cloud': ^14.6.2
+ '@nrwl/workspace': ^14.7.11
+ '@typescript-eslint/eslint-plugin': ^5.38.0
+ '@typescript-eslint/parser': ^5.38.0
+ amqp-connection-manager: ^4.1.7
+ cross-env: ^7.0.3
+ eslint: ^8.23.1
+ eslint-config-airbnb-typescript: ^17.0.0
+ eslint-config-prettier: ^8.5.0
+ eslint-plugin-eslint-comments: ^3.2.0
+ eslint-plugin-functional: ^4.4.0
+ eslint-plugin-import: ^2.26.0
+ eslint-plugin-jsx-a11y: ^6.6.1
+ eslint-plugin-prettier: ^4.2.1
+ eslint-plugin-promise: ^6.0.1
+ eslint-plugin-react: ^7.31.8
+ eslint-plugin-react-hooks: ^4.6.0
+ fs-extra: ^10.1.0
+ husky: ^8.0.1
+ lerna: ^6.0.3
+ lint-staged: ^13.0.3
+ nx: ^14.7.11
+ prettier: ^2.7.1
+ dependencies:
+ amqp-connection-manager: 4.1.7_amqplib@0.10.3
+ devDependencies:
+ '@commitlint/cli': 17.1.2
+ '@commitlint/config-conventional': 17.1.0
+ '@nrwl/nx-cloud': 14.6.2
+ '@nrwl/workspace': 14.7.11_dojjs7twzt2enhh7vbcg6opfoq
+ '@typescript-eslint/eslint-plugin': 5.38.0_cyfvnejbgixxanpg7blnp3e3zi
+ '@typescript-eslint/parser': 5.38.0_abkyjrvwkq25uefwggm6hc3u2a
+ cross-env: 7.0.3
+ eslint: 8.23.1
+ eslint-config-airbnb-typescript: 17.0.0_j57hrpt2hfp47otngkwtnuyxpa
+ eslint-config-prettier: 8.5.0_eslint@8.23.1
+ eslint-plugin-eslint-comments: 3.2.0_eslint@8.23.1
+ eslint-plugin-functional: 4.4.0_abkyjrvwkq25uefwggm6hc3u2a
+ eslint-plugin-import: 2.26.0_cxqatnnjiq7ozd2bkspxnuicdq
+ eslint-plugin-jsx-a11y: 6.6.1_eslint@8.23.1
+ eslint-plugin-prettier: 4.2.1_cabrci5exjdaojcvd6xoxgeowu
+ eslint-plugin-promise: 6.0.1_eslint@8.23.1
+ eslint-plugin-react: 7.31.8_eslint@8.23.1
+ eslint-plugin-react-hooks: 4.6.0_eslint@8.23.1
+ fs-extra: 10.1.0
+ husky: 8.0.1
+ lerna: 6.0.3
+ lint-staged: 13.0.3
+ nx: 14.7.11
+ prettier: 2.7.1
+
+ apps/api:
+ specifiers:
+ '@aws-sdk/client-s3': ^3.185.0
+ '@impler/dal': ^0.1.0
+ '@impler/shared': ^0.1.0
+ '@nestjs/cli': ^9.1.5
+ '@nestjs/common': ^9.1.2
+ '@nestjs/core': ^9.1.2
+ '@nestjs/platform-express': ^9.1.2
+ '@nestjs/swagger': ^6.1.2
+ '@types/chai': ^4.3.4
+ '@types/express': ^4.17.14
+ '@types/mocha': ^10.0.0
+ '@types/multer': ^1.4.7
+ '@types/node': ^18.7.18
+ ajv: ^8.11.0
+ ajv-formats: ^2.1.1
+ ajv-keywords: ^5.1.0
+ body-parser: ^1.20.0
+ chai: ^4.3.7
+ class-transformer: ^0.5.1
+ class-validator: ^0.13.2
+ compression: ^1.7.4
+ dotenv: ^16.0.2
+ envalid: ^7.3.1
+ fast-csv: ^4.3.6
+ mocha: ^10.1.0
+ nodemon: ^2.0.20
+ rimraf: ^3.0.2
+ ts-loader: ^9.4.1
+ ts-node: ^10.9.1
+ tsconfig-paths: ^4.1.0
+ typescript: ^4.8.3
+ xlsx: ^0.18.5
+ dependencies:
+ '@aws-sdk/client-s3': 3.185.0
+ '@impler/dal': link:../../libs/dal
+ '@impler/shared': link:../../libs/shared
+ '@nestjs/common': 9.1.2_allg6cauirbqzgqcmexy2wdnoq
+ '@nestjs/core': 9.1.2_foclggtudvr6cnfc5hz7ukfode
+ '@nestjs/platform-express': 9.1.2_umdjpi6fqr4wvw73r3mhthbyle
+ '@nestjs/swagger': 6.1.2_o5ym4ozkuwx4tb6ybx3mgktlhe
+ ajv: 8.11.0
+ ajv-formats: 2.1.1_ajv@8.11.0
+ ajv-keywords: 5.1.0_ajv@8.11.0
+ body-parser: 1.20.0
+ class-transformer: 0.5.1
+ class-validator: 0.13.2
+ compression: 1.7.4
+ dotenv: 16.0.2
+ envalid: 7.3.1
+ fast-csv: 4.3.6
+ rimraf: 3.0.2
+ xlsx: 0.18.5
+ devDependencies:
+ '@nestjs/cli': 9.1.5
+ '@types/chai': 4.3.4
+ '@types/express': 4.17.14
+ '@types/mocha': 10.0.0
+ '@types/multer': 1.4.7
+ '@types/node': 18.7.18
+ chai: 4.3.7
+ mocha: 10.1.0
+ nodemon: 2.0.20
+ ts-loader: 9.4.1_kb3egcnme7w23lfa5xodfjfhge
+ ts-node: 10.9.1_bidgzm5cq2du6gnjtweqqjrrn4
+ tsconfig-paths: 4.1.0
+ typescript: 4.8.3
+
+ apps/queue-manager:
+ specifiers:
+ '@impler/dal': ^0.1.0
+ '@impler/shared': ^0.1.0
+ '@types/node': ^18.7.18
+ axios: ^0.26.1
+ dotenv: ^16.0.2
+ envalid: ^7.3.1
+ nodemon: ^2.0.20
+ rimraf: ^3.0.2
+ ts-node: ^10.9.1
+ typescript: ^4.8.3
+ dependencies:
+ '@impler/dal': link:../../libs/dal
+ '@impler/shared': link:../../libs/shared
+ axios: 0.26.1
+ dotenv: 16.0.2
+ envalid: 7.3.1
+ devDependencies:
+ '@types/node': 18.7.18
+ nodemon: 2.0.20
+ rimraf: 3.0.2
+ ts-node: 10.9.1_bidgzm5cq2du6gnjtweqqjrrn4
+ typescript: 4.8.3
+
+ apps/widget:
+ specifiers:
+ '@craco/craco': ^6.4.5
+ '@emotion/react': ^11.10.5
+ '@impler/client': ^0.1.0
+ '@impler/shared': ^0.1.0
+ '@mantine/core': ^5.6.3
+ '@mantine/dropzone': ^5.6.3
+ '@mantine/notifications': 5.6.3
+ '@storybook/addon-essentials': ^6.5.13
+ '@storybook/react': ^6.5.13
+ '@tanstack/react-query': ^4.14.5
+ '@types/file-saver': ^2.0.5
+ '@types/react': ^18.0.21
+ '@types/react-dom': ^18.0.6
+ axios: ^0.26.1
+ cross-env: ^7.0.3
+ file-saver: ^2.0.5
+ http-server: ^14.1.1
+ react: 18.2.0
+ react-dom: 18.2.0
+ react-hook-form: ^7.39.1
+ react-router-dom: ^6.4.2
+ react-scripts: 5.0.1
+ rimraf: ^3.0.2
+ typescript: ^4.8.3
+ web-vitals: ^3.0.4
+ webfontloader: ^1.6.28
+ webpack-dev-server: ^4.11.1
+ dependencies:
+ '@craco/craco': 6.4.5_tv4nxnop4tjfwoiqwupc4ah6he
+ '@emotion/react': 11.10.5_d3zi5agmim5yvele7myolzagti
+ '@impler/client': link:../../packages/client
+ '@impler/shared': link:../../libs/shared
+ '@mantine/core': 5.6.3_lha5ulipqaccx6prm56igoh3zy
+ '@mantine/dropzone': 5.6.3_hliqdvg4trnmlenfv3ync25tfa
+ '@mantine/notifications': 5.6.3_hliqdvg4trnmlenfv3ync25tfa
+ '@storybook/addon-essentials': 6.5.13_jbjkrzxoioyjn2npuaofuog6gm
+ '@storybook/react': 6.5.13_sevfxvufqxngza4zj5dbnig4vq
+ '@tanstack/react-query': 4.14.5_biqbaboplfbrettd7655fr4n2y
+ axios: 0.26.1
+ cross-env: 7.0.3
+ file-saver: 2.0.5
+ http-server: 14.1.1
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ react-hook-form: 7.39.1_react@18.2.0
+ react-router-dom: 6.4.2_biqbaboplfbrettd7655fr4n2y
+ react-scripts: 5.0.1_vpm4epegb5iztd7yhibv2hqiti
+ rimraf: 3.0.2
+ web-vitals: 3.0.4
+ webfontloader: 1.6.28
+ webpack-dev-server: 4.11.1_webpack@5.74.0
+ devDependencies:
+ '@types/file-saver': 2.0.5
+ '@types/react': 18.0.21
+ '@types/react-dom': 18.0.6
+ typescript: 4.8.3
+
+ apps/widget-demo:
+ specifiers:
+ '@impler/react': ^0.1.0
+ '@types/react': ^18.0.21
+ '@types/react-dom': ^18.0.6
+ '@vitejs/plugin-react': ^2.2.0
+ react: 18.2.0
+ react-dom: 18.2.0
+ rimraf: ^3.0.2
+ typescript: ^4.8.4
+ vite: ^3.2.3
+ dependencies:
+ '@impler/react': link:../../packages/react
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ devDependencies:
+ '@types/react': 18.0.21
+ '@types/react-dom': 18.0.6
+ '@vitejs/plugin-react': 2.2.0_vite@3.2.3
+ rimraf: 3.0.2
+ typescript: 4.8.4
+ vite: 3.2.3
+
+ libs/dal:
+ specifiers:
+ '@types/node': ^18.7.18
+ class-transformer: ^0.5.1
+ eslint-plugin-prettier: ^4.2.1
+ mongoose: ^6.6.1
+ nodemon: ^2.0.20
+ rimraf: ^3.0.2
+ ts-node: ^10.9.1
+ tsconfig-paths: ^4.1.0
+ typescript: ^4.8.3
+ dependencies:
+ class-transformer: 0.5.1
+ mongoose: 6.6.1
+ rimraf: 3.0.2
+ devDependencies:
+ '@types/node': 18.7.18
+ eslint-plugin-prettier: 4.2.1_lpvhfrfofky3e6gkwtrv5gvhfa
+ nodemon: 2.0.20
+ ts-node: 10.9.1_bidgzm5cq2du6gnjtweqqjrrn4
+ tsconfig-paths: 4.1.0
+ typescript: 4.8.3
+
+ libs/embed:
+ specifiers:
+ '@commitlint/cli': ^17.1.2
+ '@commitlint/config-conventional': ^17.1.0
+ '@rollup/plugin-commonjs': ^23.0.1
+ '@rollup/plugin-json': ^5.0.1
+ '@rollup/plugin-node-resolve': ^15.0.0
+ '@rollup/plugin-replace': ^5.0.0
+ '@rollup/plugin-typescript': ^9.0.1
+ '@types/lodash.camelcase': ^4.3.7
+ '@types/node': ^18.7.18
+ concurrently: ^7.4.0
+ cross-env: ^7.0.3
+ lint-staged: ^13.0.3
+ lodash.camelcase: ^4.3.0
+ prettier: ^2.7.1
+ rimraf: ^3.0.2
+ rollup: ^3.2.3
+ rollup-plugin-typescript2: ^0.34.1
+ ts-node: ^10.9.1
+ tslib: ^2.4.0
+ typescript: ^4.8.3
+ devDependencies:
+ '@commitlint/cli': 17.1.2
+ '@commitlint/config-conventional': 17.1.0
+ '@rollup/plugin-commonjs': 23.0.1_rollup@3.2.3
+ '@rollup/plugin-json': 5.0.1_rollup@3.2.3
+ '@rollup/plugin-node-resolve': 15.0.0_rollup@3.2.3
+ '@rollup/plugin-replace': 5.0.0_rollup@3.2.3
+ '@rollup/plugin-typescript': 9.0.1_l76lguts6rhkt2cfcgdaysjzr4
+ '@types/lodash.camelcase': 4.3.7
+ '@types/node': 18.7.18
+ concurrently: 7.4.0
+ cross-env: 7.0.3
+ lint-staged: 13.0.3
+ lodash.camelcase: 4.3.0
+ prettier: 2.7.1
+ rimraf: 3.0.2
+ rollup: 3.2.3
+ rollup-plugin-typescript2: 0.34.1_723547pa73ldc3ok456m7rj5ky
+ ts-node: 10.9.1_bidgzm5cq2du6gnjtweqqjrrn4
+ tslib: 2.4.0
+ typescript: 4.8.3
+
+ libs/shared:
+ specifiers:
+ '@aws-sdk/client-s3': ^3.185.0
+ '@types/node': ^18.7.18
+ axios: ^0.26.1
+ rimraf: ^3.0.2
+ typescript: ^4.8.3
+ dependencies:
+ '@aws-sdk/client-s3': 3.185.0
+ axios: 0.26.1
+ devDependencies:
+ '@types/node': 18.7.18
+ rimraf: 3.0.2
+ typescript: 4.8.3
+
+ packages/client:
+ specifiers:
+ '@impler/shared': ^0.1.0
+ '@types/node': ^18.11.9
+ axios: ^0.26.1
+ rimraf: ^3.0.2
+ typedoc: ^0.23.20
+ typescript: 4.8.4
+ dependencies:
+ '@impler/shared': link:../../libs/shared
+ axios: 0.26.1
+ devDependencies:
+ '@types/node': 18.11.9
+ rimraf: 3.0.2
+ typedoc: 0.23.20_typescript@4.8.4
+ typescript: 4.8.4
+
+ packages/react:
+ specifiers:
+ '@babel/core': ^7.19.6
+ '@impler/shared': ^0.1.0
+ '@rollup/plugin-commonjs': ^23.0.1
+ '@rollup/plugin-node-resolve': ^15.0.0
+ '@rollup/plugin-typescript': ^9.0.1
+ '@types/react': ^18.0.21
+ '@types/styled-components': ^5.1.26
+ babel-loader: ^8.2.5
+ react: '>=16.8.0'
+ rimraf: ^3.0.2
+ rollup: ^3.2.3
+ rollup-plugin-dts: ^5.0.0
+ rollup-plugin-node-externals: ^5.0.1
+ rollup-plugin-peer-deps-external: ^2.2.4
+ rollup-plugin-terser: ^7.0.2
+ styled-components: ^5.3.6
+ tslib: ^2.4.0
+ typescript: ^4.8.3
+ dependencies:
+ '@impler/shared': link:../../libs/shared
+ react: 18.2.0
+ styled-components: 5.3.6_7i5myeigehqah43i5u7wbekgba
+ devDependencies:
+ '@babel/core': 7.19.6
+ '@rollup/plugin-commonjs': 23.0.1_rollup@3.2.3
+ '@rollup/plugin-node-resolve': 15.0.0_rollup@3.2.3
+ '@rollup/plugin-typescript': 9.0.1_l76lguts6rhkt2cfcgdaysjzr4
+ '@types/react': 18.0.21
+ '@types/styled-components': 5.1.26
+ babel-loader: 8.2.5_6zc4kxld457avlfyhj3lzsljlm
+ rimraf: 3.0.2
+ rollup: 3.2.3
+ rollup-plugin-dts: 5.0.0_723547pa73ldc3ok456m7rj5ky
+ rollup-plugin-node-externals: 5.0.1_rollup@3.2.3
+ rollup-plugin-peer-deps-external: 2.2.4_rollup@3.2.3
+ rollup-plugin-terser: 7.0.2_rollup@3.2.3
+ tslib: 2.4.0
+ typescript: 4.8.3
+
+packages:
+
+ /@acuminous/bitsyntax/0.1.2:
+ resolution: {integrity: sha512-29lUK80d1muEQqiUsSo+3A0yP6CdspgC95EnKBMi22Xlwt79i/En4Vr67+cXhU+cZjbti3TgGGC5wy1stIywVQ==}
+ engines: {node: '>=0.8'}
+ dependencies:
+ buffer-more-ints: 1.0.0
+ debug: 4.3.4
+ safe-buffer: 5.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@ampproject/remapping/2.2.0:
+ resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/gen-mapping': 0.1.1
+ '@jridgewell/trace-mapping': 0.3.15
+
+ /@angular-devkit/core/14.2.1_chokidar@3.5.3:
+ resolution: {integrity: sha512-lW8oNGuJqr4r31FWBjfWQYkSXdiOHBGOThIEtHvUVBKfPF/oVrupLueCUgBPel+NvxENXdo93uPsqHN7bZbmsQ==}
+ engines: {node: ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+ peerDependencies:
+ chokidar: ^3.5.2
+ peerDependenciesMeta:
+ chokidar:
+ optional: true
+ dependencies:
+ ajv: 8.11.0
+ ajv-formats: 2.1.1_ajv@8.11.0
+ chokidar: 3.5.3
+ jsonc-parser: 3.1.0
+ rxjs: 6.6.7
+ source-map: 0.7.4
+ dev: true
+
+ /@angular-devkit/core/14.2.2_chokidar@3.5.3:
+ resolution: {integrity: sha512-ofDhTmJqoAkmkJP0duwUaCxDBMxPlc+AWYwgs3rKKZeJBb0d+tchEXHXevD5bYbbRfXtnwM+Vye2XYHhA4nWAA==}
+ engines: {node: ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+ peerDependencies:
+ chokidar: ^3.5.2
+ peerDependenciesMeta:
+ chokidar:
+ optional: true
+ dependencies:
+ ajv: 8.11.0
+ ajv-formats: 2.1.1_ajv@8.11.0
+ chokidar: 3.5.3
+ jsonc-parser: 3.1.0
+ rxjs: 6.6.7
+ source-map: 0.7.4
+ dev: true
+
+ /@angular-devkit/schematics-cli/14.2.2_chokidar@3.5.3:
+ resolution: {integrity: sha512-timCty5tO1A5VOcy8nVJ+jL98i6+ct5/Hg+4rQxc3J6agmmNL9fALboJBEz1ckTt7MewlGtrpohMMy+YGhuWOg==}
+ engines: {node: ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+ hasBin: true
+ dependencies:
+ '@angular-devkit/core': 14.2.2_chokidar@3.5.3
+ '@angular-devkit/schematics': 14.2.2_chokidar@3.5.3
+ ansi-colors: 4.1.3
+ inquirer: 8.2.4
+ symbol-observable: 4.0.0
+ yargs-parser: 21.1.1
+ transitivePeerDependencies:
+ - chokidar
+ dev: true
+
+ /@angular-devkit/schematics/14.2.1_chokidar@3.5.3:
+ resolution: {integrity: sha512-0U18FwDYt4zROBPrvewH6iBTkf2ozVHN4/gxUb9jWrqVw8mPU5AWc/iYxQLHBSinkr2Egjo1H/i9aBqgJSeh3g==}
+ engines: {node: ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+ dependencies:
+ '@angular-devkit/core': 14.2.1_chokidar@3.5.3
+ jsonc-parser: 3.1.0
+ magic-string: 0.26.2
+ ora: 5.4.1
+ rxjs: 6.6.7
+ transitivePeerDependencies:
+ - chokidar
+ dev: true
+
+ /@angular-devkit/schematics/14.2.2_chokidar@3.5.3:
+ resolution: {integrity: sha512-90hseNg1yQ2AR+lVr/NByZRHnYAlzCL6hr9p9q1KPHxA3Owo04yX6n6dvR/xf27hCopXInXKPsasR59XCx5ZOQ==}
+ engines: {node: ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+ dependencies:
+ '@angular-devkit/core': 14.2.2_chokidar@3.5.3
+ jsonc-parser: 3.1.0
+ magic-string: 0.26.2
+ ora: 5.4.1
+ rxjs: 6.6.7
+ transitivePeerDependencies:
+ - chokidar
+ dev: true
+
+ /@apideck/better-ajv-errors/0.3.6_ajv@8.11.0:
+ resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ ajv: '>=8'
+ dependencies:
+ ajv: 8.11.0
+ json-schema: 0.4.0
+ jsonpointer: 5.0.1
+ leven: 3.1.0
+ dev: false
+
+ /@aws-crypto/crc32/2.0.0:
+ resolution: {integrity: sha512-TvE1r2CUueyXOuHdEigYjIZVesInd9KN+K/TFFNfkkxRThiNxO6i4ZqqAVMoEjAamZZ1AA8WXJkjCz7YShHPQA==}
+ dependencies:
+ '@aws-crypto/util': 2.0.2
+ '@aws-sdk/types': 3.183.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/crc32c/2.0.0:
+ resolution: {integrity: sha512-vF0eMdMHx3O3MoOXUfBZry8Y4ZDtcuskjjKgJz8YfIDjLStxTZrYXk+kZqtl6A0uCmmiN/Eb/JbC/CndTV1MHg==}
+ dependencies:
+ '@aws-crypto/util': 2.0.2
+ '@aws-sdk/types': 3.183.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/ie11-detection/2.0.2:
+ resolution: {integrity: sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw==}
+ dependencies:
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/sha1-browser/2.0.0:
+ resolution: {integrity: sha512-3fIVRjPFY8EG5HWXR+ZJZMdWNRpwbxGzJ9IH9q93FpbgCH8u8GHRi46mZXp3cYD7gealmyqpm3ThZwLKJjWJhA==}
+ dependencies:
+ '@aws-crypto/ie11-detection': 2.0.2
+ '@aws-crypto/supports-web-crypto': 2.0.2
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/util-locate-window': 3.183.0
+ '@aws-sdk/util-utf8-browser': 3.183.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/sha256-browser/2.0.0:
+ resolution: {integrity: sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A==}
+ dependencies:
+ '@aws-crypto/ie11-detection': 2.0.2
+ '@aws-crypto/sha256-js': 2.0.0
+ '@aws-crypto/supports-web-crypto': 2.0.2
+ '@aws-crypto/util': 2.0.2
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/util-locate-window': 3.183.0
+ '@aws-sdk/util-utf8-browser': 3.183.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/sha256-js/2.0.0:
+ resolution: {integrity: sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==}
+ dependencies:
+ '@aws-crypto/util': 2.0.2
+ '@aws-sdk/types': 3.183.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/supports-web-crypto/2.0.2:
+ resolution: {integrity: sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ==}
+ dependencies:
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/util/2.0.2:
+ resolution: {integrity: sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA==}
+ dependencies:
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/util-utf8-browser': 3.183.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-sdk/abort-controller/3.183.0:
+ resolution: {integrity: sha512-iRhdCoC/QyyB6iRCytb12T0XtfmQRn849vnbcUd8BprXvkQ/YwmFS//4Lj02uxS+myqXCntoAj1nKvZZwcFmbg==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/chunked-blob-reader-native/3.183.0:
+ resolution: {integrity: sha512-CjFeO3F9IwVdfLUzqIuHtDpbzd7zqDyGpyy6qIdf1WKbpqrJ0TlGXuvIm4LytVaDSd4lLvBc7VXsSQS0Pz0A0A==}
+ dependencies:
+ '@aws-sdk/util-base64-browser': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/chunked-blob-reader/3.183.0:
+ resolution: {integrity: sha512-N8fyzlo6yvLH7SYxGyWUWj8kpESdlE9wbSY1+1LxB8Z/VIUUiyivMH2dcvwcYnP1LexNXrazTE3zxo13O0XUaA==}
+ dependencies:
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/client-s3/3.185.0:
+ resolution: {integrity: sha512-hFdfbHkIKNenAtQUlzNVHiZKW91JQkP0VJpgPNhvbU1ycWZwKPS5Hb7kVMkvSDi6tbSCNB4ZbUKp+Fv67zpsUA==}
+ engines: {node: '>=12.0.0'}
+ dependencies:
+ '@aws-crypto/sha1-browser': 2.0.0
+ '@aws-crypto/sha256-browser': 2.0.0
+ '@aws-crypto/sha256-js': 2.0.0
+ '@aws-sdk/client-sts': 3.185.0
+ '@aws-sdk/config-resolver': 3.183.0
+ '@aws-sdk/credential-provider-node': 3.185.0
+ '@aws-sdk/eventstream-serde-browser': 3.183.0
+ '@aws-sdk/eventstream-serde-config-resolver': 3.183.0
+ '@aws-sdk/eventstream-serde-node': 3.183.0
+ '@aws-sdk/fetch-http-handler': 3.183.0
+ '@aws-sdk/hash-blob-browser': 3.183.0
+ '@aws-sdk/hash-node': 3.183.0
+ '@aws-sdk/hash-stream-node': 3.183.0
+ '@aws-sdk/invalid-dependency': 3.183.0
+ '@aws-sdk/md5-js': 3.183.0
+ '@aws-sdk/middleware-bucket-endpoint': 3.183.0
+ '@aws-sdk/middleware-content-length': 3.183.0
+ '@aws-sdk/middleware-expect-continue': 3.183.0
+ '@aws-sdk/middleware-flexible-checksums': 3.183.0
+ '@aws-sdk/middleware-host-header': 3.183.0
+ '@aws-sdk/middleware-location-constraint': 3.183.0
+ '@aws-sdk/middleware-logger': 3.183.0
+ '@aws-sdk/middleware-recursion-detection': 3.183.0
+ '@aws-sdk/middleware-retry': 3.185.0
+ '@aws-sdk/middleware-sdk-s3': 3.183.0
+ '@aws-sdk/middleware-serde': 3.183.0
+ '@aws-sdk/middleware-signing': 3.183.0
+ '@aws-sdk/middleware-ssec': 3.183.0
+ '@aws-sdk/middleware-stack': 3.183.0
+ '@aws-sdk/middleware-user-agent': 3.183.0
+ '@aws-sdk/node-config-provider': 3.183.0
+ '@aws-sdk/node-http-handler': 3.185.0
+ '@aws-sdk/protocol-http': 3.183.0
+ '@aws-sdk/signature-v4-multi-region': 3.183.0
+ '@aws-sdk/smithy-client': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/url-parser': 3.183.0
+ '@aws-sdk/util-base64-browser': 3.183.0
+ '@aws-sdk/util-base64-node': 3.183.0
+ '@aws-sdk/util-body-length-browser': 3.183.0
+ '@aws-sdk/util-body-length-node': 3.183.0
+ '@aws-sdk/util-defaults-mode-browser': 3.183.0
+ '@aws-sdk/util-defaults-mode-node': 3.183.0
+ '@aws-sdk/util-stream-browser': 3.183.0
+ '@aws-sdk/util-stream-node': 3.185.0
+ '@aws-sdk/util-user-agent-browser': 3.183.0
+ '@aws-sdk/util-user-agent-node': 3.183.0
+ '@aws-sdk/util-utf8-browser': 3.183.0
+ '@aws-sdk/util-utf8-node': 3.183.0
+ '@aws-sdk/util-waiter': 3.183.0
+ '@aws-sdk/xml-builder': 3.183.0
+ entities: 2.2.0
+ fast-xml-parser: 3.19.0
+ tslib: 2.4.0
+ transitivePeerDependencies:
+ - '@aws-sdk/signature-v4-crt'
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/client-sso/3.185.0:
+ resolution: {integrity: sha512-dov6GPs0cBMO2+LUzbIppD1koHF02SoOMSHyLC5oEqve1UvcQ904geb3NPcm9WKjKBiNeFDdU/wTKf08m58Qnw==}
+ engines: {node: '>=12.0.0'}
+ dependencies:
+ '@aws-crypto/sha256-browser': 2.0.0
+ '@aws-crypto/sha256-js': 2.0.0
+ '@aws-sdk/config-resolver': 3.183.0
+ '@aws-sdk/fetch-http-handler': 3.183.0
+ '@aws-sdk/hash-node': 3.183.0
+ '@aws-sdk/invalid-dependency': 3.183.0
+ '@aws-sdk/middleware-content-length': 3.183.0
+ '@aws-sdk/middleware-host-header': 3.183.0
+ '@aws-sdk/middleware-logger': 3.183.0
+ '@aws-sdk/middleware-recursion-detection': 3.183.0
+ '@aws-sdk/middleware-retry': 3.185.0
+ '@aws-sdk/middleware-serde': 3.183.0
+ '@aws-sdk/middleware-stack': 3.183.0
+ '@aws-sdk/middleware-user-agent': 3.183.0
+ '@aws-sdk/node-config-provider': 3.183.0
+ '@aws-sdk/node-http-handler': 3.185.0
+ '@aws-sdk/protocol-http': 3.183.0
+ '@aws-sdk/smithy-client': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/url-parser': 3.183.0
+ '@aws-sdk/util-base64-browser': 3.183.0
+ '@aws-sdk/util-base64-node': 3.183.0
+ '@aws-sdk/util-body-length-browser': 3.183.0
+ '@aws-sdk/util-body-length-node': 3.183.0
+ '@aws-sdk/util-defaults-mode-browser': 3.183.0
+ '@aws-sdk/util-defaults-mode-node': 3.183.0
+ '@aws-sdk/util-user-agent-browser': 3.183.0
+ '@aws-sdk/util-user-agent-node': 3.183.0
+ '@aws-sdk/util-utf8-browser': 3.183.0
+ '@aws-sdk/util-utf8-node': 3.183.0
+ tslib: 2.4.1
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/client-sts/3.185.0:
+ resolution: {integrity: sha512-XllweXO8tlbMmqMDCok9wzfpzMxJMXKPbqFVhDFyfs3C24OafwFIxCB8/LfyWXNX5/PuT7NJ6IRSbsiDCL6xKQ==}
+ engines: {node: '>=12.0.0'}
+ dependencies:
+ '@aws-crypto/sha256-browser': 2.0.0
+ '@aws-crypto/sha256-js': 2.0.0
+ '@aws-sdk/config-resolver': 3.183.0
+ '@aws-sdk/credential-provider-node': 3.185.0
+ '@aws-sdk/fetch-http-handler': 3.183.0
+ '@aws-sdk/hash-node': 3.183.0
+ '@aws-sdk/invalid-dependency': 3.183.0
+ '@aws-sdk/middleware-content-length': 3.183.0
+ '@aws-sdk/middleware-host-header': 3.183.0
+ '@aws-sdk/middleware-logger': 3.183.0
+ '@aws-sdk/middleware-recursion-detection': 3.183.0
+ '@aws-sdk/middleware-retry': 3.185.0
+ '@aws-sdk/middleware-sdk-sts': 3.183.0
+ '@aws-sdk/middleware-serde': 3.183.0
+ '@aws-sdk/middleware-signing': 3.183.0
+ '@aws-sdk/middleware-stack': 3.183.0
+ '@aws-sdk/middleware-user-agent': 3.183.0
+ '@aws-sdk/node-config-provider': 3.183.0
+ '@aws-sdk/node-http-handler': 3.185.0
+ '@aws-sdk/protocol-http': 3.183.0
+ '@aws-sdk/smithy-client': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/url-parser': 3.183.0
+ '@aws-sdk/util-base64-browser': 3.183.0
+ '@aws-sdk/util-base64-node': 3.183.0
+ '@aws-sdk/util-body-length-browser': 3.183.0
+ '@aws-sdk/util-body-length-node': 3.183.0
+ '@aws-sdk/util-defaults-mode-browser': 3.183.0
+ '@aws-sdk/util-defaults-mode-node': 3.183.0
+ '@aws-sdk/util-user-agent-browser': 3.183.0
+ '@aws-sdk/util-user-agent-node': 3.183.0
+ '@aws-sdk/util-utf8-browser': 3.183.0
+ '@aws-sdk/util-utf8-node': 3.183.0
+ entities: 2.2.0
+ fast-xml-parser: 3.19.0
+ tslib: 2.4.1
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/config-resolver/3.183.0:
+ resolution: {integrity: sha512-cJBY5g+yJAI0iigketD3rbweyoLOw6SFiJDzRqZq3KgytmnhnrmNbRVTSdq1Qtn+d20NVxT9kSRUu21QyHb1nw==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/signature-v4': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/util-config-provider': 3.183.0
+ '@aws-sdk/util-middleware': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/credential-provider-env/3.183.0:
+ resolution: {integrity: sha512-RJ1QZxpfWf3hmjUm1fYCEj3p4Rl61kMFfU6ab3hpDGuSXbuLkAvTOIbssIUDHcgxUSszV5XqpPzBUnTui3cZYA==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/property-provider': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/credential-provider-imds/3.183.0:
+ resolution: {integrity: sha512-RHzciaoW0sPV52VUMd3SrIFrKhXsKbn9okEF+UdR2P3RgxNsguUZsewpDqhjGZBH0E2IiuFrBPjsxQKAI+mFbQ==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/node-config-provider': 3.183.0
+ '@aws-sdk/property-provider': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/url-parser': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/credential-provider-ini/3.185.0:
+ resolution: {integrity: sha512-PHYUqlpad1ZefWX2f2ZL2m2XKtIDU6IzaYc1zH60vkVskC0SAjDnuwTNcEnWPTG89j8Yj6250yIxuftYPjdEmg==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/credential-provider-env': 3.183.0
+ '@aws-sdk/credential-provider-imds': 3.183.0
+ '@aws-sdk/credential-provider-sso': 3.185.0
+ '@aws-sdk/credential-provider-web-identity': 3.183.0
+ '@aws-sdk/property-provider': 3.183.0
+ '@aws-sdk/shared-ini-file-loader': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-node/3.185.0:
+ resolution: {integrity: sha512-hTsDFIK/FmcGAUKpwNvpZucLbQJHledPwypRzMP31eHWQACbmcufIXsaqn8AOlDG+9BUFaqbQrWaJ0Uv1Fl/tg==}
+ engines: {node: '>=12.0.0'}
+ dependencies:
+ '@aws-sdk/credential-provider-env': 3.183.0
+ '@aws-sdk/credential-provider-imds': 3.183.0
+ '@aws-sdk/credential-provider-ini': 3.185.0
+ '@aws-sdk/credential-provider-process': 3.183.0
+ '@aws-sdk/credential-provider-sso': 3.185.0
+ '@aws-sdk/credential-provider-web-identity': 3.183.0
+ '@aws-sdk/property-provider': 3.183.0
+ '@aws-sdk/shared-ini-file-loader': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-process/3.183.0:
+ resolution: {integrity: sha512-JRePfiFPWpyF3iotHx45WyP1qe50BsPdOOFGh3vmyx5L92lnzchlGsOMpcNUiATUuA3Ar0LUt5bS299LTZWeuQ==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/property-provider': 3.183.0
+ '@aws-sdk/shared-ini-file-loader': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/credential-provider-sso/3.185.0:
+ resolution: {integrity: sha512-oa04VkWrq265AD/hG+x90oWwn43dfv7cVwb6UwMhd9IShhh20JjYmhvpcjelKa+X6rsrAfqpcHgXYI7KkQP6Yw==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/client-sso': 3.185.0
+ '@aws-sdk/property-provider': 3.183.0
+ '@aws-sdk/shared-ini-file-loader': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-web-identity/3.183.0:
+ resolution: {integrity: sha512-AZGZ4zrjMgtVk5MhsRGj6glsivls4qWUQ1Vuq9FjlaN+ltW74w3D0juTwpUI/OHuSHhOznOZsO9fI4DlCfUeSw==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/property-provider': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/eventstream-codec/3.183.0:
+ resolution: {integrity: sha512-GHZ1Xn7Lv0bR3MxYVSyaLb75GsQA2sWlq7XvU5QFifFHskXzRCjuoHTvxg3K8Ez3AuTTkYhH0NOhv1teQ1NHow==}
+ dependencies:
+ '@aws-crypto/crc32': 2.0.0
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/util-hex-encoding': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/eventstream-serde-browser/3.183.0:
+ resolution: {integrity: sha512-qJOlWKRPSe132EOP/05JZA1OUYAuinUbofgE3N05sCSWBmdlwQPFGIEcePjNg+HfJKXMWI86o4BWmfBgB8ZFcg==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/eventstream-serde-universal': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/eventstream-serde-config-resolver/3.183.0:
+ resolution: {integrity: sha512-Tdefws3/NjD7NdP2OqiZZlQAoPhjgMrFSwqT//njMGnkcbhO52w/jhJXEW5HePl4wbRgpp40Ae8uQSRfsYJhuw==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/eventstream-serde-node/3.183.0:
+ resolution: {integrity: sha512-16l2a3TdWhMdzPxSLKfboj/NbEKxNyJF8Xu6zGOY61g5kRpXD2Nqg8ycDjq1CW+60H5SaCxRV2EsYKgroSWgTg==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/eventstream-serde-universal': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/eventstream-serde-universal/3.183.0:
+ resolution: {integrity: sha512-9mfTUdPafq+P2aUSZMh6/+XIxq0Lq2oWldcF8vb2gKH6ZBJLU1Nw7CRXbO6wbaPl/YM83y6G3Y5mkRnjBcxP1A==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/eventstream-codec': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/fetch-http-handler/3.183.0:
+ resolution: {integrity: sha512-YaVXUTYnm6ZsT4qVWcAvtjkxsxzGJW1l0o4oXnnz3hhl7AZM/RjL2l24aixSMeoj7R4hA4Yi7sHFm5OlHSTg5A==}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.183.0
+ '@aws-sdk/querystring-builder': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/util-base64-browser': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/hash-blob-browser/3.183.0:
+ resolution: {integrity: sha512-kytjmG+xupsMxxIA8+e1zV82EdydFF82+jMfxOUovidVbVq9uTTcpF2WqbaFMje1ylZjSbHCCptjGRg1DfTc8w==}
+ dependencies:
+ '@aws-sdk/chunked-blob-reader': 3.183.0
+ '@aws-sdk/chunked-blob-reader-native': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/hash-node/3.183.0:
+ resolution: {integrity: sha512-XPe1TzupofkypgLw4Y38ruUM4hrrGIGwJGI/KsljDoEDpz24SyMItyCZbF7ddaPkbJGa4oO+HN072SXPB/z/6g==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/util-buffer-from': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/hash-stream-node/3.183.0:
+ resolution: {integrity: sha512-xqMIftU/mQAPXmjNahgA6SXNY7H/8GyDY7XC0w7aHIVBZx0DZlvStbFZ+BdZKyOHVzQOftliikDJzqPz3EiPWA==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/invalid-dependency/3.183.0:
+ resolution: {integrity: sha512-ouKWKIFzWEt64Eg+WPjMlG/KzvQ4h3DakjHJ6L1IB/lXDL8TzJwqKdyEyt3V6/jOXLt8Wf6LtG8HA+5OC+jASQ==}
+ dependencies:
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/is-array-buffer/3.183.0:
+ resolution: {integrity: sha512-s0ukhcjX1dUPRFPLyWJw9mg6SB+5YOdV2vHoKez0L7ry97p3C29wtImV2NOdw54fn/lKOtil22lFN7JpoaqU/w==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/md5-js/3.183.0:
+ resolution: {integrity: sha512-FUQsZY8GwICKcHuJ8dcvmMlVOjWzdPoGIdjLl2F7kqJosTz908UoOQzIdm50UOChk8OVLgfVDOJDQ1ioycClCA==}
+ dependencies:
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/util-utf8-browser': 3.183.0
+ '@aws-sdk/util-utf8-node': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/middleware-bucket-endpoint/3.183.0:
+ resolution: {integrity: sha512-JpqE+5BdblM1zAoQwlTC5st4ev/MNvewYayFZgroElyPySs5Ushy0u6b3FiJx/pdKPNX/Io75VNFxGeRcJsspA==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/util-arn-parser': 3.183.0
+ '@aws-sdk/util-config-provider': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/middleware-content-length/3.183.0:
+ resolution: {integrity: sha512-dcLMEEa6j3eDH8obsDHZaHgOZIUPDIZdkgtLYB0tyvJEo8HZGEE/Ch1abwlIzXkZ7qRPXysgX7JayJV8N7kxEw==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/middleware-expect-continue/3.183.0:
+ resolution: {integrity: sha512-4267Sy91KH0XaCE0ANWeck13sGVHkWLozd9i9jPxIXQabnOFFnfo4nkH05n7tuR7ItDyp3R5S6S9fqXj6QYXsA==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/middleware-flexible-checksums/3.183.0:
+ resolution: {integrity: sha512-amfk55oTAvGN0VluzaNTcQO4ERT7V5pvdjBGxBMjPJD9G3vdj6o2ZvjgGANKZDqarmebcrbEepLCp5PLtfdUgA==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-crypto/crc32': 2.0.0
+ '@aws-crypto/crc32c': 2.0.0
+ '@aws-sdk/is-array-buffer': 3.183.0
+ '@aws-sdk/protocol-http': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/middleware-host-header/3.183.0:
+ resolution: {integrity: sha512-EcInz6QFQ0ljK8QABX/NRcLYGySv+S/mmJYSLIHkU+/FDh+Wh08Awq9OVjJwGp2mmHM1ZHHHI0sTrdBdmBLX3g==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/middleware-location-constraint/3.183.0:
+ resolution: {integrity: sha512-XIj2NZa2R+hioPWXH4TIQN1Jy5m6m3u5ouPcVxijMdJ6HozEEJZVaWiXNQczr8otWCYzXqq88p6Zu683V/oTPw==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/middleware-logger/3.183.0:
+ resolution: {integrity: sha512-bEjira7lUPtIfOCDAAkWR53gIJG2g8HhYeL0C+fGB4lztf2Cdlqg9quLXXHRVd0Vmio4OR3NMm5aPIwMnUULWQ==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/middleware-recursion-detection/3.183.0:
+ resolution: {integrity: sha512-RcsFN5Mp10SO9yKRVeFqedxQIhqWi00Kb5EpE1SR7bC/tcrizS2e0ytFkLk2Bv2U6tbT1CYg7EMa76ssRaSk5w==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/middleware-retry/3.185.0:
+ resolution: {integrity: sha512-EZ/wjD1sHEOuCD3poj9vepZ23E3MEwOgqxdm/EYD5WgDKx50a/D6nNcCpI6r9qwbJCPGVFwCpBprhN8X4qWFVg==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.183.0
+ '@aws-sdk/service-error-classification': 3.185.0
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/util-middleware': 3.183.0
+ tslib: 2.4.1
+ uuid: 8.3.2
+ dev: false
+
+ /@aws-sdk/middleware-sdk-s3/3.183.0:
+ resolution: {integrity: sha512-Ot3CsBqayUMls+G87Mfm/I6Kksgb2Pw5HoSFj8qI66IB2enwvfJp+aak4ZsRE7YpjXMQ51hCvfJUPnRvsZuycw==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/middleware-bucket-endpoint': 3.183.0
+ '@aws-sdk/protocol-http': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/util-arn-parser': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/middleware-sdk-sts/3.183.0:
+ resolution: {integrity: sha512-d8zqIDiT1/Zqh0RB/VV4RHz+CIyrMbxEm81rx0pn/9eMVLO4A33j1DaaTcQ0fuCCU7K2rptJC+t2tvkzmXPERg==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/middleware-signing': 3.183.0
+ '@aws-sdk/property-provider': 3.183.0
+ '@aws-sdk/protocol-http': 3.183.0
+ '@aws-sdk/signature-v4': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/middleware-serde/3.183.0:
+ resolution: {integrity: sha512-8VqXmaIbH5E1L7ORXLAhaLKpoUJl7vYCbFpL3NKPlVBPDPAydLhyEltBc3mJTfUo4XWYn6qRqgNwlppXUJZ1xg==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/middleware-signing/3.183.0:
+ resolution: {integrity: sha512-ABb8aSs6649pOZg2Ck3EyeMJo03eYBIqUw7vOhBR6IhQA/XHCFzFX8vEhWjhEWfQcUQBIzNlgoY+0uXK0wVEYQ==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/property-provider': 3.183.0
+ '@aws-sdk/protocol-http': 3.183.0
+ '@aws-sdk/signature-v4': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/util-middleware': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/middleware-ssec/3.183.0:
+ resolution: {integrity: sha512-eDzWpJA4FkTI41LvAR1lavsidS/5WXFbok2kraAZSdnnU+GXiOqh8I/LPpO/vljcp68kh0on2YMnl/nB22BLqg==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/middleware-stack/3.183.0:
+ resolution: {integrity: sha512-xNvGdj5qgSiC0WETkDOk1Rr7goR7smjbRc/vcYzO4HLwfw2JX/QxtZ2iNAdBMwW1M8O4JfVqS3ynqlE6Ssd7YQ==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/middleware-user-agent/3.183.0:
+ resolution: {integrity: sha512-XPX6LKS+zD11yB7nMSQHnW749+2RcFDjr0l2Eb+X0Tffr70JrWpiSx8wYAWUcuTg5Zv4aJAdzYCCaJKZt61Wqg==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/node-config-provider/3.183.0:
+ resolution: {integrity: sha512-Y15Byu7uJxkpHes4PxLBfJEgvxXS5ovyfDGJKJYISwBqJFkDP9gp8/5hg/uHxlJuVWEgFDSTi5kOUjnOhaCZ/A==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/property-provider': 3.183.0
+ '@aws-sdk/shared-ini-file-loader': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/node-http-handler/3.185.0:
+ resolution: {integrity: sha512-8z0Mp79epG3sN3RVe+4LtOckIbW/UADHLmbrnI5c47sn7xthn4R4QZQDQ7MJ2KBenf1xT3UzA3/Yytxl0YoxEw==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/abort-controller': 3.183.0
+ '@aws-sdk/protocol-http': 3.183.0
+ '@aws-sdk/querystring-builder': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/property-provider/3.183.0:
+ resolution: {integrity: sha512-IYZNJX/S2wQsDKx+Pm+gwCKFR037/T+K85YW7j8be7aItqZqwOo7yRNXhJSOJPMANxhz4KmHH3n1oXhmCBvyug==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/protocol-http/3.183.0:
+ resolution: {integrity: sha512-uFxp2YDRQgvHvGWY91CqZjqhDFoiPx9dr45ZIq/jZ4bOQ9rY619PAIBQ15eh54v7DI1zm4pLlXXvytA0LJF3jg==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/querystring-builder/3.183.0:
+ resolution: {integrity: sha512-12IFkuyPyJk8MZ1CKxiFo0GCTmqTwlJ3rMRk7L1wk44yObdKpQK/MSkUl0QgZHSjsS84zfqdeOXQJqLGGaIETg==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/util-uri-escape': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/querystring-parser/3.183.0:
+ resolution: {integrity: sha512-0yB48bevrHMzXf2afYIAAqYfqCea3aeTyGLa+7IeWZbgP481JbGQyMMNtQBA8VgOB3k7vDEqIYT+QuVxbVhKCA==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/service-error-classification/3.185.0:
+ resolution: {integrity: sha512-8Yvm5be/La9NiODtQ8WchumhcG/oDI8VXCmWlkKB1fQ6QoCilBG5dOu97HlAnGrJQH5awUva/zHAbUiU/hFfQw==}
+ engines: {node: '>= 12.0.0'}
+ dev: false
+
+ /@aws-sdk/shared-ini-file-loader/3.183.0:
+ resolution: {integrity: sha512-QqLdLthJP73m+h9FhCPsRUsF0AAtHVLivOvtH9ZRoph7C2bqSvfm8LHQO20R61acN9o72mgMiVDVBp/XhiGpkA==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/signature-v4-multi-region/3.183.0:
+ resolution: {integrity: sha512-lVW5tlwsS5WrMZ3gy1pp+r21C0z8mbqlqz3FbW0PxyU1YFI77Y/WIxO8/KSzHZ9h/GNfKqkLajuVIJDL6jArrw==}
+ engines: {node: '>= 12.0.0'}
+ peerDependencies:
+ '@aws-sdk/signature-v4-crt': ^3.118.0
+ peerDependenciesMeta:
+ '@aws-sdk/signature-v4-crt':
+ optional: true
+ dependencies:
+ '@aws-sdk/protocol-http': 3.183.0
+ '@aws-sdk/signature-v4': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/util-arn-parser': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/signature-v4/3.183.0:
+ resolution: {integrity: sha512-XlYaSVbC6acTdc7FI5hmfZqOLPBwNCbnutmoElTdJQKwhSS6LvwwUngM4L5tm3etlPkKVFSsWllG68Au/vFF4w==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/is-array-buffer': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/util-hex-encoding': 3.183.0
+ '@aws-sdk/util-middleware': 3.183.0
+ '@aws-sdk/util-uri-escape': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/smithy-client/3.183.0:
+ resolution: {integrity: sha512-HesHCNI09yCGh/QaLWyiMia0I3i6xs9v7ghksGXNhpNNrTIshFu5AUh2uJTdlaHiUN9zlED3ulkPo2FrE7Lxww==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/middleware-stack': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/types/3.183.0:
+ resolution: {integrity: sha512-V5IU7q7Y2ADIFzvUxoGfpVahhVnGjCABTv9jZYUSyJW7/OwSB+eA2C1B8ZsKAYLWtc9xKxYpRl5FI5e7FBGUIQ==}
+ engines: {node: '>= 12.0.0'}
+ dev: false
+
+ /@aws-sdk/url-parser/3.183.0:
+ resolution: {integrity: sha512-hrgeIDyAIJfGYbfGfQJD41iUwncfdhObyQ+aPfjZjAzqNSmNCV1jF9+k/BXdMnjCAM6n8rX6ZNko9PhtGz9uKw==}
+ dependencies:
+ '@aws-sdk/querystring-parser': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-arn-parser/3.183.0:
+ resolution: {integrity: sha512-uteIR9dHoGeW1TuVzVTWmRzw+C+m2FFshAx5bh6o8aNmVu/lpUK2tk3fZdjz283ghG9YmAdDhVIVyiCNPBDP6w==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-base64-browser/3.183.0:
+ resolution: {integrity: sha512-rDTgkDHQbQtg/2RGbBb1ztZCRF8ELAXyhVQ7CqEqZSirdpQyIdOOVi8ucr4sjVyUQIq92irfJO1SEcANsaFhWQ==}
+ dependencies:
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-base64-node/3.183.0:
+ resolution: {integrity: sha512-FqgzW17oMvv41eB6Lsq2q32HGch5pSmUtXdcVjvXkPKc5CGtNIB49pRx4re4SOGKexkBabB9gdmubs3jH8BB5Q==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/util-buffer-from': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-body-length-browser/3.183.0:
+ resolution: {integrity: sha512-HniybeERXdHnN+NceOOlaeWgqfDgfWhtFmdOxJYWaxUW21RX+GQiObXtjnU7Nb0DtzTkAv/PWfkZ5lS8WLGQ2Q==}
+ dependencies:
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-body-length-node/3.183.0:
+ resolution: {integrity: sha512-BBaGaQtSQFXtKB9hXnGog5osNTasAe1GlvQCRqvBEvF2LwM54M+Hsr5HisJKnCybUgQGi0R2Al3CohjMy+mczQ==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-buffer-from/3.183.0:
+ resolution: {integrity: sha512-y/GPvo7kqM7taj6+Iq2uUxdrdDcUAtmQEX1l24qjl7MYEnZMncfxWjFdBhIvq4HBJjN3Oq8OIvTc/ZDB2obBJA==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/is-array-buffer': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-config-provider/3.183.0:
+ resolution: {integrity: sha512-F6QaY3giXX4kSJk1VIkw9n9I4heTNgv5RmAgY5xlCNU5BqoWyIbWG9B8r/P7metlPhACZ1M8dMp5RwQi8Ae1Jw==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-defaults-mode-browser/3.183.0:
+ resolution: {integrity: sha512-YWKb4Y0bo/hpAVvf27wAQ3vj8OSVHkyHeoZC6ni9alkK41SAlv3RjodfTAhN0039QD+DirTa3EkLQj9ag1Igdg==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ '@aws-sdk/property-provider': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ bowser: 2.11.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-defaults-mode-node/3.183.0:
+ resolution: {integrity: sha512-zuNFv2nSgtK6yTEMiEZW2vNxtC6vcKlt6vv0QtIEZZGGhjxEx2dK28jKr9GHlDLIt99mjvJaqiP4tiyfNE5Xpg==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ '@aws-sdk/config-resolver': 3.183.0
+ '@aws-sdk/credential-provider-imds': 3.183.0
+ '@aws-sdk/node-config-provider': 3.183.0
+ '@aws-sdk/property-provider': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-hex-encoding/3.183.0:
+ resolution: {integrity: sha512-pcvgpSID2mFnkaWPd/cpP4H7Lpu9w9Sc2QcMc2kvkOgkNb7mNres+guybqIMIlsOfuVuFK6291KwtYEgYIWHjQ==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-locate-window/3.183.0:
+ resolution: {integrity: sha512-zcto3whSC1EHnKlygkSBmwI95r3mOpG3o37M2zHhKJlJbPZhI61+MnNQ13T46m4MRWC5gJgPi3gL7kI9Bnb+hA==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-middleware/3.183.0:
+ resolution: {integrity: sha512-zbAFH5SkJ1kTFWPZVg4JdQEhfnJAyL/BDDtGPublVCbplXHAFxoYsneL0he4OEyJbf9KQyITOlzOcthB1kS9Qg==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-stream-browser/3.183.0:
+ resolution: {integrity: sha512-Ot0ZUiSo57tKFt8dGAwvVz5/CojjNbbztUa3q9m0Bk7RgZB8tbKvVR/tmKzhCLT4zdFEHl+M3wmxPJ7QVIdkKQ==}
+ dependencies:
+ '@aws-sdk/fetch-http-handler': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/util-base64-browser': 3.183.0
+ '@aws-sdk/util-hex-encoding': 3.183.0
+ '@aws-sdk/util-utf8-browser': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-stream-node/3.185.0:
+ resolution: {integrity: sha512-ON3W+8NWS4eJWaxh6qNk1r5Y7EEAATPhTRNm+vRSuVcxgJDkpJzeIXctb7TM/P8Ae3aMTgiBd/s+7AsAiKLRjw==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/node-http-handler': 3.185.0
+ '@aws-sdk/types': 3.183.0
+ '@aws-sdk/util-buffer-from': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-uri-escape/3.183.0:
+ resolution: {integrity: sha512-pBTwFR/s3ITNHDbsnjhGu6g47PUb5NFbAOWRMFukJME5glOTkFViGlSrEbq0xZB/A0jKFZBQWXLDtgR2G0N8TA==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-user-agent-browser/3.183.0:
+ resolution: {integrity: sha512-uLUFxHFzh/ivcEeocpvMZBnpEDA793lAtsReaG7QRA1PheRgAQQHeugrTOkQ7doGCz0YBbocXAMcNDrmN1EdNA==}
+ dependencies:
+ '@aws-sdk/types': 3.183.0
+ bowser: 2.11.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-user-agent-node/3.183.0:
+ resolution: {integrity: sha512-EsyNWuW4ZhLoo5sDs/rMuL5BwGgyyO5bJxI4GzXhDcPPJerQvDZ3ZD3aB55IzAWd4EMHft3Man2uB2bCSWavjA==}
+ engines: {node: '>= 12.0.0'}
+ peerDependencies:
+ aws-crt: '>=1.0.0'
+ peerDependenciesMeta:
+ aws-crt:
+ optional: true
+ dependencies:
+ '@aws-sdk/node-config-provider': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-utf8-browser/3.183.0:
+ resolution: {integrity: sha512-6JHlQ5VkF2XdUfyK1pjpR1A8I+hVdyV0yGiyOB3Vge2zIkcc6oZQYIsSePFmqujJspz29GK0InbQhJXKuLDekg==}
+ dependencies:
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-utf8-node/3.183.0:
+ resolution: {integrity: sha512-5oIc0Bco765sMd0X4jOpwidBxPOXocGXuaTM5LxfFlw+KZjgh609VQHii9pUlere23kCXF3cZzup++oSQBSrTg==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/util-buffer-from': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/util-waiter/3.183.0:
+ resolution: {integrity: sha512-gp8zuE8+6N9khmwpfNtkiiScnosoGEh5touy8KGqAy5OYcTFCyjqoEwqH3JCiZxzoTMB+81iGR3mbj4EiGwUOw==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@aws-sdk/abort-controller': 3.183.0
+ '@aws-sdk/types': 3.183.0
+ tslib: 2.4.1
+ dev: false
+
+ /@aws-sdk/xml-builder/3.183.0:
+ resolution: {integrity: sha512-lzDdGSe5Yg60vTdo8nUpFh1NKCaN7hGSTWDBdlEg/0PaOVuevyl7QSzVqKoUVzgu9j2Pq72SgQPNO/XggcEsOw==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ tslib: 2.4.1
+ dev: false
+
+ /@babel/code-frame/7.18.6:
+ resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==}
+ engines: {node: '>=6.9.0'}
+ requiresBuild: true
+ dependencies:
+ '@babel/highlight': 7.18.6
+
+ /@babel/compat-data/7.19.1:
+ resolution: {integrity: sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/compat-data/7.19.4:
+ resolution: {integrity: sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==}
+ engines: {node: '>=6.9.0'}
+
+ /@babel/core/7.12.9:
+ resolution: {integrity: sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.18.6
+ '@babel/generator': 7.19.6
+ '@babel/helper-module-transforms': 7.19.6
+ '@babel/helpers': 7.19.4
+ '@babel/parser': 7.19.6
+ '@babel/template': 7.18.10
+ '@babel/traverse': 7.19.6
+ '@babel/types': 7.19.4
+ convert-source-map: 1.8.0
+ debug: 4.3.4
+ gensync: 1.0.0-beta.2
+ json5: 2.2.1
+ lodash: 4.17.21
+ resolve: 1.22.1
+ semver: 5.7.1
+ source-map: 0.5.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/core/7.19.1:
+ resolution: {integrity: sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@ampproject/remapping': 2.2.0
+ '@babel/code-frame': 7.18.6
+ '@babel/generator': 7.19.0
+ '@babel/helper-compilation-targets': 7.19.1_@babel+core@7.19.1
+ '@babel/helper-module-transforms': 7.19.0
+ '@babel/helpers': 7.19.0
+ '@babel/parser': 7.19.1
+ '@babel/template': 7.18.10
+ '@babel/traverse': 7.19.1
+ '@babel/types': 7.19.0
+ convert-source-map: 1.8.0
+ debug: 4.3.4
+ gensync: 1.0.0-beta.2
+ json5: 2.2.1
+ semver: 6.3.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/core/7.19.6:
+ resolution: {integrity: sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@ampproject/remapping': 2.2.0
+ '@babel/code-frame': 7.18.6
+ '@babel/generator': 7.19.6
+ '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.6
+ '@babel/helper-module-transforms': 7.19.6
+ '@babel/helpers': 7.19.4
+ '@babel/parser': 7.19.6
+ '@babel/template': 7.18.10
+ '@babel/traverse': 7.19.6
+ '@babel/types': 7.19.4
+ convert-source-map: 1.8.0
+ debug: 4.3.4
+ gensync: 1.0.0-beta.2
+ json5: 2.2.1
+ semver: 6.3.0
+ transitivePeerDependencies:
+ - supports-color
+
+ /@babel/eslint-parser/7.19.1_yw5cbkfc5c3v6frlo27uixp7pm:
+ resolution: {integrity: sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0}
+ peerDependencies:
+ '@babel/core': '>=7.11.0'
+ eslint: ^7.5.0 || ^8.0.0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1
+ eslint: 8.23.1
+ eslint-visitor-keys: 2.1.0
+ semver: 6.3.0
+ dev: false
+
+ /@babel/generator/7.19.0:
+ resolution: {integrity: sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.19.0
+ '@jridgewell/gen-mapping': 0.3.2
+ jsesc: 2.5.2
+ dev: true
+
+ /@babel/generator/7.19.6:
+ resolution: {integrity: sha512-oHGRUQeoX1QrKeJIKVe0hwjGqNnVYsM5Nep5zo0uE0m42sLH+Fsd2pStJ5sRM1bNyTUUoz0pe2lTeMJrb/taTA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.19.4
+ '@jridgewell/gen-mapping': 0.3.2
+ jsesc: 2.5.2
+
+ /@babel/helper-annotate-as-pure/7.18.6:
+ resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.19.4
+
+ /@babel/helper-builder-binary-assignment-operator-visitor/7.18.9:
+ resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-explode-assignable-expression': 7.18.6
+ '@babel/types': 7.19.4
+ dev: false
+
+ /@babel/helper-compilation-targets/7.19.1_@babel+core@7.19.1:
+ resolution: {integrity: sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/compat-data': 7.19.1
+ '@babel/core': 7.19.1
+ '@babel/helper-validator-option': 7.18.6
+ browserslist: 4.21.4
+ semver: 6.3.0
+ dev: true
+
+ /@babel/helper-compilation-targets/7.19.3_@babel+core@7.19.6:
+ resolution: {integrity: sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/compat-data': 7.19.4
+ '@babel/core': 7.19.6
+ '@babel/helper-validator-option': 7.18.6
+ browserslist: 4.21.4
+ semver: 6.3.0
+
+ /@babel/helper-create-class-features-plugin/7.19.0_@babel+core@7.19.6:
+ resolution: {integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-annotate-as-pure': 7.18.6
+ '@babel/helper-environment-visitor': 7.18.9
+ '@babel/helper-function-name': 7.19.0
+ '@babel/helper-member-expression-to-functions': 7.18.9
+ '@babel/helper-optimise-call-expression': 7.18.6
+ '@babel/helper-replace-supers': 7.19.1
+ '@babel/helper-split-export-declaration': 7.18.6
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/helper-create-regexp-features-plugin/7.19.0_@babel+core@7.19.6:
+ resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-annotate-as-pure': 7.18.6
+ regexpu-core: 5.2.1
+ dev: false
+
+ /@babel/helper-define-polyfill-provider/0.1.5_@babel+core@7.19.6:
+ resolution: {integrity: sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==}
+ peerDependencies:
+ '@babel/core': ^7.4.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.6
+ '@babel/helper-module-imports': 7.18.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/traverse': 7.19.6
+ debug: 4.3.4
+ lodash.debounce: 4.0.8
+ resolve: 1.22.1
+ semver: 6.3.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.19.6:
+ resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==}
+ peerDependencies:
+ '@babel/core': ^7.4.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ debug: 4.3.4
+ lodash.debounce: 4.0.8
+ resolve: 1.22.1
+ semver: 6.3.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/helper-environment-visitor/7.18.9:
+ resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==}
+ engines: {node: '>=6.9.0'}
+
+ /@babel/helper-explode-assignable-expression/7.18.6:
+ resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.19.4
+ dev: false
+
+ /@babel/helper-function-name/7.19.0:
+ resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/template': 7.18.10
+ '@babel/types': 7.19.4
+
+ /@babel/helper-hoist-variables/7.18.6:
+ resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.19.4
+
+ /@babel/helper-member-expression-to-functions/7.18.9:
+ resolution: {integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.19.4
+ dev: false
+
+ /@babel/helper-module-imports/7.18.6:
+ resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.19.4
+
+ /@babel/helper-module-transforms/7.19.0:
+ resolution: {integrity: sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-environment-visitor': 7.18.9
+ '@babel/helper-module-imports': 7.18.6
+ '@babel/helper-simple-access': 7.18.6
+ '@babel/helper-split-export-declaration': 7.18.6
+ '@babel/helper-validator-identifier': 7.19.1
+ '@babel/template': 7.18.10
+ '@babel/traverse': 7.19.1
+ '@babel/types': 7.19.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helper-module-transforms/7.19.6:
+ resolution: {integrity: sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-environment-visitor': 7.18.9
+ '@babel/helper-module-imports': 7.18.6
+ '@babel/helper-simple-access': 7.19.4
+ '@babel/helper-split-export-declaration': 7.18.6
+ '@babel/helper-validator-identifier': 7.19.1
+ '@babel/template': 7.18.10
+ '@babel/traverse': 7.19.6
+ '@babel/types': 7.19.4
+ transitivePeerDependencies:
+ - supports-color
+
+ /@babel/helper-optimise-call-expression/7.18.6:
+ resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.19.4
+ dev: false
+
+ /@babel/helper-plugin-utils/7.10.4:
+ resolution: {integrity: sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==}
+ dev: false
+
+ /@babel/helper-plugin-utils/7.19.0:
+ resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==}
+ engines: {node: '>=6.9.0'}
+
+ /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.19.6:
+ resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-annotate-as-pure': 7.18.6
+ '@babel/helper-environment-visitor': 7.18.9
+ '@babel/helper-wrap-function': 7.19.0
+ '@babel/types': 7.19.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/helper-replace-supers/7.19.1:
+ resolution: {integrity: sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-environment-visitor': 7.18.9
+ '@babel/helper-member-expression-to-functions': 7.18.9
+ '@babel/helper-optimise-call-expression': 7.18.6
+ '@babel/traverse': 7.19.6
+ '@babel/types': 7.19.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/helper-simple-access/7.18.6:
+ resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.19.0
+ dev: true
+
+ /@babel/helper-simple-access/7.19.4:
+ resolution: {integrity: sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.19.4
+
+ /@babel/helper-skip-transparent-expression-wrappers/7.18.9:
+ resolution: {integrity: sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.19.4
+ dev: false
+
+ /@babel/helper-split-export-declaration/7.18.6:
+ resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.19.4
+
+ /@babel/helper-string-parser/7.18.10:
+ resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-string-parser/7.19.4:
+ resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==}
+ engines: {node: '>=6.9.0'}
+
+ /@babel/helper-validator-identifier/7.19.1:
+ resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
+ engines: {node: '>=6.9.0'}
+
+ /@babel/helper-validator-option/7.18.6:
+ resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==}
+ engines: {node: '>=6.9.0'}
+
+ /@babel/helper-wrap-function/7.19.0:
+ resolution: {integrity: sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-function-name': 7.19.0
+ '@babel/template': 7.18.10
+ '@babel/traverse': 7.19.6
+ '@babel/types': 7.19.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/helpers/7.19.0:
+ resolution: {integrity: sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/template': 7.18.10
+ '@babel/traverse': 7.19.1
+ '@babel/types': 7.19.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helpers/7.19.4:
+ resolution: {integrity: sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/template': 7.18.10
+ '@babel/traverse': 7.19.6
+ '@babel/types': 7.19.4
+ transitivePeerDependencies:
+ - supports-color
+
+ /@babel/highlight/7.18.6:
+ resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.19.1
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+
+ /@babel/parser/7.19.1:
+ resolution: {integrity: sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dependencies:
+ '@babel/types': 7.19.0
+ dev: true
+
+ /@babel/parser/7.19.6:
+ resolution: {integrity: sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dependencies:
+ '@babel/types': 7.19.4
+
+ /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.19.6:
+ resolution: {integrity: sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.13.0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/helper-skip-transparent-expression-wrappers': 7.18.9
+ '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.6
+ dev: false
+
+ /@babel/plugin-proposal-async-generator-functions/7.19.1_@babel+core@7.19.6:
+ resolution: {integrity: sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-environment-visitor': 7.18.9
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.19.6
+ '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.19.6
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.12.0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.19.6
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/plugin-proposal-decorators/7.19.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-PKWforYpkVkogpOW0RaPuh7eQ7AoFgBJP+d87tQCRY2LVbvyGtfRM7RtrhCBsNgZb+2EY28SeWB6p2xe1Z5oAw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/helper-replace-supers': 7.19.1
+ '@babel/helper-split-export-declaration': 7.18.6
+ '@babel/plugin-syntax-decorators': 7.19.0_@babel+core@7.19.6
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.19.6
+ dev: false
+
+ /@babel/plugin-proposal-export-default-from/7.18.10_@babel+core@7.19.6:
+ resolution: {integrity: sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/plugin-syntax-export-default-from': 7.18.6_@babel+core@7.19.6
+ dev: false
+
+ /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.19.6:
+ resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.19.6
+ dev: false
+
+ /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.19.6
+ dev: false
+
+ /@babel/plugin-proposal-logical-assignment-operators/7.18.9_@babel+core@7.19.6:
+ resolution: {integrity: sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.19.6
+ dev: false
+
+ /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.19.6
+ dev: false
+
+ /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.19.6
+ dev: false
+
+ /@babel/plugin-proposal-object-rest-spread/7.12.1_@babel+core@7.12.9:
+ resolution: {integrity: sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.12.9
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9
+ '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.12.9
+ dev: false
+
+ /@babel/plugin-proposal-object-rest-spread/7.19.4_@babel+core@7.19.6:
+ resolution: {integrity: sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/compat-data': 7.19.4
+ '@babel/core': 7.19.6
+ '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.6
+ '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.19.6
+ dev: false
+
+ /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.19.6
+ dev: false
+
+ /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.19.6:
+ resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/helper-skip-transparent-expression-wrappers': 7.18.9
+ '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.6
+ dev: false
+
+ /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-annotate-as-pure': 7.18.6
+ '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.19.6
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.19.1:
+ resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.1
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: true
+
+ /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.19.6:
+ resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.19.1:
+ resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.1
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: true
+
+ /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.19.6:
+ resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.19.1:
+ resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.1
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: true
+
+ /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.19.6:
+ resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.19.6:
+ resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-decorators/7.19.0_@babel+core@7.19.6:
+ resolution: {integrity: sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.19.6:
+ resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-export-default-from/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.19.6:
+ resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-flow/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-import-assertions/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.19.1:
+ resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.1
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: true
+
+ /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.19.6:
+ resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.19.1:
+ resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.1
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: true
+
+ /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.19.6:
+ resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-jsx/7.12.1_@babel+core@7.12.9:
+ resolution: {integrity: sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.12.9
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+
+ /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.19.1:
+ resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.1
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: true
+
+ /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.19.6:
+ resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.19.1:
+ resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.1
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: true
+
+ /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.19.6:
+ resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.19.1:
+ resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.1
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: true
+
+ /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.19.6:
+ resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.12.9:
+ resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.12.9
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.19.1:
+ resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.1
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: true
+
+ /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.19.6:
+ resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.19.1:
+ resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.1
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: true
+
+ /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.19.6:
+ resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.19.1:
+ resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.1
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: true
+
+ /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.19.6:
+ resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.19.6:
+ resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.19.1:
+ resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.1
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: true
+
+ /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.19.6:
+ resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.19.1:
+ resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.1
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: true
+
+ /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-module-imports': 7.18.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.19.6
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-block-scoping/7.19.4_@babel+core@7.19.6:
+ resolution: {integrity: sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-classes/7.19.0_@babel+core@7.19.6:
+ resolution: {integrity: sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-annotate-as-pure': 7.18.6
+ '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.6
+ '@babel/helper-environment-visitor': 7.18.9
+ '@babel/helper-function-name': 7.19.0
+ '@babel/helper-optimise-call-expression': 7.18.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/helper-replace-supers': 7.19.1
+ '@babel/helper-split-export-declaration': 7.18.6
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.19.6:
+ resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-destructuring/7.19.4_@babel+core@7.19.6:
+ resolution: {integrity: sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.19.6:
+ resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-flow-strip-types/7.19.0_@babel+core@7.19.6:
+ resolution: {integrity: sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.19.6
+ dev: false
+
+ /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.19.6:
+ resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.19.6:
+ resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.6
+ '@babel/helper-function-name': 7.19.0
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-literals/7.18.9_@babel+core@7.19.6:
+ resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-modules-amd/7.19.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-module-transforms': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/plugin-transform-modules-commonjs/7.19.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-module-transforms': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/helper-simple-access': 7.19.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/plugin-transform-modules-systemjs/7.19.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-hoist-variables': 7.18.6
+ '@babel/helper-module-transforms': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/helper-validator-identifier': 7.19.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-module-transforms': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/plugin-transform-named-capturing-groups-regex/7.19.1_@babel+core@7.19.6:
+ resolution: {integrity: sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/helper-replace-supers': 7.19.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/plugin-transform-parameters/7.18.8_@babel+core@7.12.9:
+ resolution: {integrity: sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.12.9
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-parameters/7.18.8_@babel+core@7.19.6:
+ resolution: {integrity: sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-react-constant-elements/7.18.12_@babel+core@7.19.6:
+ resolution: {integrity: sha512-Q99U9/ttiu+LMnRU8psd23HhvwXmKWDQIpocm0JKaICcZHnw+mdQbHm6xnSy7dOl8I5PELakYtNBubNQlBXbZw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.6
+
+ /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: true
+
+ /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: true
+
+ /@babel/plugin-transform-react-jsx/7.19.0_@babel+core@7.19.6:
+ resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-annotate-as-pure': 7.18.6
+ '@babel/helper-module-imports': 7.18.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.6
+ '@babel/types': 7.19.4
+
+ /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-annotate-as-pure': 7.18.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ regenerator-transform: 0.15.0
+ dev: false
+
+ /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-runtime/7.19.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-module-imports': 7.18.6
+ '@babel/helper-plugin-utils': 7.19.0
+ babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.19.6
+ babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.19.6
+ babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.19.6
+ semver: 6.3.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-spread/7.19.0_@babel+core@7.19.6:
+ resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/helper-skip-transparent-expression-wrappers': 7.18.9
+ dev: false
+
+ /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.19.6:
+ resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.19.6:
+ resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-typescript/7.19.3_@babel+core@7.19.6:
+ resolution: {integrity: sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.19.6
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.19.6:
+ resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ dev: false
+
+ /@babel/preset-env/7.19.4_@babel+core@7.19.6:
+ resolution: {integrity: sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/compat-data': 7.19.4
+ '@babel/core': 7.19.6
+ '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/helper-validator-option': 7.18.6
+ '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9_@babel+core@7.19.6
+ '@babel/plugin-proposal-async-generator-functions': 7.19.1_@babel+core@7.19.6
+ '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.19.6
+ '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-proposal-logical-assignment-operators': 7.18.9_@babel+core@7.19.6
+ '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-proposal-object-rest-spread': 7.19.4_@babel+core@7.19.6
+ '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.6
+ '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.19.6
+ '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.19.6
+ '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.19.6
+ '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.19.6
+ '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.19.6
+ '@babel/plugin-syntax-import-assertions': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.19.6
+ '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.19.6
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.19.6
+ '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.19.6
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.6
+ '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.19.6
+ '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.6
+ '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.19.6
+ '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.19.6
+ '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-block-scoping': 7.19.4_@babel+core@7.19.6
+ '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.19.6
+ '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.19.6
+ '@babel/plugin-transform-destructuring': 7.19.4_@babel+core@7.19.6
+ '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.19.6
+ '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.19.6
+ '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.19.6
+ '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.19.6
+ '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-modules-amd': 7.19.6_@babel+core@7.19.6
+ '@babel/plugin-transform-modules-commonjs': 7.19.6_@babel+core@7.19.6
+ '@babel/plugin-transform-modules-systemjs': 7.19.6_@babel+core@7.19.6
+ '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1_@babel+core@7.19.6
+ '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.19.6
+ '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.19.6
+ '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.19.6
+ '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.19.6
+ '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.19.6
+ '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.19.6
+ '@babel/preset-modules': 0.1.5_@babel+core@7.19.6
+ '@babel/types': 7.19.4
+ babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.19.6
+ babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.19.6
+ babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.19.6
+ core-js-compat: 3.25.5
+ semver: 6.3.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/preset-flow/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/helper-validator-option': 7.18.6
+ '@babel/plugin-transform-flow-strip-types': 7.19.0_@babel+core@7.19.6
+ dev: false
+
+ /@babel/preset-modules/0.1.5_@babel+core@7.19.6:
+ resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.19.6
+ '@babel/types': 7.19.4
+ esutils: 2.0.3
+ dev: false
+
+ /@babel/preset-react/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/helper-validator-option': 7.18.6
+ '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.6
+ '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.19.6
+ dev: false
+
+ /@babel/preset-typescript/7.18.6_@babel+core@7.19.6:
+ resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-plugin-utils': 7.19.0
+ '@babel/helper-validator-option': 7.18.6
+ '@babel/plugin-transform-typescript': 7.19.3_@babel+core@7.19.6
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/register/7.18.9_@babel+core@7.19.6:
+ resolution: {integrity: sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ clone-deep: 4.0.1
+ find-cache-dir: 2.1.0
+ make-dir: 2.1.0
+ pirates: 4.0.5
+ source-map-support: 0.5.21
+ dev: false
+
+ /@babel/runtime-corejs3/7.19.1:
+ resolution: {integrity: sha512-j2vJGnkopRzH+ykJ8h68wrHnEUmtK//E723jjixiAl/PPf6FhqY/vYRcMVlNydRKQjQsTsYEjpx+DZMIvnGk/g==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ core-js-pure: 3.25.2
+ regenerator-runtime: 0.13.9
+
+ /@babel/runtime/7.19.0:
+ resolution: {integrity: sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ regenerator-runtime: 0.13.9
+
+ /@babel/template/7.18.10:
+ resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.18.6
+ '@babel/parser': 7.19.6
+ '@babel/types': 7.19.4
+
+ /@babel/traverse/7.19.1:
+ resolution: {integrity: sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.18.6
+ '@babel/generator': 7.19.0
+ '@babel/helper-environment-visitor': 7.18.9
+ '@babel/helper-function-name': 7.19.0
+ '@babel/helper-hoist-variables': 7.18.6
+ '@babel/helper-split-export-declaration': 7.18.6
+ '@babel/parser': 7.19.1
+ '@babel/types': 7.19.0
+ debug: 4.3.4
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/traverse/7.19.6:
+ resolution: {integrity: sha512-6l5HrUCzFM04mfbG09AagtYyR2P0B71B1wN7PfSPiksDPz2k5H9CBC1tcZpz2M8OxbKTPccByoOJ22rUKbpmQQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.18.6
+ '@babel/generator': 7.19.6
+ '@babel/helper-environment-visitor': 7.18.9
+ '@babel/helper-function-name': 7.19.0
+ '@babel/helper-hoist-variables': 7.18.6
+ '@babel/helper-split-export-declaration': 7.18.6
+ '@babel/parser': 7.19.6
+ '@babel/types': 7.19.4
+ debug: 4.3.4
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+
+ /@babel/traverse/7.19.6_supports-color@5.5.0:
+ resolution: {integrity: sha512-6l5HrUCzFM04mfbG09AagtYyR2P0B71B1wN7PfSPiksDPz2k5H9CBC1tcZpz2M8OxbKTPccByoOJ22rUKbpmQQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.18.6
+ '@babel/generator': 7.19.6
+ '@babel/helper-environment-visitor': 7.18.9
+ '@babel/helper-function-name': 7.19.0
+ '@babel/helper-hoist-variables': 7.18.6
+ '@babel/helper-split-export-declaration': 7.18.6
+ '@babel/parser': 7.19.6
+ '@babel/types': 7.19.4
+ debug: 4.3.4_supports-color@5.5.0
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/types/7.19.0:
+ resolution: {integrity: sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-string-parser': 7.18.10
+ '@babel/helper-validator-identifier': 7.19.1
+ to-fast-properties: 2.0.0
+ dev: true
+
+ /@babel/types/7.19.4:
+ resolution: {integrity: sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-string-parser': 7.19.4
+ '@babel/helper-validator-identifier': 7.19.1
+ to-fast-properties: 2.0.0
+
+ /@base2/pretty-print-object/1.0.1:
+ resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==}
+ dev: false
+
+ /@bcoe/v8-coverage/0.2.3:
+ resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
+
+ /@cnakazawa/watch/1.0.4:
+ resolution: {integrity: sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==}
+ engines: {node: '>=0.1.95'}
+ hasBin: true
+ dependencies:
+ exec-sh: 0.3.6
+ minimist: 1.2.6
+ dev: false
+
+ /@colors/colors/1.5.0:
+ resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
+ engines: {node: '>=0.1.90'}
+ requiresBuild: true
+ optional: true
+
+ /@commitlint/cli/17.1.2:
+ resolution: {integrity: sha512-h/4Hlka3bvCLbnxf0Er2ri5A44VMlbMSkdTRp8Adv2tRiklSTRIoPGs7OEXDv3EoDs2AAzILiPookgM4Gi7LOw==}
+ engines: {node: '>=v14'}
+ hasBin: true
+ dependencies:
+ '@commitlint/format': 17.0.0
+ '@commitlint/lint': 17.1.0
+ '@commitlint/load': 17.1.2
+ '@commitlint/read': 17.1.0
+ '@commitlint/types': 17.0.0
+ execa: 5.1.1
+ lodash: 4.17.21
+ resolve-from: 5.0.0
+ resolve-global: 1.0.0
+ yargs: 17.5.1
+ transitivePeerDependencies:
+ - '@swc/core'
+ - '@swc/wasm'
+ dev: true
+
+ /@commitlint/config-conventional/17.1.0:
+ resolution: {integrity: sha512-WU2p0c9/jLi8k2q2YrDV96Y8XVswQOceIQ/wyJvQxawJSCasLdRB3kUIYdNjOCJsxkpoUlV/b90ZPxp1MYZDiA==}
+ engines: {node: '>=v14'}
+ dependencies:
+ conventional-changelog-conventionalcommits: 5.0.0
+ dev: true
+
+ /@commitlint/config-validator/17.1.0:
+ resolution: {integrity: sha512-Q1rRRSU09ngrTgeTXHq6ePJs2KrI+axPTgkNYDWSJIuS1Op4w3J30vUfSXjwn5YEJHklK3fSqWNHmBhmTR7Vdg==}
+ engines: {node: '>=v14'}
+ dependencies:
+ '@commitlint/types': 17.0.0
+ ajv: 8.11.0
+ dev: true
+
+ /@commitlint/ensure/17.0.0:
+ resolution: {integrity: sha512-M2hkJnNXvEni59S0QPOnqCKIK52G1XyXBGw51mvh7OXDudCmZ9tZiIPpU882p475Mhx48Ien1MbWjCP1zlyC0A==}
+ engines: {node: '>=v14'}
+ dependencies:
+ '@commitlint/types': 17.0.0
+ lodash: 4.17.21
+ dev: true
+
+ /@commitlint/execute-rule/17.0.0:
+ resolution: {integrity: sha512-nVjL/w/zuqjCqSJm8UfpNaw66V9WzuJtQvEnCrK4jDw6qKTmZB+1JQ8m6BQVZbNBcwfYdDNKnhIhqI0Rk7lgpQ==}
+ engines: {node: '>=v14'}
+ dev: true
+
+ /@commitlint/format/17.0.0:
+ resolution: {integrity: sha512-MZzJv7rBp/r6ZQJDEodoZvdRM0vXu1PfQvMTNWFb8jFraxnISMTnPBWMMjr2G/puoMashwaNM//fl7j8gGV5lA==}
+ engines: {node: '>=v14'}
+ dependencies:
+ '@commitlint/types': 17.0.0
+ chalk: 4.1.2
+ dev: true
+
+ /@commitlint/is-ignored/17.1.0:
+ resolution: {integrity: sha512-JITWKDMHhIh8IpdIbcbuH9rEQJty1ZWelgjleTFrVRAcEwN/sPzk1aVUXRIZNXMJWbZj8vtXRJnFihrml8uECQ==}
+ engines: {node: '>=v14'}
+ dependencies:
+ '@commitlint/types': 17.0.0
+ semver: 7.3.7
+ dev: true
+
+ /@commitlint/lint/17.1.0:
+ resolution: {integrity: sha512-ltpqM2ogt/+SDhUaScFo0MdscncEF96lvQTPMM/VTTWlw7sTGLLWkOOppsee2MN/uLNNWjQ7kqkd4h6JqoM9AQ==}
+ engines: {node: '>=v14'}
+ dependencies:
+ '@commitlint/is-ignored': 17.1.0
+ '@commitlint/parse': 17.0.0
+ '@commitlint/rules': 17.0.0
+ '@commitlint/types': 17.0.0
+ dev: true
+
+ /@commitlint/load/17.1.2:
+ resolution: {integrity: sha512-sk2p/jFYAWLChIfOIp/MGSIn/WzZ0vkc3afw+l4X8hGEYkvDe4gQUUAVxjl/6xMRn0HgnSLMZ04xXh5pkTsmgg==}
+ engines: {node: '>=v14'}
+ dependencies:
+ '@commitlint/config-validator': 17.1.0
+ '@commitlint/execute-rule': 17.0.0
+ '@commitlint/resolve-extends': 17.1.0
+ '@commitlint/types': 17.0.0
+ '@types/node': 14.18.29
+ chalk: 4.1.2
+ cosmiconfig: 7.0.1
+ cosmiconfig-typescript-loader: 4.1.0_3owiowz3ujipd4k6pbqn3n7oui
+ lodash: 4.17.21
+ resolve-from: 5.0.0
+ ts-node: 10.9.1_ck2axrxkiif44rdbzjywaqjysa
+ typescript: 4.8.3
+ transitivePeerDependencies:
+ - '@swc/core'
+ - '@swc/wasm'
+ dev: true
+
+ /@commitlint/message/17.0.0:
+ resolution: {integrity: sha512-LpcwYtN+lBlfZijHUdVr8aNFTVpHjuHI52BnfoV01TF7iSLnia0jttzpLkrLmI8HNQz6Vhr9UrxDWtKZiMGsBw==}
+ engines: {node: '>=v14'}
+ dev: true
+
+ /@commitlint/parse/17.0.0:
+ resolution: {integrity: sha512-cKcpfTIQYDG1ywTIr5AG0RAiLBr1gudqEsmAGCTtj8ffDChbBRxm6xXs2nv7GvmJN7msOt7vOKleLvcMmRa1+A==}
+ engines: {node: '>=v14'}
+ dependencies:
+ '@commitlint/types': 17.0.0
+ conventional-changelog-angular: 5.0.13
+ conventional-commits-parser: 3.2.4
+ dev: true
+
+ /@commitlint/read/17.1.0:
+ resolution: {integrity: sha512-73BoFNBA/3Ozo2JQvGsE0J8SdrJAWGfZQRSHqvKaqgmY042Su4gXQLqvAzgr55S9DI1l9TiU/5WDuh8IE86d/g==}
+ engines: {node: '>=v14'}
+ dependencies:
+ '@commitlint/top-level': 17.0.0
+ '@commitlint/types': 17.0.0
+ fs-extra: 10.1.0
+ git-raw-commits: 2.0.11
+ minimist: 1.2.6
+ dev: true
+
+ /@commitlint/resolve-extends/17.1.0:
+ resolution: {integrity: sha512-jqKm00LJ59T0O8O4bH4oMa4XyJVEOK4GzH8Qye9XKji+Q1FxhZznxMV/bDLyYkzbTodBt9sL0WLql8wMtRTbqQ==}
+ engines: {node: '>=v14'}
+ dependencies:
+ '@commitlint/config-validator': 17.1.0
+ '@commitlint/types': 17.0.0
+ import-fresh: 3.3.0
+ lodash: 4.17.21
+ resolve-from: 5.0.0
+ resolve-global: 1.0.0
+ dev: true
+
+ /@commitlint/rules/17.0.0:
+ resolution: {integrity: sha512-45nIy3dERKXWpnwX9HeBzK5SepHwlDxdGBfmedXhL30fmFCkJOdxHyOJsh0+B0RaVsLGT01NELpfzJUmtpDwdQ==}
+ engines: {node: '>=v14'}
+ dependencies:
+ '@commitlint/ensure': 17.0.0
+ '@commitlint/message': 17.0.0
+ '@commitlint/to-lines': 17.0.0
+ '@commitlint/types': 17.0.0
+ execa: 5.1.1
+ dev: true
+
+ /@commitlint/to-lines/17.0.0:
+ resolution: {integrity: sha512-nEi4YEz04Rf2upFbpnEorG8iymyH7o9jYIVFBG1QdzebbIFET3ir+8kQvCZuBE5pKCtViE4XBUsRZz139uFrRQ==}
+ engines: {node: '>=v14'}
+ dev: true
+
+ /@commitlint/top-level/17.0.0:
+ resolution: {integrity: sha512-dZrEP1PBJvodNWYPOYiLWf6XZergdksKQaT6i1KSROLdjf5Ai0brLOv5/P+CPxBeoj3vBxK4Ax8H1Pg9t7sHIQ==}
+ engines: {node: '>=v14'}
+ dependencies:
+ find-up: 5.0.0
+ dev: true
+
+ /@commitlint/types/17.0.0:
+ resolution: {integrity: sha512-hBAw6U+SkAT5h47zDMeOu3HSiD0SODw4Aq7rRNh1ceUmL7GyLKYhPbUvlRWqZ65XjBLPHZhFyQlRaPNz8qvUyQ==}
+ engines: {node: '>=v14'}
+ dependencies:
+ chalk: 4.1.2
+ dev: true
+
+ /@craco/craco/6.4.5_tv4nxnop4tjfwoiqwupc4ah6he:
+ resolution: {integrity: sha512-8F2rIAao8sEh0FPP52ViEvDM9GjJ7acq0knu1c8UgI+EuZMD5/ZB270ol6jV4iNY7it9Umg/RoGBvNRUNr8U8w==}
+ engines: {node: '>=6'}
+ hasBin: true
+ peerDependencies:
+ react-scripts: ^4.0.0
+ dependencies:
+ cosmiconfig: 7.0.1
+ cosmiconfig-typescript-loader: 1.0.9_ckuzsfvalmw37utbiwmugbgu2e
+ cross-spawn: 7.0.3
+ lodash: 4.17.21
+ react-scripts: 5.0.1_vpm4epegb5iztd7yhibv2hqiti
+ semver: 7.3.7
+ webpack-merge: 4.2.2
+ transitivePeerDependencies:
+ - '@swc/core'
+ - '@swc/wasm'
+ - '@types/node'
+ - typescript
+ dev: false
+
+ /@cspotcode/source-map-support/0.8.1:
+ resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.9
+
+ /@csstools/normalize.css/10.1.0:
+ resolution: {integrity: sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==}
+ dev: false
+
+ /@csstools/postcss-cascade-layers/1.1.1_postcss@8.4.18:
+ resolution: {integrity: sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ '@csstools/selector-specificity': 2.0.2_dvkg4kkb622mvceygg47xxdz3a
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /@csstools/postcss-color-function/1.1.1_postcss@8.4.18:
+ resolution: {integrity: sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.18
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /@csstools/postcss-font-format-keywords/1.0.1_postcss@8.4.18:
+ resolution: {integrity: sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /@csstools/postcss-hwb-function/1.0.2_postcss@8.4.18:
+ resolution: {integrity: sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /@csstools/postcss-ic-unit/1.0.1_postcss@8.4.18:
+ resolution: {integrity: sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.18
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /@csstools/postcss-is-pseudo-class/2.0.7_postcss@8.4.18:
+ resolution: {integrity: sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ '@csstools/selector-specificity': 2.0.2_dvkg4kkb622mvceygg47xxdz3a
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /@csstools/postcss-nested-calc/1.0.0_postcss@8.4.18:
+ resolution: {integrity: sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /@csstools/postcss-normalize-display-values/1.0.1_postcss@8.4.18:
+ resolution: {integrity: sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /@csstools/postcss-oklab-function/1.1.1_postcss@8.4.18:
+ resolution: {integrity: sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.18
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /@csstools/postcss-progressive-custom-properties/1.3.0_postcss@8.4.18:
+ resolution: {integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.3
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /@csstools/postcss-stepped-value-functions/1.0.1_postcss@8.4.18:
+ resolution: {integrity: sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /@csstools/postcss-text-decoration-shorthand/1.0.0_postcss@8.4.18:
+ resolution: {integrity: sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /@csstools/postcss-trigonometric-functions/1.0.2_postcss@8.4.18:
+ resolution: {integrity: sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==}
+ engines: {node: ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /@csstools/postcss-unset-value/1.0.2_postcss@8.4.18:
+ resolution: {integrity: sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ postcss: 8.4.18
+ dev: false
+
+ /@csstools/selector-specificity/2.0.2_dvkg4kkb622mvceygg47xxdz3a:
+ resolution: {integrity: sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ postcss-selector-parser: ^6.0.10
+ dependencies:
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /@discoveryjs/json-ext/0.5.7:
+ resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==}
+ engines: {node: '>=10.0.0'}
+ dev: false
+
+ /@emotion/babel-plugin/11.10.5_@babel+core@7.19.6:
+ resolution: {integrity: sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-module-imports': 7.18.6
+ '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.6
+ '@babel/runtime': 7.19.0
+ '@emotion/hash': 0.9.0
+ '@emotion/memoize': 0.8.0
+ '@emotion/serialize': 1.1.1
+ babel-plugin-macros: 3.1.0
+ convert-source-map: 1.8.0
+ escape-string-regexp: 4.0.0
+ find-root: 1.1.0
+ source-map: 0.5.7
+ stylis: 4.1.3
+ dev: false
+
+ /@emotion/cache/11.10.5:
+ resolution: {integrity: sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==}
+ dependencies:
+ '@emotion/memoize': 0.8.0
+ '@emotion/sheet': 1.2.1
+ '@emotion/utils': 1.2.0
+ '@emotion/weak-memoize': 0.3.0
+ stylis: 4.1.3
+ dev: false
+
+ /@emotion/hash/0.9.0:
+ resolution: {integrity: sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==}
+ dev: false
+
+ /@emotion/is-prop-valid/1.2.0:
+ resolution: {integrity: sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==}
+ dependencies:
+ '@emotion/memoize': 0.8.0
+ dev: false
+
+ /@emotion/memoize/0.8.0:
+ resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==}
+ dev: false
+
+ /@emotion/react/11.10.5_d3zi5agmim5yvele7myolzagti:
+ resolution: {integrity: sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ '@types/react': '*'
+ react: '>=16.8.0'
+ peerDependenciesMeta:
+ '@babel/core':
+ optional: true
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/runtime': 7.19.0
+ '@emotion/babel-plugin': 11.10.5_@babel+core@7.19.6
+ '@emotion/cache': 11.10.5
+ '@emotion/serialize': 1.1.1
+ '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0
+ '@emotion/utils': 1.2.0
+ '@emotion/weak-memoize': 0.3.0
+ '@types/react': 18.0.21
+ hoist-non-react-statics: 3.3.2
+ react: 18.2.0
+ dev: false
+
+ /@emotion/serialize/1.1.1:
+ resolution: {integrity: sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==}
+ dependencies:
+ '@emotion/hash': 0.9.0
+ '@emotion/memoize': 0.8.0
+ '@emotion/unitless': 0.8.0
+ '@emotion/utils': 1.2.0
+ csstype: 3.1.1
+ dev: false
+
+ /@emotion/sheet/1.2.1:
+ resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==}
+ dev: false
+
+ /@emotion/stylis/0.8.5:
+ resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==}
+ dev: false
+
+ /@emotion/unitless/0.7.5:
+ resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==}
+ dev: false
+
+ /@emotion/unitless/0.8.0:
+ resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==}
+ dev: false
+
+ /@emotion/use-insertion-effect-with-fallbacks/1.0.0_react@18.2.0:
+ resolution: {integrity: sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==}
+ peerDependencies:
+ react: '>=16.8.0'
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /@emotion/utils/1.2.0:
+ resolution: {integrity: sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==}
+ dev: false
+
+ /@emotion/weak-memoize/0.3.0:
+ resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==}
+ dev: false
+
+ /@esbuild/android-arm/0.15.13:
+ resolution: {integrity: sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-loong64/0.15.13:
+ resolution: {integrity: sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@eslint/eslintrc/1.3.2:
+ resolution: {integrity: sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.3.4
+ espree: 9.4.0
+ globals: 13.17.0
+ ignore: 5.2.0
+ import-fresh: 3.3.0
+ js-yaml: 4.1.0
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ /@fast-csv/format/4.3.5:
+ resolution: {integrity: sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==}
+ dependencies:
+ '@types/node': 14.18.29
+ lodash.escaperegexp: 4.1.2
+ lodash.isboolean: 3.0.3
+ lodash.isequal: 4.5.0
+ lodash.isfunction: 3.0.9
+ lodash.isnil: 4.0.0
+ dev: false
+
+ /@fast-csv/parse/4.3.6:
+ resolution: {integrity: sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==}
+ dependencies:
+ '@types/node': 14.18.29
+ lodash.escaperegexp: 4.1.2
+ lodash.groupby: 4.6.0
+ lodash.isfunction: 3.0.9
+ lodash.isnil: 4.0.0
+ lodash.isundefined: 3.0.1
+ lodash.uniq: 4.5.0
+ dev: false
+
+ /@floating-ui/core/1.0.1:
+ resolution: {integrity: sha512-bO37brCPfteXQfFY0DyNDGB3+IMe4j150KFQcgJ5aBP295p9nBGeHEs/p0czrRbtlHq4Px/yoPXO/+dOCcF4uA==}
+ dev: false
+
+ /@floating-ui/dom/1.0.3:
+ resolution: {integrity: sha512-6H1kwjkOZKabApNtXRiYHvMmYJToJ1DV7rQ3xc/WJpOABhQIOJJOdz2AOejj8X+gcybaFmBpisVTZxBZAM3V0w==}
+ dependencies:
+ '@floating-ui/core': 1.0.1
+ dev: false
+
+ /@floating-ui/react-dom-interactions/0.10.2_rj7ozvcq3uehdlnj3cbwzbi5ce:
+ resolution: {integrity: sha512-KhF+UN+MVqUx1bG1fe0aAiBl1hbz07Uin6UW70mxwUDhaGpitM16CYvGri1EqGY4hnWK8TQknDSP8iQFOxjhsg==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ dependencies:
+ '@floating-ui/react-dom': 1.0.0_biqbaboplfbrettd7655fr4n2y
+ aria-hidden: 1.2.1_iapumuv4e6jcjznwuxpf4tt22e
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ transitivePeerDependencies:
+ - '@types/react'
+ dev: false
+
+ /@floating-ui/react-dom/1.0.0_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-uiOalFKPG937UCLm42RxjESTWUVpbbatvlphQAU6bsv+ence6IoVG8JOUZcy8eW81NkU+Idiwvx10WFLmR4MIg==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ dependencies:
+ '@floating-ui/dom': 1.0.3
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ dev: false
+
+ /@gar/promisify/1.1.3:
+ resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==}
+
+ /@humanwhocodes/config-array/0.10.5:
+ resolution: {integrity: sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug==}
+ engines: {node: '>=10.10.0'}
+ dependencies:
+ '@humanwhocodes/object-schema': 1.2.1
+ debug: 4.3.4
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ /@humanwhocodes/gitignore-to-minimatch/1.0.2:
+ resolution: {integrity: sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==}
+
+ /@humanwhocodes/module-importer/1.0.1:
+ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
+ engines: {node: '>=12.22'}
+
+ /@humanwhocodes/object-schema/1.2.1:
+ resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
+
+ /@hutson/parse-repository-url/3.0.2:
+ resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@isaacs/string-locale-compare/1.1.0:
+ resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==}
+ dev: true
+
+ /@istanbuljs/load-nyc-config/1.1.0:
+ resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ camelcase: 5.3.1
+ find-up: 4.1.0
+ get-package-type: 0.1.0
+ js-yaml: 3.14.1
+ resolve-from: 5.0.0
+
+ /@istanbuljs/schema/0.1.3:
+ resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
+ engines: {node: '>=8'}
+
+ /@jest/console/27.5.1:
+ resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.5.1
+ '@types/node': 18.7.18
+ chalk: 4.1.2
+ jest-message-util: 27.5.1
+ jest-util: 27.5.1
+ slash: 3.0.0
+ dev: false
+
+ /@jest/console/28.1.3:
+ resolution: {integrity: sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/types': 28.1.3
+ '@types/node': 18.7.18
+ chalk: 4.1.2
+ jest-message-util: 28.1.3
+ jest-util: 28.1.3
+ slash: 3.0.0
+
+ /@jest/core/27.5.1:
+ resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==}
+ 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
+ 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': 18.7.18
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ emittery: 0.8.1
+ exit: 0.1.2
+ graceful-fs: 4.2.10
+ 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.5
+ rimraf: 3.0.2
+ slash: 3.0.0
+ strip-ansi: 6.0.1
+ transitivePeerDependencies:
+ - bufferutil
+ - canvas
+ - supports-color
+ - ts-node
+ - utf-8-validate
+ dev: false
+
+ /@jest/environment/27.5.1:
+ resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/fake-timers': 27.5.1
+ '@jest/types': 27.5.1
+ '@types/node': 18.7.18
+ jest-mock: 27.5.1
+ dev: false
+
+ /@jest/environment/28.1.3:
+ resolution: {integrity: sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/fake-timers': 28.1.3
+ '@jest/types': 28.1.3
+ '@types/node': 18.7.18
+ jest-mock: 28.1.3
+ dev: true
+
+ /@jest/expect-utils/28.1.3:
+ resolution: {integrity: sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ jest-get-type: 28.0.2
+ dev: true
+
+ /@jest/expect/28.1.3:
+ resolution: {integrity: sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ expect: 28.1.3
+ jest-snapshot: 28.1.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@jest/fake-timers/27.5.1:
+ resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.5.1
+ '@sinonjs/fake-timers': 8.1.0
+ '@types/node': 18.7.18
+ jest-message-util: 27.5.1
+ jest-mock: 27.5.1
+ jest-util: 27.5.1
+ dev: false
+
+ /@jest/fake-timers/28.1.3:
+ resolution: {integrity: sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/types': 28.1.3
+ '@sinonjs/fake-timers': 9.1.2
+ '@types/node': 18.7.18
+ jest-message-util: 28.1.3
+ jest-mock: 28.1.3
+ jest-util: 28.1.3
+ dev: true
+
+ /@jest/globals/27.5.1:
+ resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/environment': 27.5.1
+ '@jest/types': 27.5.1
+ expect: 27.5.1
+ dev: false
+
+ /@jest/globals/28.1.3:
+ resolution: {integrity: sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/environment': 28.1.3
+ '@jest/expect': 28.1.3
+ '@jest/types': 28.1.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@jest/reporters/27.5.1:
+ resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==}
+ 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
+ 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': 18.7.18
+ chalk: 4.1.2
+ collect-v8-coverage: 1.0.1
+ exit: 0.1.2
+ glob: 7.2.3
+ graceful-fs: 4.2.10
+ istanbul-lib-coverage: 3.2.0
+ istanbul-lib-instrument: 5.2.0
+ istanbul-lib-report: 3.0.0
+ istanbul-lib-source-maps: 4.0.1
+ istanbul-reports: 3.1.5
+ 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.1
+ string-length: 4.0.2
+ terminal-link: 2.1.1
+ v8-to-istanbul: 8.1.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@jest/reporters/28.1.1:
+ resolution: {integrity: sha512-597Zj4D4d88sZrzM4atEGLuO7SdA/YrOv9SRXHXRNC+/FwPCWxZhBAEzhXoiJzfRwn8zes/EjS8Lo6DouGN5Gg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@bcoe/v8-coverage': 0.2.3
+ '@jest/console': 28.1.3
+ '@jest/test-result': 28.1.1
+ '@jest/transform': 28.1.3
+ '@jest/types': 28.1.3
+ '@jridgewell/trace-mapping': 0.3.15
+ '@types/node': 18.7.18
+ chalk: 4.1.2
+ collect-v8-coverage: 1.0.1
+ exit: 0.1.2
+ glob: 7.2.3
+ graceful-fs: 4.2.10
+ istanbul-lib-coverage: 3.2.0
+ istanbul-lib-instrument: 5.2.0
+ istanbul-lib-report: 3.0.0
+ istanbul-lib-source-maps: 4.0.1
+ istanbul-reports: 3.1.5
+ jest-message-util: 28.1.3
+ jest-util: 28.1.1
+ jest-worker: 28.1.3
+ slash: 3.0.0
+ string-length: 4.0.2
+ strip-ansi: 6.0.1
+ terminal-link: 2.1.1
+ v8-to-istanbul: 9.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@jest/schemas/28.1.3:
+ resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@sinclair/typebox': 0.24.42
+
+ /@jest/source-map/27.5.1:
+ resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ callsites: 3.1.0
+ graceful-fs: 4.2.10
+ source-map: 0.6.1
+ dev: false
+
+ /@jest/source-map/28.1.2:
+ resolution: {integrity: sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.15
+ callsites: 3.1.0
+ graceful-fs: 4.2.10
+ dev: true
+
+ /@jest/test-result/27.5.1:
+ resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/console': 27.5.1
+ '@jest/types': 27.5.1
+ '@types/istanbul-lib-coverage': 2.0.4
+ collect-v8-coverage: 1.0.1
+ dev: false
+
+ /@jest/test-result/28.1.1:
+ resolution: {integrity: sha512-hPmkugBktqL6rRzwWAtp1JtYT4VHwv8OQ+9lE5Gymj6dHzubI/oJHMUpPOt8NrdVWSrz9S7bHjJUmv2ggFoUNQ==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/console': 28.1.3
+ '@jest/types': 28.1.3
+ '@types/istanbul-lib-coverage': 2.0.4
+ collect-v8-coverage: 1.0.1
+ dev: true
+
+ /@jest/test-result/28.1.3:
+ resolution: {integrity: sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/console': 28.1.3
+ '@jest/types': 28.1.3
+ '@types/istanbul-lib-coverage': 2.0.4
+ collect-v8-coverage: 1.0.1
+
+ /@jest/test-sequencer/27.5.1:
+ resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/test-result': 27.5.1
+ graceful-fs: 4.2.10
+ jest-haste-map: 27.5.1
+ jest-runtime: 27.5.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@jest/test-sequencer/28.1.3:
+ resolution: {integrity: sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/test-result': 28.1.3
+ graceful-fs: 4.2.10
+ jest-haste-map: 28.1.3
+ slash: 3.0.0
+ dev: true
+
+ /@jest/transform/26.6.2:
+ resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==}
+ engines: {node: '>= 10.14.2'}
+ dependencies:
+ '@babel/core': 7.19.6
+ '@jest/types': 26.6.2
+ babel-plugin-istanbul: 6.1.1
+ chalk: 4.1.2
+ convert-source-map: 1.8.0
+ fast-json-stable-stringify: 2.1.0
+ graceful-fs: 4.2.10
+ jest-haste-map: 26.6.2
+ jest-regex-util: 26.0.0
+ jest-util: 26.6.2
+ micromatch: 4.0.5
+ pirates: 4.0.5
+ slash: 3.0.0
+ source-map: 0.6.1
+ write-file-atomic: 3.0.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@jest/transform/27.5.1:
+ resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@babel/core': 7.19.6
+ '@jest/types': 27.5.1
+ babel-plugin-istanbul: 6.1.1
+ chalk: 4.1.2
+ convert-source-map: 1.8.0
+ fast-json-stable-stringify: 2.1.0
+ graceful-fs: 4.2.10
+ jest-haste-map: 27.5.1
+ jest-regex-util: 27.5.1
+ jest-util: 27.5.1
+ micromatch: 4.0.5
+ pirates: 4.0.5
+ slash: 3.0.0
+ source-map: 0.6.1
+ write-file-atomic: 3.0.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@jest/transform/28.1.3:
+ resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@babel/core': 7.19.1
+ '@jest/types': 28.1.3
+ '@jridgewell/trace-mapping': 0.3.15
+ babel-plugin-istanbul: 6.1.1
+ chalk: 4.1.2
+ convert-source-map: 1.8.0
+ fast-json-stable-stringify: 2.1.0
+ graceful-fs: 4.2.10
+ jest-haste-map: 28.1.3
+ jest-regex-util: 28.0.2
+ jest-util: 28.1.3
+ micromatch: 4.0.5
+ pirates: 4.0.5
+ slash: 3.0.0
+ write-file-atomic: 4.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@jest/types/26.6.2:
+ resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==}
+ engines: {node: '>= 10.14.2'}
+ dependencies:
+ '@types/istanbul-lib-coverage': 2.0.4
+ '@types/istanbul-reports': 3.0.1
+ '@types/node': 18.7.18
+ '@types/yargs': 15.0.14
+ chalk: 4.1.2
+ dev: false
+
+ /@jest/types/27.5.1:
+ resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@types/istanbul-lib-coverage': 2.0.4
+ '@types/istanbul-reports': 3.0.1
+ '@types/node': 18.7.18
+ '@types/yargs': 16.0.4
+ chalk: 4.1.2
+ dev: false
+
+ /@jest/types/28.1.3:
+ resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/schemas': 28.1.3
+ '@types/istanbul-lib-coverage': 2.0.4
+ '@types/istanbul-reports': 3.0.1
+ '@types/node': 18.7.18
+ '@types/yargs': 17.0.12
+ chalk: 4.1.2
+
+ /@jridgewell/gen-mapping/0.1.1:
+ resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/set-array': 1.1.2
+ '@jridgewell/sourcemap-codec': 1.4.14
+
+ /@jridgewell/gen-mapping/0.3.2:
+ resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/set-array': 1.1.2
+ '@jridgewell/sourcemap-codec': 1.4.14
+ '@jridgewell/trace-mapping': 0.3.15
+
+ /@jridgewell/resolve-uri/3.1.0:
+ resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
+ engines: {node: '>=6.0.0'}
+
+ /@jridgewell/set-array/1.1.2:
+ resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
+ engines: {node: '>=6.0.0'}
+
+ /@jridgewell/source-map/0.3.2:
+ resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==}
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.2
+ '@jridgewell/trace-mapping': 0.3.15
+
+ /@jridgewell/sourcemap-codec/1.4.14:
+ resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
+
+ /@jridgewell/trace-mapping/0.3.15:
+ resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.0
+ '@jridgewell/sourcemap-codec': 1.4.14
+
+ /@jridgewell/trace-mapping/0.3.9:
+ resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.0
+ '@jridgewell/sourcemap-codec': 1.4.14
+
+ /@leichtgewicht/ip-codec/2.0.4:
+ resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==}
+ dev: false
+
+ /@lerna/add/6.0.3:
+ resolution: {integrity: sha512-EM9hJExG6bV4Hg+XpHTg5nGCuZl3pUEdbYLtyXfMUj/7fpCrUkxB0oESIVhFINVbxHm2pdnUfOxPDHwFSyWBig==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/bootstrap': 6.0.3
+ '@lerna/command': 6.0.3
+ '@lerna/filter-options': 6.0.3
+ '@lerna/npm-conf': 6.0.3
+ '@lerna/validation-error': 6.0.3
+ dedent: 0.7.0
+ npm-package-arg: 8.1.1
+ p-map: 4.0.0
+ pacote: 13.6.2
+ semver: 7.3.7
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+ dev: true
+
+ /@lerna/bootstrap/6.0.3:
+ resolution: {integrity: sha512-51eT07tAiH1oca9dNrrLXXH6PJZFY4zKEYDqLkx+zMCG/LsIUnzEfy4JBe1GXbFasXfM24pG8wLKoj1sj1CR3A==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/command': 6.0.3
+ '@lerna/filter-options': 6.0.3
+ '@lerna/has-npm-version': 6.0.3
+ '@lerna/npm-install': 6.0.3
+ '@lerna/package-graph': 6.0.3
+ '@lerna/pulse-till-done': 6.0.3
+ '@lerna/rimraf-dir': 6.0.3
+ '@lerna/run-lifecycle': 6.0.3
+ '@lerna/run-topologically': 6.0.3
+ '@lerna/symlink-binary': 6.0.3
+ '@lerna/symlink-dependencies': 6.0.3
+ '@lerna/validation-error': 6.0.3
+ '@npmcli/arborist': 5.3.0
+ dedent: 0.7.0
+ get-port: 5.1.1
+ multimatch: 5.0.0
+ npm-package-arg: 8.1.1
+ npmlog: 6.0.2
+ p-map: 4.0.0
+ p-map-series: 2.1.0
+ p-waterfall: 2.1.1
+ semver: 7.3.7
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+ dev: true
+
+ /@lerna/changed/6.0.3:
+ resolution: {integrity: sha512-VhKl/vVnrY12z2q1it2FkPkRwC3kyZh++kWMNDbMuUqH1kDHuw7KWJjPw6H4LDpoFWj4Q0hPcNRXxJpNiRWD1g==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/collect-updates': 6.0.3
+ '@lerna/command': 6.0.3
+ '@lerna/listable': 6.0.3
+ '@lerna/output': 6.0.3
+ dev: true
+
+ /@lerna/check-working-tree/6.0.3:
+ resolution: {integrity: sha512-ulAilI5AHvSVluH4QdcRPBbGH6lKU6OARfJFIgFYm8KoPyMESygYIBKBKuTUuyzfp5DOsASq2NiumBW4rpC7hg==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/collect-uncommitted': 6.0.3
+ '@lerna/describe-ref': 6.0.3
+ '@lerna/validation-error': 6.0.3
+ dev: true
+
+ /@lerna/child-process/6.0.3:
+ resolution: {integrity: sha512-WfFwWdtGA0wvbyq7FB78Gvkd5mVjCGhRoLQY0FIGPQrmZBv3uy7kz5KbRKJlEmoIhVUnFbbV1xURxdqLzNrxoA==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ chalk: 4.1.2
+ execa: 5.1.1
+ strong-log-transformer: 2.1.0
+ dev: true
+
+ /@lerna/clean/6.0.3:
+ resolution: {integrity: sha512-4H+leVVVhwnc/GBOkFBIrLBia+MRm2ETZyXdCNckCJZ/e5tm6XHJLprGMSP2QwhJ0H20r+ciiQGzo3TGjQAEwQ==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/command': 6.0.3
+ '@lerna/filter-options': 6.0.3
+ '@lerna/prompt': 6.0.3
+ '@lerna/pulse-till-done': 6.0.3
+ '@lerna/rimraf-dir': 6.0.3
+ p-map: 4.0.0
+ p-map-series: 2.1.0
+ p-waterfall: 2.1.1
+ dev: true
+
+ /@lerna/cli/6.0.3:
+ resolution: {integrity: sha512-4J3dOmDGxl32FJJryE65wXR//FOMFRM0osURnr+sylzStpaEwYO24GN1oVl0YIlnGVBuPIBDpr7n0uyjvfn+2A==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/global-options': 6.0.3
+ dedent: 0.7.0
+ npmlog: 6.0.2
+ yargs: 16.2.0
+ dev: true
+
+ /@lerna/collect-uncommitted/6.0.3:
+ resolution: {integrity: sha512-kMKL+U6fIMIHMENez6HrZEYZum+YObhmPzRr/5kkuaYqKPw2up/z1dHYQ/+w+tvzavGP15VKAWy/tZ0WsMuTWw==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/child-process': 6.0.3
+ chalk: 4.1.2
+ npmlog: 6.0.2
+ dev: true
+
+ /@lerna/collect-updates/6.0.3:
+ resolution: {integrity: sha512-qLuCHaHlVHu/tkdnncG6bQZHz9IFfZ6i7lexWfFnQnZ/aLEY7dVnFUde1jbsTFNMhJesKEbXJshXRcTcplDH6Q==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/child-process': 6.0.3
+ '@lerna/describe-ref': 6.0.3
+ minimatch: 3.1.2
+ npmlog: 6.0.2
+ slash: 3.0.0
+ dev: true
+
+ /@lerna/command/6.0.3:
+ resolution: {integrity: sha512-iFkIQKLy+Ef2Kf20wOKBdkCA5J64Wjgr3XC62ZdrlDkx6wydfcfJMiXx2bhRqNKMe1cHxlBKGoRKzy8J+tBrHw==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/child-process': 6.0.3
+ '@lerna/package-graph': 6.0.3
+ '@lerna/project': 6.0.3
+ '@lerna/validation-error': 6.0.3
+ '@lerna/write-log-file': 6.0.3
+ clone-deep: 4.0.1
+ dedent: 0.7.0
+ execa: 5.1.1
+ is-ci: 2.0.0
+ npmlog: 6.0.2
+ dev: true
+
+ /@lerna/conventional-commits/6.0.3:
+ resolution: {integrity: sha512-TZof9i0u9TK/Q7LEErjMQAMLf++MjO9NYG81sAuUaNKHMchUOmlFKtJmbT4/JjmgnBX5W0pCUF6DBxr/Bdjj9g==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/validation-error': 6.0.3
+ conventional-changelog-angular: 5.0.13
+ conventional-changelog-core: 4.2.4
+ conventional-recommended-bump: 6.1.0
+ fs-extra: 9.1.0
+ get-stream: 6.0.1
+ npm-package-arg: 8.1.1
+ npmlog: 6.0.2
+ pify: 5.0.0
+ semver: 7.3.7
+ dev: true
+
+ /@lerna/create-symlink/6.0.3:
+ resolution: {integrity: sha512-myCpuQZ4yYJ5sD+xZiyQHfONBIWlQnM3crIlAvObRYs1U+HwniO9YWk0HcW9dyzplwaYo+Vn55mdi67pTdsdDg==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ cmd-shim: 5.0.0
+ fs-extra: 9.1.0
+ npmlog: 6.0.2
+ dev: true
+
+ /@lerna/create/6.0.3:
+ resolution: {integrity: sha512-mq3D5laUMe6DWhCoWS0mYJw9PZez/8up81860lk5m7Zojk1Ataa08ZWtGhBgP+p77piNRvmjN89hhjkWiXG6ng==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/child-process': 6.0.3
+ '@lerna/command': 6.0.3
+ '@lerna/npm-conf': 6.0.3
+ '@lerna/validation-error': 6.0.3
+ dedent: 0.7.0
+ fs-extra: 9.1.0
+ init-package-json: 3.0.2
+ npm-package-arg: 8.1.1
+ p-reduce: 2.1.0
+ pacote: 13.6.2
+ pify: 5.0.0
+ semver: 7.3.7
+ slash: 3.0.0
+ validate-npm-package-license: 3.0.4
+ validate-npm-package-name: 4.0.0
+ yargs-parser: 20.2.4
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+ dev: true
+
+ /@lerna/describe-ref/6.0.3:
+ resolution: {integrity: sha512-3gj6r9PK+c5SfHQr2j8MQ3qb6xQTrX8KvvGhe3YDW8h3jxx9SAGao8zuvzjI3tVpLx7ZSbxmHqMpyUmnLh5kuw==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/child-process': 6.0.3
+ npmlog: 6.0.2
+ dev: true
+
+ /@lerna/diff/6.0.3:
+ resolution: {integrity: sha512-9syquyKF2oxg0fF736RWT2cf3Oyk4eRXRUNzT0hF0DL/8frQ98H+gF3ftIFVzz1bfPbXtubzBbLDi29bGEG3bQ==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/child-process': 6.0.3
+ '@lerna/command': 6.0.3
+ '@lerna/validation-error': 6.0.3
+ npmlog: 6.0.2
+ dev: true
+
+ /@lerna/exec/6.0.3:
+ resolution: {integrity: sha512-4xKTXPQe3/0hrwCao7evcQfaacfROhVkR2zfnQEA+rkKRiV6ILWdvu9jCxI7DMkzoh4DgABVuGAv84CeraunMg==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/child-process': 6.0.3
+ '@lerna/command': 6.0.3
+ '@lerna/filter-options': 6.0.3
+ '@lerna/profiler': 6.0.3
+ '@lerna/run-topologically': 6.0.3
+ '@lerna/validation-error': 6.0.3
+ p-map: 4.0.0
+ dev: true
+
+ /@lerna/filter-options/6.0.3:
+ resolution: {integrity: sha512-6WjtXo1nNfOIYxjysGgjnCUqAbIqvoIIyQznLQYPsKN/6NN4U7sXr0P3nbaEgBZ2NHeV+seLWA/wraJ1zDaD4Q==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/collect-updates': 6.0.3
+ '@lerna/filter-packages': 6.0.3
+ dedent: 0.7.0
+ npmlog: 6.0.2
+ dev: true
+
+ /@lerna/filter-packages/6.0.3:
+ resolution: {integrity: sha512-UlLgondhCpy7mzZWpOoUy8OlLux8YIqw07Obba0TvVLzrVIGIPIeXhqleRchUGVRV1vfQJ2d3vCTx31s1e/V4g==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/validation-error': 6.0.3
+ multimatch: 5.0.0
+ npmlog: 6.0.2
+ dev: true
+
+ /@lerna/get-npm-exec-opts/6.0.3:
+ resolution: {integrity: sha512-zmKmHkXzmFQIBh2k9rCwzSkearKD+Pz1GypdJ0hAehemnabtW5QQKoGFsGh+7i5mOP0JBUl5kXTYTnwRGOWmYQ==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ npmlog: 6.0.2
+ dev: true
+
+ /@lerna/get-packed/6.0.3:
+ resolution: {integrity: sha512-NX/Ifi/A7iTXasfBioyv/nQ8+IC4gE1SEAuE39/ExGviOM3Jkk5EmeCqwAbhZyhYkxoDBQDJJvagQ5DobpfS7g==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ fs-extra: 9.1.0
+ ssri: 9.0.1
+ tar: 6.1.11
+ dev: true
+
+ /@lerna/github-client/6.0.3:
+ resolution: {integrity: sha512-wMOKH3FIDdE5T8UF88gvhUEBEFD9IUseFHqYt19hgzQyZxAx/hQQE2lqAEosYThPXqtKntIPKQGAfl0gquAMFQ==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/child-process': 6.0.3
+ '@octokit/plugin-enterprise-rest': 6.0.1
+ '@octokit/rest': 19.0.5
+ git-url-parse: 13.1.0
+ npmlog: 6.0.2
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
+ /@lerna/gitlab-client/6.0.3:
+ resolution: {integrity: sha512-dBZiTsiHJ1j3tkW9JKSqCCZCk6aBiYaU9R/dSnpoPb6ZRthgoMGxtnfdk/1CKZlDargAu12XLJmcXLi7+UbyPg==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ node-fetch: 2.6.7
+ npmlog: 6.0.2
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
+ /@lerna/global-options/6.0.3:
+ resolution: {integrity: sha512-XE22Mogzjh8w1rr07hALq40kmPuCr25cQ+K0OwYEiPsyH1dpOM7PSkP4qdT1l2UlWNM64LjgJtnjZ9hsx282VQ==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dev: true
+
+ /@lerna/has-npm-version/6.0.3:
+ resolution: {integrity: sha512-azZJkKPUWmfZf4AR40t9L6+utZaaCcZcXHOw/vHhmpn9GpZuc8Ck5cM5+8w9bgMglz0YwvTTWvutY2/mCnN5jA==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/child-process': 6.0.3
+ semver: 7.3.7
+ dev: true
+
+ /@lerna/import/6.0.3:
+ resolution: {integrity: sha512-AWSwoS9e5udSrJ7E15rR+8V7Hnhli4+3IHh658bpvcGvsIntL7hBZucqWiKRMOmrsafncaBpLkfFgdiyGwy1Pw==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/child-process': 6.0.3
+ '@lerna/command': 6.0.3
+ '@lerna/prompt': 6.0.3
+ '@lerna/pulse-till-done': 6.0.3
+ '@lerna/validation-error': 6.0.3
+ dedent: 0.7.0
+ fs-extra: 9.1.0
+ p-map-series: 2.1.0
+ dev: true
+
+ /@lerna/info/6.0.3:
+ resolution: {integrity: sha512-fqFGejIjjHN9obKUiWgmkknDJliyyRDbv/g6TMvQptxwiGfFBjR55TSPdKyUi9XslIQL5HWMYU7NWzZPiilk/A==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/command': 6.0.3
+ '@lerna/output': 6.0.3
+ envinfo: 7.8.1
+ dev: true
+
+ /@lerna/init/6.0.3:
+ resolution: {integrity: sha512-PmEmIJNNpXkGtEINBO5wfFrOlipAwY/4k674mbBWAfVJX+Affyx8yMcnMM28oDnFwe8gi12w5oRI0JcxcjpCFg==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/child-process': 6.0.3
+ '@lerna/command': 6.0.3
+ '@lerna/project': 6.0.3
+ fs-extra: 9.1.0
+ p-map: 4.0.0
+ write-json-file: 4.3.0
+ dev: true
+
+ /@lerna/link/6.0.3:
+ resolution: {integrity: sha512-jVTk8QWoVb+gPSkLm6XLtEKdOyqH4WwpOatSZ5zMgiRfjGDiwxCc3dB994JFPJ5FEnr9qCwqXFKjIqef7POIyQ==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/command': 6.0.3
+ '@lerna/package-graph': 6.0.3
+ '@lerna/symlink-dependencies': 6.0.3
+ '@lerna/validation-error': 6.0.3
+ p-map: 4.0.0
+ slash: 3.0.0
+ dev: true
+
+ /@lerna/list/6.0.3:
+ resolution: {integrity: sha512-5cQHJ2GAeN2/GV6uMJ4CVIQa3YOcmuNGqzr0DWwatR+5tire6dxFu5uY9Kjn2PYjmFUlwFwVgZzqRrSKPPPiVw==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/command': 6.0.3
+ '@lerna/filter-options': 6.0.3
+ '@lerna/listable': 6.0.3
+ '@lerna/output': 6.0.3
+ dev: true
+
+ /@lerna/listable/6.0.3:
+ resolution: {integrity: sha512-7EDzDMc22A/U4O1tCfLzb7MoFQVwwfv6E4F8JSilRupd7mp+2tMi7kvrwS5Dk5imNlHia4e5T0fVWXDUnIO2Sg==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/query-graph': 6.0.3
+ chalk: 4.1.2
+ columnify: 1.6.0
+ dev: true
+
+ /@lerna/log-packed/6.0.3:
+ resolution: {integrity: sha512-MCGAaaywfs8Z0eeG4mhP1u1ma+ORO8c9gGgtpX0LkjJ9HlE23BkCznC8VrJSVTqChtU4tkVp/38hhwEzZmcPFA==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ byte-size: 7.0.1
+ columnify: 1.6.0
+ has-unicode: 2.0.1
+ npmlog: 6.0.2
+ dev: true
+
+ /@lerna/npm-conf/6.0.3:
+ resolution: {integrity: sha512-lX4nAJgScfDmmdPVM9rOO6AzwCY9UPjuNpY6ZpMYkg/FIr1dch5+MFjexpan4VL2KRBNMWUYpDk3U/e2V+7k/A==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ config-chain: 1.1.13
+ pify: 5.0.0
+ dev: true
+
+ /@lerna/npm-dist-tag/6.0.3:
+ resolution: {integrity: sha512-wjbVPZQq1bdfikldEJ6TICikKhVh8gOWPsqR0iTj5iCDRUAiQM5HscrCApTIrB/hASyKV2xG60ruCpMG2Qo6AQ==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/otplease': 6.0.3
+ npm-package-arg: 8.1.1
+ npm-registry-fetch: 13.3.1
+ npmlog: 6.0.2
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+ dev: true
+
+ /@lerna/npm-install/6.0.3:
+ resolution: {integrity: sha512-mBypvdtt1feL7L6f8++/tChn/5bM+KbYX06WXjW3yUT81o9geg6p7aaZoxfP6A8ff5XVsTFFL7j86MwPxTsTQQ==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/child-process': 6.0.3
+ '@lerna/get-npm-exec-opts': 6.0.3
+ fs-extra: 9.1.0
+ npm-package-arg: 8.1.1
+ npmlog: 6.0.2
+ signal-exit: 3.0.7
+ write-pkg: 4.0.0
+ dev: true
+
+ /@lerna/npm-publish/6.0.3:
+ resolution: {integrity: sha512-RpjnUy7wWIWu7DJB2NQJ8rNgKz+yPoIXpzYOktIjb7gUrL+Ks4KjfbrgGuYk2nWFUEAzJlsOSJ8ggAQUoNIL9Q==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/otplease': 6.0.3
+ '@lerna/run-lifecycle': 6.0.3
+ fs-extra: 9.1.0
+ libnpmpublish: 6.0.5
+ npm-package-arg: 8.1.1
+ npmlog: 6.0.2
+ pify: 5.0.0
+ read-package-json: 5.0.2
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+ dev: true
+
+ /@lerna/npm-run-script/6.0.3:
+ resolution: {integrity: sha512-+IEo8BYBdyEzgdqHCw3sr4ZxAM9g7SoSdo+oskXyrwD8zScH+OadAZz+DukCad8kXlaSPWSNEc42biP2o611Ew==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/child-process': 6.0.3
+ '@lerna/get-npm-exec-opts': 6.0.3
+ npmlog: 6.0.2
+ dev: true
+
+ /@lerna/otplease/6.0.3:
+ resolution: {integrity: sha512-bNQn6IRrMJ8D6yF9v52KHiWD/XDB7ZkN2ziQjPwwOBcbzoVrDRCar91HQK7ygudPgmyjQNQZOrZqGlSTrh/wqA==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/prompt': 6.0.3
+ dev: true
+
+ /@lerna/output/6.0.3:
+ resolution: {integrity: sha512-/x7Bv4MVRwBJM6UVbfUYE1wjTGNUEnpFCHNc15MCUU3VY9O/Y1ZYq7iZHkYGMT9BmNeMS64fHBkDEwoqoJn/vA==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ npmlog: 6.0.2
+ dev: true
+
+ /@lerna/pack-directory/6.0.3:
+ resolution: {integrity: sha512-LVs/q6Dn1kXIxHA80e/Jo9AmAsesPs7TbBAxZ40lHXhJFvvFgx0r2bY+r3eV+77sziGmyKVBorgcbkEfFehfZw==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/get-packed': 6.0.3
+ '@lerna/package': 6.0.3
+ '@lerna/run-lifecycle': 6.0.3
+ '@lerna/temp-write': 6.0.3
+ npm-packlist: 5.1.3
+ npmlog: 6.0.2
+ tar: 6.1.11
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+ dev: true
+
+ /@lerna/package-graph/6.0.3:
+ resolution: {integrity: sha512-Xf4FxCpCFB2vSI+D/LR3k+ueSmam5Tx7LRbGiZnzdfXPvPqukZfcAXHLZbSzuJiv5NKVyG/VJjZk4SCogjrFTQ==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/prerelease-id-from-version': 6.0.3
+ '@lerna/validation-error': 6.0.3
+ npm-package-arg: 8.1.1
+ npmlog: 6.0.2
+ semver: 7.3.7
+ dev: true
+
+ /@lerna/package/6.0.3:
+ resolution: {integrity: sha512-UbaZSRT3lTmncmPCws0V6XcZhc0GLRm8LtspxyLeDjhyP0EabKAbaB3HVCelPn69CM81UtP8CLkTh+NpUNH2Aw==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ load-json-file: 6.2.0
+ npm-package-arg: 8.1.1
+ write-pkg: 4.0.0
+ dev: true
+
+ /@lerna/prerelease-id-from-version/6.0.3:
+ resolution: {integrity: sha512-mgDo6L93mlcg7GDgWZfRGxHmR5xFPQSMQJZeyU/5VY6sCbTnwTDSpYOoce6m71E4v15iJ/G5EKIchq8yVUIBBw==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ semver: 7.3.7
+ dev: true
+
+ /@lerna/profiler/6.0.3:
+ resolution: {integrity: sha512-tkFZEAALPtPOzcEZlH554SHH4rMORmpWH45mF3Py3mpy+HpQXLZmYlxot+wr3jPXkXQzwaIgDe0DMYJhhC8T9A==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ fs-extra: 9.1.0
+ npmlog: 6.0.2
+ upath: 2.0.1
+ dev: true
+
+ /@lerna/project/6.0.3:
+ resolution: {integrity: sha512-YBSWZRnRlwAwDuLKx7M7f1HyiqDY/dH+eMadHgasWgFJ5yHhtkwMCZTNgHvMAXTdN6iGb/A6mkPAN5zWhcDYBw==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/package': 6.0.3
+ '@lerna/validation-error': 6.0.3
+ cosmiconfig: 7.0.1
+ dedent: 0.7.0
+ dot-prop: 6.0.1
+ glob-parent: 5.1.2
+ globby: 11.1.0
+ js-yaml: 4.1.0
+ load-json-file: 6.2.0
+ npmlog: 6.0.2
+ p-map: 4.0.0
+ resolve-from: 5.0.0
+ write-json-file: 4.3.0
+ dev: true
+
+ /@lerna/prompt/6.0.3:
+ resolution: {integrity: sha512-M/3poJp9Nqr2xJ2nB9gE6qsCwxJqvVyEnM5mMPUzRpfCvAtVa6Rhx/x60I20GSogb8/J9Zapav3MNoX2rdv2UQ==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ inquirer: 8.2.5
+ npmlog: 6.0.2
+ dev: true
+
+ /@lerna/publish/6.0.3_dtuttet22dxzt73ll2oxv2ugvu:
+ resolution: {integrity: sha512-Vv9aDQEQv+5NRfaIpZpBqXcgfXkb18kpIUqBI4bAnqC/t168Gn/UzOxxjVkl5wuAKJ2sj8tDoZTEIb/DVoV53Q==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/check-working-tree': 6.0.3
+ '@lerna/child-process': 6.0.3
+ '@lerna/collect-updates': 6.0.3
+ '@lerna/command': 6.0.3
+ '@lerna/describe-ref': 6.0.3
+ '@lerna/log-packed': 6.0.3
+ '@lerna/npm-conf': 6.0.3
+ '@lerna/npm-dist-tag': 6.0.3
+ '@lerna/npm-publish': 6.0.3
+ '@lerna/otplease': 6.0.3
+ '@lerna/output': 6.0.3
+ '@lerna/pack-directory': 6.0.3
+ '@lerna/prerelease-id-from-version': 6.0.3
+ '@lerna/prompt': 6.0.3
+ '@lerna/pulse-till-done': 6.0.3
+ '@lerna/run-lifecycle': 6.0.3
+ '@lerna/run-topologically': 6.0.3
+ '@lerna/validation-error': 6.0.3
+ '@lerna/version': 6.0.3_dtuttet22dxzt73ll2oxv2ugvu
+ fs-extra: 9.1.0
+ libnpmaccess: 6.0.4
+ npm-package-arg: 8.1.1
+ npm-registry-fetch: 13.3.1
+ npmlog: 6.0.2
+ p-map: 4.0.0
+ p-pipe: 3.1.0
+ pacote: 13.6.2
+ semver: 7.3.7
+ transitivePeerDependencies:
+ - bluebird
+ - encoding
+ - nx
+ - supports-color
+ - typescript
+ dev: true
+
+ /@lerna/pulse-till-done/6.0.3:
+ resolution: {integrity: sha512-/HjvHtaDCr0qJuhJT6PuwoHFvPsZMB7f/GnEYGIzS0+ovwOTrbULD6ESo2lWcsFnxJ3tWv2OPIKEiHkJ0y1PCg==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ npmlog: 6.0.2
+ dev: true
+
+ /@lerna/query-graph/6.0.3:
+ resolution: {integrity: sha512-Se3G4ZIckjleki/BWUEInITfLTuNIYkqeStq50KEz74xhQ9jQs7ZLAOWc/Qxn3EPngCTLe8WqhLVeHFOfxgjvw==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/package-graph': 6.0.3
+ dev: true
+
+ /@lerna/resolve-symlink/6.0.3:
+ resolution: {integrity: sha512-9HkEl7kMQ4sZ3/+FEOhBt2rYoQP2cXQlhV7TNIej6SGaR0VtKe98ciM9bQAdkc/rOZtyZLc2cFBoUd10NEjzoA==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ fs-extra: 9.1.0
+ npmlog: 6.0.2
+ read-cmd-shim: 3.0.1
+ dev: true
+
+ /@lerna/rimraf-dir/6.0.3:
+ resolution: {integrity: sha512-jyC/PVL3rqC83l5Wphog8pSOmDbe5CIAHn9TeHvV8f/zdJnNE3zKXWTNjvyLgB1aPneQ4i2V+3BgdfpeDVAtHQ==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/child-process': 6.0.3
+ npmlog: 6.0.2
+ path-exists: 4.0.0
+ rimraf: 3.0.2
+ dev: true
+
+ /@lerna/run-lifecycle/6.0.3:
+ resolution: {integrity: sha512-qnFOyp9de81FA2HSBuXtW7LSklF+T6WtFkYH9q3kOJY/EghZlgzFmQYFHgJ/xVYxNu75QDuv6fsfJu4EtrR7ag==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/npm-conf': 6.0.3
+ '@npmcli/run-script': 4.2.1
+ npmlog: 6.0.2
+ p-queue: 6.6.2
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+ dev: true
+
+ /@lerna/run-topologically/6.0.3:
+ resolution: {integrity: sha512-nN0kcOO1TzWlxg5byM1V12tm4+lvchbawc1mNje1KsujdzE4gSwD84ub4SFRNkUUBmsPvTGysorhtXckQfqQWw==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/query-graph': 6.0.3
+ p-queue: 6.6.2
+ dev: true
+
+ /@lerna/run/6.0.3:
+ resolution: {integrity: sha512-eiMF/Pfld/ngH+Emkwyxqf40WWEK6bQE2KhRtu0xyuSIFycFlZJursd72ylTnvZAX3Qx4P4drdHaFnfWyuglcw==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/command': 6.0.3
+ '@lerna/filter-options': 6.0.3
+ '@lerna/npm-run-script': 6.0.3
+ '@lerna/output': 6.0.3
+ '@lerna/profiler': 6.0.3
+ '@lerna/run-topologically': 6.0.3
+ '@lerna/timer': 6.0.3
+ '@lerna/validation-error': 6.0.3
+ fs-extra: 9.1.0
+ p-map: 4.0.0
+ dev: true
+
+ /@lerna/symlink-binary/6.0.3:
+ resolution: {integrity: sha512-bRrPPuZoYvEDc8eTGwhTLQwRmtjYfD/hBVElqhfAlUTPcuA36VrQwBkmhGAUKcIDmEHTVk6IHNiFb/JwuiOSYA==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/create-symlink': 6.0.3
+ '@lerna/package': 6.0.3
+ fs-extra: 9.1.0
+ p-map: 4.0.0
+ dev: true
+
+ /@lerna/symlink-dependencies/6.0.3:
+ resolution: {integrity: sha512-4DmKLZkJ9oyQ8DXdXCMT6fns6w6G/7h9D2pXGNOYa/IFtjb4mKDMBfJ61XhmvTlxrEzjEc9CnqMeO7BQBXWt8A==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/create-symlink': 6.0.3
+ '@lerna/resolve-symlink': 6.0.3
+ '@lerna/symlink-binary': 6.0.3
+ fs-extra: 9.1.0
+ p-map: 4.0.0
+ p-map-series: 2.1.0
+ dev: true
+
+ /@lerna/temp-write/6.0.3:
+ resolution: {integrity: sha512-ws+EHk7Bp4hR6liusGk8K+ybnh9iOSkCnHD6d+avwa2lMYtX28v93kle/Y5JbTghjumgDUF9/C+EQg51zIVQmw==}
+ dependencies:
+ graceful-fs: 4.2.10
+ is-stream: 2.0.1
+ make-dir: 3.1.0
+ temp-dir: 1.0.0
+ uuid: 8.3.2
+ dev: true
+
+ /@lerna/timer/6.0.3:
+ resolution: {integrity: sha512-Ywfu3cGi0pV9vN4ki8oTu+qdJArMwrW3MiXL3/2fospKRdGL7sGCuXlS9Byd+aduMvmMwKbnX0EW+6R7Np+qSg==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dev: true
+
+ /@lerna/validation-error/6.0.3:
+ resolution: {integrity: sha512-cWYKMFne/euWnW4w7ry+RvDkj8iVNYMrbRF86Px/609GXFOoOwEROJyvTlRp1BgCmC2/3KzidyBletN/R3JHEA==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ npmlog: 6.0.2
+ dev: true
+
+ /@lerna/version/6.0.3_dtuttet22dxzt73ll2oxv2ugvu:
+ resolution: {integrity: sha512-ssQhsK51IBMabB+RpQPIRn93iozwMRpvfh2vVIVdTs76j8r/1ljIs3gLXPDzLo9RbyLcou+VKi3c/7coCAwsdw==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@lerna/check-working-tree': 6.0.3
+ '@lerna/child-process': 6.0.3
+ '@lerna/collect-updates': 6.0.3
+ '@lerna/command': 6.0.3
+ '@lerna/conventional-commits': 6.0.3
+ '@lerna/github-client': 6.0.3
+ '@lerna/gitlab-client': 6.0.3
+ '@lerna/output': 6.0.3
+ '@lerna/prerelease-id-from-version': 6.0.3
+ '@lerna/prompt': 6.0.3
+ '@lerna/run-lifecycle': 6.0.3
+ '@lerna/run-topologically': 6.0.3
+ '@lerna/temp-write': 6.0.3
+ '@lerna/validation-error': 6.0.3
+ '@nrwl/devkit': 15.0.13_dtuttet22dxzt73ll2oxv2ugvu
+ chalk: 4.1.2
+ dedent: 0.7.0
+ load-json-file: 6.2.0
+ minimatch: 3.1.2
+ npmlog: 6.0.2
+ p-map: 4.0.0
+ p-pipe: 3.1.0
+ p-reduce: 2.1.0
+ p-waterfall: 2.1.1
+ semver: 7.3.7
+ slash: 3.0.0
+ write-json-file: 4.3.0
+ transitivePeerDependencies:
+ - bluebird
+ - encoding
+ - nx
+ - supports-color
+ - typescript
+ dev: true
+
+ /@lerna/write-log-file/6.0.3:
+ resolution: {integrity: sha512-xZFC9IgGkvuv1MUIC7EKD5ltlljgLlz7isbfQ2QHAqOmGJG6jPqa0Yo38pGe8wEDtGSVgtlUGkx7iHK22MawEA==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ dependencies:
+ npmlog: 6.0.2
+ write-file-atomic: 4.0.2
+ dev: true
+
+ /@mantine/core/5.6.3_lha5ulipqaccx6prm56igoh3zy:
+ resolution: {integrity: sha512-joEeRblARR/faeOjOeETY4l4osYEFfgZV0+i8BO7TyalZ+ONMUurYWJp0a5iX4Gf3M6uNO9lbBLlsOy2vDnNew==}
+ peerDependencies:
+ '@mantine/hooks': 5.6.3
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ dependencies:
+ '@floating-ui/react-dom-interactions': 0.10.2_rj7ozvcq3uehdlnj3cbwzbi5ce
+ '@mantine/hooks': 5.6.3_react@18.2.0
+ '@mantine/styles': 5.6.3_sogmqz4enknxtkxk3k5s6bqwnq
+ '@mantine/utils': 5.6.3_react@18.2.0
+ '@radix-ui/react-scroll-area': 1.0.0_biqbaboplfbrettd7655fr4n2y
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ react-textarea-autosize: 8.3.4_iapumuv4e6jcjznwuxpf4tt22e
+ transitivePeerDependencies:
+ - '@emotion/react'
+ - '@types/react'
+ dev: false
+
+ /@mantine/dropzone/5.6.3_hliqdvg4trnmlenfv3ync25tfa:
+ resolution: {integrity: sha512-7Y+JSFxFXuM+Mx9dguFkrP7ZzKtkkrNnPFj7XqzqE7nOopm29Mj45HHCignBCOFCDFMkdDoikHHfHQI+HWLv8Q==}
+ peerDependencies:
+ '@mantine/core': 5.6.3
+ '@mantine/hooks': 5.6.3
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ dependencies:
+ '@mantine/core': 5.6.3_lha5ulipqaccx6prm56igoh3zy
+ '@mantine/hooks': 5.6.3_react@18.2.0
+ '@mantine/utils': 5.6.3_react@18.2.0
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ react-dropzone: 14.2.3_react@18.2.0
+ dev: false
+
+ /@mantine/hooks/5.6.3_react@18.2.0:
+ resolution: {integrity: sha512-de3Fm7Z2MrWms8Ah/YbG9fr6CLLtAfz5LCwtqnRXgOetqbu38ZERYNi7TMFxnhGdZko90QjdIpiQRJBsfVax+g==}
+ peerDependencies:
+ react: '>=16.8.0'
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /@mantine/notifications/5.6.3_hliqdvg4trnmlenfv3ync25tfa:
+ resolution: {integrity: sha512-YL+gqKDCakQ2NCh16w8zkwxD80xUTCmpLEwYXvJoLZix0jmt62pmwG+n/kIcZL4Bn04YYmLROOXKga1aiIFF/A==}
+ peerDependencies:
+ '@mantine/core': 5.6.3
+ '@mantine/hooks': 5.6.3
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ dependencies:
+ '@mantine/core': 5.6.3_lha5ulipqaccx6prm56igoh3zy
+ '@mantine/hooks': 5.6.3_react@18.2.0
+ '@mantine/utils': 5.6.3_react@18.2.0
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ react-transition-group: 4.4.2_biqbaboplfbrettd7655fr4n2y
+ dev: false
+
+ /@mantine/styles/5.6.3_sogmqz4enknxtkxk3k5s6bqwnq:
+ resolution: {integrity: sha512-kgaEb1zTmZnSrcuY+ivEpBaaK9ELkWV/mBjjEVDc3fvRbcZioRFD/UUOhga4wLxU6TzLD/juAh1LPqZ3v3kwKQ==}
+ peerDependencies:
+ '@emotion/react': '>=11.9.0'
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ dependencies:
+ '@emotion/react': 11.10.5_d3zi5agmim5yvele7myolzagti
+ clsx: 1.1.1
+ csstype: 3.0.9
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ dev: false
+
+ /@mantine/utils/5.6.3_react@18.2.0:
+ resolution: {integrity: sha512-GrDvXJG7inJaQHjsfg8pOYFE/vNpHMKScQM0M4hKlDoVjXsQUPxw8Lx4A7jhmVf2eNJUqvOQ9A1jbO7W7bedcA==}
+ peerDependencies:
+ react: '>=16.8.0'
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /@mdx-js/mdx/1.6.22:
+ resolution: {integrity: sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==}
+ dependencies:
+ '@babel/core': 7.12.9
+ '@babel/plugin-syntax-jsx': 7.12.1_@babel+core@7.12.9
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9
+ '@mdx-js/util': 1.6.22
+ babel-plugin-apply-mdx-type-prop: 1.6.22_@babel+core@7.12.9
+ babel-plugin-extract-import-names: 1.6.22
+ camelcase-css: 2.0.1
+ detab: 2.0.4
+ hast-util-raw: 6.0.1
+ lodash.uniq: 4.5.0
+ mdast-util-to-hast: 10.0.1
+ remark-footnotes: 2.0.0
+ remark-mdx: 1.6.22
+ remark-parse: 8.0.3
+ remark-squeeze-paragraphs: 4.0.0
+ style-to-object: 0.3.0
+ unified: 9.2.0
+ unist-builder: 2.0.3
+ unist-util-visit: 2.0.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@mdx-js/react/1.6.22_react@18.2.0:
+ resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==}
+ peerDependencies:
+ react: ^16.13.1 || ^17.0.0
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /@mdx-js/util/1.6.22:
+ resolution: {integrity: sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==}
+ dev: false
+
+ /@mrmlnc/readdir-enhanced/2.2.1:
+ resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==}
+ engines: {node: '>=4'}
+ dependencies:
+ call-me-maybe: 1.0.1
+ glob-to-regexp: 0.3.0
+ dev: false
+
+ /@nestjs/cli/9.1.5:
+ resolution: {integrity: sha512-rSp26+Nv7PFtYrRSP18Gv5ZK8rRSc2SCCF5wh4SdZaVGgkxShpNq9YEfI+ik/uziN3KC5o74ppYRXGj+aHGVsA==}
+ engines: {node: '>= 12.9.0'}
+ hasBin: true
+ dependencies:
+ '@angular-devkit/core': 14.2.2_chokidar@3.5.3
+ '@angular-devkit/schematics': 14.2.2_chokidar@3.5.3
+ '@angular-devkit/schematics-cli': 14.2.2_chokidar@3.5.3
+ '@nestjs/schematics': 9.0.3_ar2on76c45aosuucycxzxivxgm
+ chalk: 3.0.0
+ chokidar: 3.5.3
+ cli-table3: 0.6.2
+ commander: 4.1.1
+ fork-ts-checker-webpack-plugin: 7.2.13_qqxisngxjbp7lstdk7boexbu3e
+ inquirer: 7.3.3
+ node-emoji: 1.11.0
+ ora: 5.4.1
+ os-name: 4.0.1
+ rimraf: 3.0.2
+ shelljs: 0.8.5
+ source-map-support: 0.5.21
+ tree-kill: 1.2.2
+ tsconfig-paths: 4.1.0
+ tsconfig-paths-webpack-plugin: 4.0.0
+ typescript: 4.8.4
+ webpack: 5.74.0
+ webpack-node-externals: 3.0.0
+ transitivePeerDependencies:
+ - '@swc/core'
+ - esbuild
+ - uglify-js
+ - vue-template-compiler
+ - webpack-cli
+ dev: true
+
+ /@nestjs/common/9.1.2_allg6cauirbqzgqcmexy2wdnoq:
+ resolution: {integrity: sha512-zpF4DaLvvsCVqfrf9LJfSeYP+SBCWCFbOCTOmEZ5Gs6Hralia6s2kS+CSicJKx8IpnyC6ZReuqdTbjcPl4yunA==}
+ peerDependencies:
+ cache-manager: '*'
+ class-transformer: '*'
+ class-validator: '*'
+ reflect-metadata: ^0.1.12
+ rxjs: ^7.1.0
+ peerDependenciesMeta:
+ cache-manager:
+ optional: true
+ class-transformer:
+ optional: true
+ class-validator:
+ optional: true
+ dependencies:
+ class-transformer: 0.5.1
+ class-validator: 0.13.2
+ iterare: 1.2.1
+ reflect-metadata: 0.1.13
+ rxjs: 7.5.6
+ tslib: 2.4.0
+ uuid: 9.0.0
+ dev: false
+
+ /@nestjs/core/9.1.2_foclggtudvr6cnfc5hz7ukfode:
+ resolution: {integrity: sha512-wrb/U8PN50K9wEHOLifR9bFKDH8+Dr37rXBB5J+9v3tSWEHkT4o2OiJ8qFmfX5B9GwGE/YRKaJqxw/ScvYvPFw==}
+ requiresBuild: true
+ peerDependencies:
+ '@nestjs/common': ^9.0.0
+ '@nestjs/microservices': ^9.0.0
+ '@nestjs/platform-express': ^9.0.0
+ '@nestjs/websockets': ^9.0.0
+ reflect-metadata: ^0.1.12
+ rxjs: ^7.1.0
+ peerDependenciesMeta:
+ '@nestjs/microservices':
+ optional: true
+ '@nestjs/platform-express':
+ optional: true
+ '@nestjs/websockets':
+ optional: true
+ dependencies:
+ '@nestjs/common': 9.1.2_allg6cauirbqzgqcmexy2wdnoq
+ '@nestjs/platform-express': 9.1.2_umdjpi6fqr4wvw73r3mhthbyle
+ '@nuxtjs/opencollective': 0.3.2
+ fast-safe-stringify: 2.1.1
+ iterare: 1.2.1
+ object-hash: 3.0.0
+ path-to-regexp: 3.2.0
+ reflect-metadata: 0.1.13
+ rxjs: 7.5.6
+ tslib: 2.4.0
+ uuid: 9.0.0
+ transitivePeerDependencies:
+ - encoding
+ dev: false
+
+ /@nestjs/mapped-types/1.1.0_zeb4gyhc74qs6lqbathv6jdp3i:
+ resolution: {integrity: sha512-+2kSly4P1QI+9eGt+/uGyPdEG1hVz7nbpqPHWZVYgoqz8eOHljpXPag+UCVRw9zo2XCu4sgNUIGe8Uk0+OvUQg==}
+ peerDependencies:
+ '@nestjs/common': ^7.0.8 || ^8.0.0 || ^9.0.0
+ class-transformer: ^0.2.0 || ^0.3.0 || ^0.4.0 || ^0.5.0
+ class-validator: ^0.11.1 || ^0.12.0 || ^0.13.0
+ reflect-metadata: ^0.1.12
+ peerDependenciesMeta:
+ class-transformer:
+ optional: true
+ class-validator:
+ optional: true
+ dependencies:
+ '@nestjs/common': 9.1.2_allg6cauirbqzgqcmexy2wdnoq
+ class-transformer: 0.5.1
+ class-validator: 0.13.2
+ reflect-metadata: 0.1.13
+ dev: false
+
+ /@nestjs/platform-express/9.1.2_umdjpi6fqr4wvw73r3mhthbyle:
+ resolution: {integrity: sha512-SlAG6nfEVSk+lQL1Z4kjLip2jJ+w4mc8cG5ccM3mN06gREYfJVayNuydPUYtoxP/QmzugQfO5+cNEdqdhCmSQw==}
+ peerDependencies:
+ '@nestjs/common': ^9.0.0
+ '@nestjs/core': ^9.0.0
+ dependencies:
+ '@nestjs/common': 9.1.2_allg6cauirbqzgqcmexy2wdnoq
+ '@nestjs/core': 9.1.2_foclggtudvr6cnfc5hz7ukfode
+ body-parser: 1.20.0
+ cors: 2.8.5
+ express: 4.18.1
+ multer: 1.4.4-lts.1
+ tslib: 2.4.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@nestjs/schematics/9.0.3_ar2on76c45aosuucycxzxivxgm:
+ resolution: {integrity: sha512-kZrU/lrpVd2cnK8I3ibDb3Wi1ppl3wX3U3lVWoL+DzRRoezWKkh8upEL4q0koKmuXnsmLiu3UPxFeMOrJV7TSA==}
+ peerDependencies:
+ typescript: ^4.3.5
+ dependencies:
+ '@angular-devkit/core': 14.2.1_chokidar@3.5.3
+ '@angular-devkit/schematics': 14.2.1_chokidar@3.5.3
+ fs-extra: 10.1.0
+ jsonc-parser: 3.2.0
+ pluralize: 8.0.0
+ typescript: 4.8.4
+ transitivePeerDependencies:
+ - chokidar
+ dev: true
+
+ /@nestjs/swagger/6.1.2_o5ym4ozkuwx4tb6ybx3mgktlhe:
+ resolution: {integrity: sha512-RU1DeTDyuN/lRXKFWaf7I9LYF34/ale3IIGeY3romAcXL/N9W0+50Ek3ou+Ajd5FqpLqzt7saYhnaQegVuU4UQ==}
+ peerDependencies:
+ '@fastify/static': ^6.0.0
+ '@nestjs/common': ^9.0.0
+ '@nestjs/core': ^9.0.0
+ reflect-metadata: ^0.1.12
+ peerDependenciesMeta:
+ '@fastify/static':
+ optional: true
+ dependencies:
+ '@nestjs/common': 9.1.2_allg6cauirbqzgqcmexy2wdnoq
+ '@nestjs/core': 9.1.2_foclggtudvr6cnfc5hz7ukfode
+ '@nestjs/mapped-types': 1.1.0_zeb4gyhc74qs6lqbathv6jdp3i
+ js-yaml: 4.1.0
+ lodash: 4.17.21
+ path-to-regexp: 3.2.0
+ reflect-metadata: 0.1.13
+ swagger-ui-dist: 4.14.0
+ transitivePeerDependencies:
+ - class-transformer
+ - class-validator
+ dev: false
+
+ /@nicolo-ribaudo/eslint-scope-5-internals/5.1.1-v1:
+ resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==}
+ dependencies:
+ eslint-scope: 5.1.1
+ dev: false
+
+ /@nodelib/fs.scandir/2.1.5:
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ /@nodelib/fs.stat/1.1.3:
+ resolution: {integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==}
+ engines: {node: '>= 6'}
+ dev: false
+
+ /@nodelib/fs.stat/2.0.5:
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ /@nodelib/fs.walk/1.2.8:
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.13.0
+
+ /@npmcli/arborist/5.3.0:
+ resolution: {integrity: sha512-+rZ9zgL1lnbl8Xbb1NQdMjveOMwj4lIYfcDtyJHHi5x4X8jtR6m8SXooJMZy5vmFVZ8w7A2Bnd/oX9eTuU8w5A==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ hasBin: true
+ dependencies:
+ '@isaacs/string-locale-compare': 1.1.0
+ '@npmcli/installed-package-contents': 1.0.7
+ '@npmcli/map-workspaces': 2.0.4
+ '@npmcli/metavuln-calculator': 3.1.1
+ '@npmcli/move-file': 2.0.1
+ '@npmcli/name-from-folder': 1.0.1
+ '@npmcli/node-gyp': 2.0.0
+ '@npmcli/package-json': 2.0.0
+ '@npmcli/run-script': 4.2.1
+ bin-links: 3.0.3
+ cacache: 16.1.3
+ common-ancestor-path: 1.0.1
+ json-parse-even-better-errors: 2.3.1
+ json-stringify-nice: 1.1.4
+ mkdirp: 1.0.4
+ mkdirp-infer-owner: 2.0.0
+ nopt: 5.0.0
+ npm-install-checks: 5.0.0
+ npm-package-arg: 9.1.2
+ npm-pick-manifest: 7.0.2
+ npm-registry-fetch: 13.3.1
+ npmlog: 6.0.2
+ pacote: 13.6.2
+ parse-conflict-json: 2.0.2
+ proc-log: 2.0.1
+ promise-all-reject-late: 1.0.1
+ promise-call-limit: 1.0.1
+ read-package-json-fast: 2.0.3
+ readdir-scoped-modules: 1.1.0
+ rimraf: 3.0.2
+ semver: 7.3.7
+ ssri: 9.0.1
+ treeverse: 2.0.0
+ walk-up-path: 1.0.0
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+ dev: true
+
+ /@npmcli/fs/1.1.1:
+ resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==}
+ dependencies:
+ '@gar/promisify': 1.1.3
+ semver: 7.3.7
+ dev: false
+
+ /@npmcli/fs/2.1.2:
+ resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@gar/promisify': 1.1.3
+ semver: 7.3.7
+ dev: true
+
+ /@npmcli/git/3.0.2:
+ resolution: {integrity: sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@npmcli/promise-spawn': 3.0.0
+ lru-cache: 7.14.1
+ mkdirp: 1.0.4
+ npm-pick-manifest: 7.0.2
+ proc-log: 2.0.1
+ promise-inflight: 1.0.1
+ promise-retry: 2.0.1
+ semver: 7.3.7
+ which: 2.0.2
+ transitivePeerDependencies:
+ - bluebird
+ dev: true
+
+ /@npmcli/installed-package-contents/1.0.7:
+ resolution: {integrity: sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==}
+ engines: {node: '>= 10'}
+ hasBin: true
+ dependencies:
+ npm-bundled: 1.1.2
+ npm-normalize-package-bin: 1.0.1
+ dev: true
+
+ /@npmcli/map-workspaces/2.0.4:
+ resolution: {integrity: sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@npmcli/name-from-folder': 1.0.1
+ glob: 8.0.3
+ minimatch: 5.1.0
+ read-package-json-fast: 2.0.3
+ dev: true
+
+ /@npmcli/metavuln-calculator/3.1.1:
+ resolution: {integrity: sha512-n69ygIaqAedecLeVH3KnO39M6ZHiJ2dEv5A7DGvcqCB8q17BGUgW8QaanIkbWUo2aYGZqJaOORTLAlIvKjNDKA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ cacache: 16.1.3
+ json-parse-even-better-errors: 2.3.1
+ pacote: 13.6.2
+ semver: 7.3.7
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+ dev: true
+
+ /@npmcli/move-file/1.1.2:
+ resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==}
+ engines: {node: '>=10'}
+ dependencies:
+ mkdirp: 1.0.4
+ rimraf: 3.0.2
+ dev: false
+
+ /@npmcli/move-file/2.0.1:
+ resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ deprecated: This functionality has been moved to @npmcli/fs
+ dependencies:
+ mkdirp: 1.0.4
+ rimraf: 3.0.2
+ dev: true
+
+ /@npmcli/name-from-folder/1.0.1:
+ resolution: {integrity: sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==}
+ dev: true
+
+ /@npmcli/node-gyp/2.0.0:
+ resolution: {integrity: sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dev: true
+
+ /@npmcli/package-json/2.0.0:
+ resolution: {integrity: sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ json-parse-even-better-errors: 2.3.1
+ dev: true
+
+ /@npmcli/promise-spawn/3.0.0:
+ resolution: {integrity: sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ infer-owner: 1.0.4
+ dev: true
+
+ /@npmcli/run-script/4.2.1:
+ resolution: {integrity: sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@npmcli/node-gyp': 2.0.0
+ '@npmcli/promise-spawn': 3.0.0
+ node-gyp: 9.3.0
+ read-package-json-fast: 2.0.3
+ which: 2.0.2
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+ dev: true
+
+ /@nrwl/cli/14.7.11:
+ resolution: {integrity: sha512-x6mRGFtETKvLfimpNH9YKabiCjPsJ7OjsjGrK/w1g+kjQ9Ls6iGdk7hsJYvmiquHWsfZVAWyNoDnuhiiAEFuJQ==}
+ dependencies:
+ nx: 14.7.11
+ transitivePeerDependencies:
+ - '@swc-node/register'
+ - '@swc/core'
+ dev: true
+
+ /@nrwl/cli/15.0.13:
+ resolution: {integrity: sha512-w0oOP4v176CbD34+VytiAItIH3fOeiaccq7T2Un/hhx+/Q9mdO/VWyYZOKmp85uGodx/yZ6LyGW6rX0BjM0Rsg==}
+ dependencies:
+ nx: 15.0.13
+ transitivePeerDependencies:
+ - '@swc-node/register'
+ - '@swc/core'
+ - debug
+ dev: true
+
+ /@nrwl/devkit/14.7.11_mkl4ko3nhg7bm35pl25zrp2t7u:
+ resolution: {integrity: sha512-oVn20mh+ET+tjR9lunD61XKd16eHXk7KHGjWvsM5Vu7grrwdmF0PLKDDFN32QFIG42BQsDGKRts14UPX/3QyPQ==}
+ peerDependencies:
+ nx: '>= 13.10 <= 15'
+ dependencies:
+ '@phenomnomnominal/tsquery': 4.1.1_typescript@4.8.4
+ ejs: 3.1.8
+ ignore: 5.2.0
+ nx: 14.7.11
+ tslib: 2.4.0
+ transitivePeerDependencies:
+ - typescript
+ dev: true
+
+ /@nrwl/devkit/15.0.13_dtuttet22dxzt73ll2oxv2ugvu:
+ resolution: {integrity: sha512-/8k7wbBRFf2UC+T4F+vWMy3bfSGi+uK6RwXk53moLq3nxehXaQhRiCqasC6VJFUw3zK6luu2T7xkPUlA9K9l4w==}
+ peerDependencies:
+ nx: '>= 14 <= 16'
+ dependencies:
+ '@phenomnomnominal/tsquery': 4.1.1_typescript@4.8.4
+ ejs: 3.1.8
+ ignore: 5.2.0
+ nx: 15.0.13
+ semver: 7.3.4
+ tslib: 2.4.0
+ transitivePeerDependencies:
+ - typescript
+ dev: true
+
+ /@nrwl/jest/14.7.11_mkl4ko3nhg7bm35pl25zrp2t7u:
+ resolution: {integrity: sha512-HpjnNxreE+7h6KmjNQXeb5owwfTdEXRs5kxBw2O3ez8M7R9ruLM+0MpuhI+A71nzIRnR55O9TXncddNwJmYd8Q==}
+ dependencies:
+ '@jest/reporters': 28.1.1
+ '@jest/test-result': 28.1.1
+ '@nrwl/devkit': 14.7.11_mkl4ko3nhg7bm35pl25zrp2t7u
+ '@phenomnomnominal/tsquery': 4.1.1_typescript@4.8.4
+ chalk: 4.1.0
+ dotenv: 10.0.0
+ identity-obj-proxy: 3.0.0
+ jest-config: 28.1.1
+ jest-resolve: 28.1.1
+ jest-util: 28.1.1
+ resolve.exports: 1.1.0
+ tslib: 2.4.0
+ transitivePeerDependencies:
+ - '@types/node'
+ - node-notifier
+ - nx
+ - supports-color
+ - ts-node
+ - typescript
+ dev: true
+
+ /@nrwl/linter/14.7.11_abkyjrvwkq25uefwggm6hc3u2a:
+ resolution: {integrity: sha512-6PHfgbeHJd0OZrPfoiuzO3ohgYPeAqsNKGbBFP09EeP6FXFtihTGhqzo20l81ZNUwYpHELOZPP+6LAmycPCiug==}
+ peerDependencies:
+ eslint: ^8.0.0
+ peerDependenciesMeta:
+ eslint:
+ optional: true
+ dependencies:
+ '@nrwl/devkit': 14.7.11_mkl4ko3nhg7bm35pl25zrp2t7u
+ '@nrwl/jest': 14.7.11_mkl4ko3nhg7bm35pl25zrp2t7u
+ '@phenomnomnominal/tsquery': 4.1.1_typescript@4.8.4
+ eslint: 8.23.1
+ nx: 14.7.11
+ tmp: 0.2.1
+ tslib: 2.4.0
+ transitivePeerDependencies:
+ - '@swc-node/register'
+ - '@swc/core'
+ - '@types/node'
+ - node-notifier
+ - supports-color
+ - ts-node
+ - typescript
+ dev: true
+
+ /@nrwl/nx-cloud/14.6.2:
+ resolution: {integrity: sha512-w8ujbFMOxE7lJg52O3JjnpTGlBKc+/vovxVTplIfGU9TYgEgAo/v4HS9svztzGd9Era7qmNaoYOmxm6Ebtbo5g==}
+ hasBin: true
+ dependencies:
+ axios: 0.21.4
+ chalk: 4.1.0
+ dotenv: 10.0.0
+ node-machine-id: 1.1.12
+ strip-json-comments: 3.1.1
+ tar: 6.1.11
+ yargs-parser: 21.1.1
+ transitivePeerDependencies:
+ - debug
+ dev: true
+
+ /@nrwl/tao/14.7.11:
+ resolution: {integrity: sha512-fV34dIkAGZD0wRl1Od1AnxBsUJgAwDdnu+7ILx9jt8FsS/RdrBu0gUlzX7P2CMsxrTWKhM/dcjS9edUFXWGdng==}
+ hasBin: true
+ dependencies:
+ nx: 14.7.11
+ transitivePeerDependencies:
+ - '@swc-node/register'
+ - '@swc/core'
+ dev: true
+
+ /@nrwl/tao/15.0.13:
+ resolution: {integrity: sha512-z55RKnVOYsiABKFUIj+QBf6I4fUwTlObxJpgUJp0i3E97P3BgbzhTG1EhuBxLH8fGKrbOAPs0ct38Asl+zGZfQ==}
+ hasBin: true
+ dependencies:
+ nx: 15.0.13
+ transitivePeerDependencies:
+ - '@swc-node/register'
+ - '@swc/core'
+ - debug
+ dev: true
+
+ /@nrwl/workspace/14.7.11_dojjs7twzt2enhh7vbcg6opfoq:
+ resolution: {integrity: sha512-rf41S7IDVesYrW7LEiDQ4rh8kFDXCOFRgI8ZKCXwBUBX+/TIWmKZMYjFNY794AqfU4ybhdShUlsghD/yqtS7qw==}
+ peerDependencies:
+ prettier: ^2.6.2
+ peerDependenciesMeta:
+ prettier:
+ optional: true
+ dependencies:
+ '@nrwl/devkit': 14.7.11_mkl4ko3nhg7bm35pl25zrp2t7u
+ '@nrwl/jest': 14.7.11_mkl4ko3nhg7bm35pl25zrp2t7u
+ '@nrwl/linter': 14.7.11_abkyjrvwkq25uefwggm6hc3u2a
+ '@parcel/watcher': 2.0.4
+ chalk: 4.1.0
+ chokidar: 3.5.3
+ cli-cursor: 3.1.0
+ cli-spinners: 2.6.1
+ dotenv: 10.0.0
+ enquirer: 2.3.6
+ figures: 3.2.0
+ flat: 5.0.2
+ fs-extra: 10.1.0
+ glob: 7.1.4
+ ignore: 5.2.0
+ minimatch: 3.0.5
+ npm-run-path: 4.0.1
+ nx: 14.7.11
+ open: 8.4.0
+ prettier: 2.7.1
+ rxjs: 6.6.7
+ semver: 7.3.4
+ tmp: 0.2.1
+ tslib: 2.4.0
+ yargs: 17.5.1
+ yargs-parser: 21.0.1
+ transitivePeerDependencies:
+ - '@swc-node/register'
+ - '@swc/core'
+ - '@types/node'
+ - eslint
+ - node-notifier
+ - supports-color
+ - ts-node
+ - typescript
+ dev: true
+
+ /@nuxtjs/opencollective/0.3.2:
+ resolution: {integrity: sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==}
+ engines: {node: '>=8.0.0', npm: '>=5.0.0'}
+ hasBin: true
+ dependencies:
+ chalk: 4.1.2
+ consola: 2.15.3
+ node-fetch: 2.6.7
+ transitivePeerDependencies:
+ - encoding
+ dev: false
+
+ /@octokit/auth-token/3.0.2:
+ resolution: {integrity: sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q==}
+ engines: {node: '>= 14'}
+ dependencies:
+ '@octokit/types': 8.0.0
+ dev: true
+
+ /@octokit/core/4.1.0:
+ resolution: {integrity: sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ==}
+ engines: {node: '>= 14'}
+ dependencies:
+ '@octokit/auth-token': 3.0.2
+ '@octokit/graphql': 5.0.4
+ '@octokit/request': 6.2.2
+ '@octokit/request-error': 3.0.2
+ '@octokit/types': 8.0.0
+ before-after-hook: 2.2.3
+ universal-user-agent: 6.0.0
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
+ /@octokit/endpoint/7.0.3:
+ resolution: {integrity: sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==}
+ engines: {node: '>= 14'}
+ dependencies:
+ '@octokit/types': 8.0.0
+ is-plain-object: 5.0.0
+ universal-user-agent: 6.0.0
+ dev: true
+
+ /@octokit/graphql/5.0.4:
+ resolution: {integrity: sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A==}
+ engines: {node: '>= 14'}
+ dependencies:
+ '@octokit/request': 6.2.2
+ '@octokit/types': 8.0.0
+ universal-user-agent: 6.0.0
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
+ /@octokit/openapi-types/14.0.0:
+ resolution: {integrity: sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==}
+ dev: true
+
+ /@octokit/plugin-enterprise-rest/6.0.1:
+ resolution: {integrity: sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==}
+ dev: true
+
+ /@octokit/plugin-paginate-rest/5.0.1_@octokit+core@4.1.0:
+ resolution: {integrity: sha512-7A+rEkS70pH36Z6JivSlR7Zqepz3KVucEFVDnSrgHXzG7WLAzYwcHZbKdfTXHwuTHbkT1vKvz7dHl1+HNf6Qyw==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ '@octokit/core': '>=4'
+ dependencies:
+ '@octokit/core': 4.1.0
+ '@octokit/types': 8.0.0
+ dev: true
+
+ /@octokit/plugin-request-log/1.0.4_@octokit+core@4.1.0:
+ resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==}
+ peerDependencies:
+ '@octokit/core': '>=3'
+ dependencies:
+ '@octokit/core': 4.1.0
+ dev: true
+
+ /@octokit/plugin-rest-endpoint-methods/6.7.0_@octokit+core@4.1.0:
+ resolution: {integrity: sha512-orxQ0fAHA7IpYhG2flD2AygztPlGYNAdlzYz8yrD8NDgelPfOYoRPROfEyIe035PlxvbYrgkfUZIhSBKju/Cvw==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ '@octokit/core': '>=3'
+ dependencies:
+ '@octokit/core': 4.1.0
+ '@octokit/types': 8.0.0
+ deprecation: 2.3.1
+ dev: true
+
+ /@octokit/request-error/3.0.2:
+ resolution: {integrity: sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg==}
+ engines: {node: '>= 14'}
+ dependencies:
+ '@octokit/types': 8.0.0
+ deprecation: 2.3.1
+ once: 1.4.0
+ dev: true
+
+ /@octokit/request/6.2.2:
+ resolution: {integrity: sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw==}
+ engines: {node: '>= 14'}
+ dependencies:
+ '@octokit/endpoint': 7.0.3
+ '@octokit/request-error': 3.0.2
+ '@octokit/types': 8.0.0
+ is-plain-object: 5.0.0
+ node-fetch: 2.6.7
+ universal-user-agent: 6.0.0
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
+ /@octokit/rest/19.0.5:
+ resolution: {integrity: sha512-+4qdrUFq2lk7Va+Qff3ofREQWGBeoTKNqlJO+FGjFP35ZahP+nBenhZiGdu8USSgmq4Ky3IJ/i4u0xbLqHaeow==}
+ engines: {node: '>= 14'}
+ dependencies:
+ '@octokit/core': 4.1.0
+ '@octokit/plugin-paginate-rest': 5.0.1_@octokit+core@4.1.0
+ '@octokit/plugin-request-log': 1.0.4_@octokit+core@4.1.0
+ '@octokit/plugin-rest-endpoint-methods': 6.7.0_@octokit+core@4.1.0
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
+ /@octokit/types/8.0.0:
+ resolution: {integrity: sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg==}
+ dependencies:
+ '@octokit/openapi-types': 14.0.0
+ dev: true
+
+ /@parcel/watcher/2.0.4:
+ resolution: {integrity: sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==}
+ engines: {node: '>= 10.0.0'}
+ requiresBuild: true
+ dependencies:
+ node-addon-api: 3.2.1
+ node-gyp-build: 4.5.0
+ dev: true
+
+ /@phenomnomnominal/tsquery/4.1.1_typescript@4.8.4:
+ resolution: {integrity: sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ==}
+ peerDependencies:
+ typescript: ^3 || ^4
+ dependencies:
+ esquery: 1.4.0
+ typescript: 4.8.4
+ dev: true
+
+ /@pmmmwh/react-refresh-webpack-plugin/0.5.8_prxwy2zxcolvdag5hfkyuqbcze:
+ resolution: {integrity: sha512-wxXRwf+IQ6zvHSJZ+5T2RQNEsq+kx4jKRXfFvdt3nBIUzJUAvXEFsUeoaohDe/Kr84MTjGwcuIUPNcstNJORsA==}
+ 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 <4.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
+ dependencies:
+ ansi-html-community: 0.0.8
+ common-path-prefix: 3.0.0
+ core-js-pure: 3.25.2
+ error-stack-parser: 2.1.4
+ find-up: 5.0.0
+ html-entities: 2.3.3
+ loader-utils: 2.0.3
+ react-refresh: 0.11.0
+ schema-utils: 3.1.1
+ source-map: 0.7.4
+ webpack: 5.74.0
+ webpack-dev-server: 4.11.1_webpack@5.74.0
+ dev: false
+
+ /@radix-ui/number/1.0.0:
+ resolution: {integrity: sha512-Ofwh/1HX69ZfJRiRBMTy7rgjAzHmwe4kW9C9Y99HTRUcYLUuVT0KESFj15rPjRgKJs20GPq8Bm5aEDJ8DuA3vA==}
+ dependencies:
+ '@babel/runtime': 7.19.0
+ dev: false
+
+ /@radix-ui/primitive/1.0.0:
+ resolution: {integrity: sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==}
+ dependencies:
+ '@babel/runtime': 7.19.0
+ dev: false
+
+ /@radix-ui/react-compose-refs/1.0.0_react@18.2.0:
+ resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.19.0
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-context/1.0.0_react@18.2.0:
+ resolution: {integrity: sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.19.0
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-direction/1.0.0_react@18.2.0:
+ resolution: {integrity: sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.19.0
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-presence/1.0.0_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.19.0
+ '@radix-ui/react-compose-refs': 1.0.0_react@18.2.0
+ '@radix-ui/react-use-layout-effect': 1.0.0_react@18.2.0
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ dev: false
+
+ /@radix-ui/react-primitive/1.0.0_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.19.0
+ '@radix-ui/react-slot': 1.0.0_react@18.2.0
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ dev: false
+
+ /@radix-ui/react-scroll-area/1.0.0_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-3SNFukAjS5remgtpAVR9m3Zgo23ZojBZ8V3TCyR3A+56x2mtVqKlPV4+e8rScZUFMuvtbjIdQCmsJBFBazKZig==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.19.0
+ '@radix-ui/number': 1.0.0
+ '@radix-ui/primitive': 1.0.0
+ '@radix-ui/react-compose-refs': 1.0.0_react@18.2.0
+ '@radix-ui/react-context': 1.0.0_react@18.2.0
+ '@radix-ui/react-direction': 1.0.0_react@18.2.0
+ '@radix-ui/react-presence': 1.0.0_biqbaboplfbrettd7655fr4n2y
+ '@radix-ui/react-primitive': 1.0.0_biqbaboplfbrettd7655fr4n2y
+ '@radix-ui/react-use-callback-ref': 1.0.0_react@18.2.0
+ '@radix-ui/react-use-layout-effect': 1.0.0_react@18.2.0
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ dev: false
+
+ /@radix-ui/react-slot/1.0.0_react@18.2.0:
+ resolution: {integrity: sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.19.0
+ '@radix-ui/react-compose-refs': 1.0.0_react@18.2.0
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-callback-ref/1.0.0_react@18.2.0:
+ resolution: {integrity: sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.19.0
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-layout-effect/1.0.0_react@18.2.0:
+ resolution: {integrity: sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.19.0
+ react: 18.2.0
+ dev: false
+
+ /@remix-run/router/1.0.2:
+ resolution: {integrity: sha512-GRSOFhJzjGN+d4sKHTMSvNeUPoZiDHWmRnXfzaxrqe7dE/Nzlc8BiMSJdLDESZlndM7jIUrZ/F4yWqVYlI0rwQ==}
+ engines: {node: '>=14'}
+ dev: false
+
+ /@rollup/plugin-babel/5.3.1_vyv4jbhmcriklval33ak5sngky:
+ resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==}
+ 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
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-module-imports': 7.18.6
+ '@rollup/pluginutils': 3.1.0_rollup@2.79.1
+ rollup: 2.79.1
+ dev: false
+
+ /@rollup/plugin-commonjs/23.0.1_rollup@3.2.3:
+ resolution: {integrity: sha512-hIMCvNrYmW5G0VRmitlkKQPk9R7lTnQ138pzyWOWBmihwRKI1HNrZspwdzDGL98SQAG5T2aDRcuTeD166Kk+sw==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^2.68.0||^3.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ dependencies:
+ '@rollup/pluginutils': 5.0.1_rollup@3.2.3
+ commondir: 1.0.1
+ estree-walker: 2.0.2
+ glob: 8.0.3
+ is-reference: 1.2.1
+ magic-string: 0.26.7
+ rollup: 3.2.3
+ dev: true
+
+ /@rollup/plugin-json/5.0.1_rollup@3.2.3:
+ resolution: {integrity: sha512-QCwhZZLvM8nRcTHyR1vOgyTMiAnjiNj1ebD/BMRvbO1oc/z14lZH6PfxXeegee2B6mky/u9fia4fxRM4TqrUaw==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ dependencies:
+ '@rollup/pluginutils': 5.0.1_rollup@3.2.3
+ rollup: 3.2.3
+ dev: true
+
+ /@rollup/plugin-node-resolve/11.2.1_rollup@2.79.1:
+ resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==}
+ engines: {node: '>= 10.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0
+ dependencies:
+ '@rollup/pluginutils': 3.1.0_rollup@2.79.1
+ '@types/resolve': 1.17.1
+ builtin-modules: 3.3.0
+ deepmerge: 4.2.2
+ is-module: 1.0.0
+ resolve: 1.22.1
+ rollup: 2.79.1
+ dev: false
+
+ /@rollup/plugin-node-resolve/15.0.0_rollup@3.2.3:
+ resolution: {integrity: sha512-iwJbzfTzlzDDQcGmkS7EkCKwe2kSkdBrjX87Fy/KrNjr6UNnLpod0t6X66e502LRe5JJCA4FFqrEscWPnZAkig==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^2.78.0||^3.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ dependencies:
+ '@rollup/pluginutils': 4.2.1
+ '@types/resolve': 1.20.2
+ deepmerge: 4.2.2
+ is-builtin-module: 3.2.0
+ is-module: 1.0.0
+ resolve: 1.22.1
+ rollup: 3.2.3
+ dev: true
+
+ /@rollup/plugin-replace/2.4.2_rollup@2.79.1:
+ resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==}
+ peerDependencies:
+ rollup: ^1.20.0 || ^2.0.0
+ dependencies:
+ '@rollup/pluginutils': 3.1.0_rollup@2.79.1
+ magic-string: 0.25.9
+ rollup: 2.79.1
+ dev: false
+
+ /@rollup/plugin-replace/5.0.0_rollup@3.2.3:
+ resolution: {integrity: sha512-TiPmjMuBjQM+KLWK16O5TAM/eW4yXBYyQ17FbfeNzBC1t2kzX2aXoa8AlS9XTSmg6/2TNvkER1lMEEeN4Lhavw==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ dependencies:
+ '@rollup/pluginutils': 4.2.1
+ magic-string: 0.26.7
+ rollup: 3.2.3
+ dev: true
+
+ /@rollup/plugin-typescript/9.0.1_l76lguts6rhkt2cfcgdaysjzr4:
+ resolution: {integrity: sha512-fj+CTk8+HvFCEwwDQdNgWd0lIJVXtMQ0Z3vH/ZgzFSbK2s1zs5wjZrjzrhViTTN+UF49+P69/tybgKRdGHpj/Q==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^2.14.0||^3.0.0
+ tslib: '*'
+ typescript: '>=3.7.0'
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ tslib:
+ optional: true
+ dependencies:
+ '@rollup/pluginutils': 4.2.1
+ resolve: 1.22.1
+ rollup: 3.2.3
+ tslib: 2.4.0
+ typescript: 4.8.3
+ dev: true
+
+ /@rollup/pluginutils/3.1.0_rollup@2.79.1:
+ resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==}
+ engines: {node: '>= 8.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0
+ dependencies:
+ '@types/estree': 0.0.39
+ estree-walker: 1.0.1
+ picomatch: 2.3.1
+ rollup: 2.79.1
+ dev: false
+
+ /@rollup/pluginutils/4.2.1:
+ resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
+ engines: {node: '>= 8.0.0'}
+ dependencies:
+ estree-walker: 2.0.2
+ picomatch: 2.3.1
+ dev: true
+
+ /@rollup/pluginutils/5.0.1_rollup@3.2.3:
+ resolution: {integrity: sha512-4HaCVEXXuObvcPUaUlLt4faHYHCeQOOWNj8NKFGaRSrw3ZLD0TWeAFZicV9vXjnE2nkNuaVTfTuwAnjR+6uc9A==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ dependencies:
+ '@types/estree': 1.0.0
+ estree-walker: 2.0.2
+ picomatch: 2.3.1
+ rollup: 3.2.3
+ dev: true
+
+ /@rushstack/eslint-patch/1.2.0:
+ resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==}
+ dev: false
+
+ /@sinclair/typebox/0.24.42:
+ resolution: {integrity: sha512-d+2AtrHGyWek2u2ITF0lHRIv6Tt7X0dEHW+0rP+5aDCEjC3fiN2RBjrLD0yU0at52BcZbRGxLbAtXiR0hFCjYw==}
+
+ /@sinonjs/commons/1.8.3:
+ resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==}
+ dependencies:
+ type-detect: 4.0.8
+
+ /@sinonjs/fake-timers/8.1.0:
+ resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==}
+ dependencies:
+ '@sinonjs/commons': 1.8.3
+ dev: false
+
+ /@sinonjs/fake-timers/9.1.2:
+ resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==}
+ dependencies:
+ '@sinonjs/commons': 1.8.3
+ dev: true
+
+ /@storybook/addon-actions/6.5.13_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-3Tji0gIy95havhTpSc6CsFl5lNxGn4O5Y1U9fyji+GRkKqDFOrvVLYAHPtLOpYdEI5tF0bDo+akiqfDouY8+eA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ dependencies:
+ '@storybook/addons': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/api': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/client-logger': 6.5.13
+ '@storybook/components': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/core-events': 6.5.13
+ '@storybook/csf': 0.0.2--canary.4566f4d.1
+ '@storybook/theming': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ core-js: 3.25.5
+ fast-deep-equal: 3.1.3
+ global: 4.4.0
+ lodash: 4.17.21
+ polished: 4.2.2
+ prop-types: 15.8.1
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ react-inspector: 5.1.1_react@18.2.0
+ regenerator-runtime: 0.13.9
+ telejson: 6.0.8
+ ts-dedent: 2.2.0
+ util-deprecate: 1.0.2
+ uuid-browser: 3.1.0
+ dev: false
+
+ /@storybook/addon-backgrounds/6.5.13_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-b4JX7JMY7e50y1l6g71D+2XWV3GO0TO2z1ta8J6W4OQt8f44V7sSkRQaJUzXdLjQMrA+Anojuy1ZwPjVeLC6vg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ dependencies:
+ '@storybook/addons': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/api': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/client-logger': 6.5.13
+ '@storybook/components': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/core-events': 6.5.13
+ '@storybook/csf': 0.0.2--canary.4566f4d.1
+ '@storybook/theming': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ core-js: 3.25.5
+ global: 4.4.0
+ memoizerific: 1.11.3
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ regenerator-runtime: 0.13.9
+ ts-dedent: 2.2.0
+ util-deprecate: 1.0.2
+ dev: false
+
+ /@storybook/addon-controls/6.5.13_j37t4rqwl7h3nhuecgvzwhcgii:
+ resolution: {integrity: sha512-lYq3uf2mlVevm0bi6ueL3H6TpUMRYW9s/pTNTVJT225l27kLdFR9wEKxAkCBrlKaTgDLJmzzDRsJE3NLZlR/5Q==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ dependencies:
+ '@storybook/addons': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/api': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/client-logger': 6.5.13
+ '@storybook/components': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/core-common': 6.5.13_j37t4rqwl7h3nhuecgvzwhcgii
+ '@storybook/csf': 0.0.2--canary.4566f4d.1
+ '@storybook/node-logger': 6.5.13
+ '@storybook/store': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/theming': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ core-js: 3.25.5
+ lodash: 4.17.21
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ ts-dedent: 2.2.0
+ transitivePeerDependencies:
+ - eslint
+ - supports-color
+ - typescript
+ - vue-template-compiler
+ - webpack-cli
+ - webpack-command
+ dev: false
+
+ /@storybook/addon-docs/6.5.13_jbjkrzxoioyjn2npuaofuog6gm:
+ resolution: {integrity: sha512-RG/NjsheD9FixZ789RJlNyNccaR2Cuy7CtAwph4oUNi3aDFjtOI8Oe9L+FOT7qtVnZLw/YMjF+pZxoDqJNKLPw==}
+ peerDependencies:
+ '@storybook/mdx2-csf': ^0.0.3
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@storybook/mdx2-csf':
+ optional: true
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ dependencies:
+ '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.6
+ '@babel/preset-env': 7.19.4_@babel+core@7.19.6
+ '@jest/transform': 26.6.2
+ '@mdx-js/react': 1.6.22_react@18.2.0
+ '@storybook/addons': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/api': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/components': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/core-common': 6.5.13_j37t4rqwl7h3nhuecgvzwhcgii
+ '@storybook/core-events': 6.5.13
+ '@storybook/csf': 0.0.2--canary.4566f4d.1
+ '@storybook/docs-tools': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/mdx1-csf': 0.0.1_@babel+core@7.19.6
+ '@storybook/node-logger': 6.5.13
+ '@storybook/postinstall': 6.5.13
+ '@storybook/preview-web': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/source-loader': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/store': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/theming': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ babel-loader: 8.2.5_6zc4kxld457avlfyhj3lzsljlm
+ core-js: 3.25.5
+ fast-deep-equal: 3.1.3
+ global: 4.4.0
+ lodash: 4.17.21
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ regenerator-runtime: 0.13.9
+ remark-external-links: 8.0.0
+ remark-slug: 6.1.0
+ ts-dedent: 2.2.0
+ util-deprecate: 1.0.2
+ transitivePeerDependencies:
+ - '@babel/core'
+ - eslint
+ - supports-color
+ - typescript
+ - vue-template-compiler
+ - webpack
+ - webpack-cli
+ - webpack-command
+ dev: false
+
+ /@storybook/addon-essentials/6.5.13_jbjkrzxoioyjn2npuaofuog6gm:
+ resolution: {integrity: sha512-G9FVAWV7ixjVLWeLgIX+VT90tcAk6yQxfZQegfg5ucRilGysJCDaNnoab4xuuvm1R40TfFhba3iAGZtQYsddmw==}
+ peerDependencies:
+ '@babel/core': ^7.9.6
+ '@storybook/angular': '*'
+ '@storybook/builder-manager4': '*'
+ '@storybook/builder-manager5': '*'
+ '@storybook/builder-webpack4': '*'
+ '@storybook/builder-webpack5': '*'
+ '@storybook/html': '*'
+ '@storybook/vue': '*'
+ '@storybook/vue3': '*'
+ '@storybook/web-components': '*'
+ lit: '*'
+ lit-html: '*'
+ react: '*'
+ react-dom: '*'
+ svelte: '*'
+ sveltedoc-parser: '*'
+ vue: '*'
+ webpack: '*'
+ peerDependenciesMeta:
+ '@storybook/angular':
+ optional: true
+ '@storybook/builder-manager4':
+ optional: true
+ '@storybook/builder-manager5':
+ optional: true
+ '@storybook/builder-webpack4':
+ optional: true
+ '@storybook/builder-webpack5':
+ optional: true
+ '@storybook/html':
+ optional: true
+ '@storybook/vue':
+ optional: true
+ '@storybook/vue3':
+ optional: true
+ '@storybook/web-components':
+ optional: true
+ lit:
+ optional: true
+ lit-html:
+ optional: true
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ svelte:
+ optional: true
+ sveltedoc-parser:
+ optional: true
+ vue:
+ optional: true
+ webpack:
+ optional: true
+ dependencies:
+ '@babel/core': 7.19.6
+ '@storybook/addon-actions': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/addon-backgrounds': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/addon-controls': 6.5.13_j37t4rqwl7h3nhuecgvzwhcgii
+ '@storybook/addon-docs': 6.5.13_jbjkrzxoioyjn2npuaofuog6gm
+ '@storybook/addon-measure': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/addon-outline': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/addon-toolbars': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/addon-viewport': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/addons': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/api': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/core-common': 6.5.13_j37t4rqwl7h3nhuecgvzwhcgii
+ '@storybook/node-logger': 6.5.13
+ core-js: 3.25.5
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ regenerator-runtime: 0.13.9
+ ts-dedent: 2.2.0
+ webpack: 5.74.0
+ transitivePeerDependencies:
+ - '@storybook/mdx2-csf'
+ - eslint
+ - supports-color
+ - typescript
+ - vue-template-compiler
+ - webpack-cli
+ - webpack-command
+ dev: false
+
+ /@storybook/addon-measure/6.5.13_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-pi5RFB9YTnESRFtYHAVRUrgEI5to0TFc4KndtwcCKt1fMJ8OFjXQeznEfdj95PFeUvW5TNUwjL38vK4LhicB+g==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ dependencies:
+ '@storybook/addons': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/api': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/client-logger': 6.5.13
+ '@storybook/components': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/core-events': 6.5.13
+ '@storybook/csf': 0.0.2--canary.4566f4d.1
+ core-js: 3.25.5
+ global: 4.4.0
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ dev: false
+
+ /@storybook/addon-outline/6.5.13_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-8d8taPheO/tryflzXbj2QRuxHOIS8CtzRzcaglCcioqHEMhOIDOx9BdXKdheq54gdk/UN94HdGJUoVxYyXwZ4Q==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ dependencies:
+ '@storybook/addons': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/api': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/client-logger': 6.5.13
+ '@storybook/components': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/core-events': 6.5.13
+ '@storybook/csf': 0.0.2--canary.4566f4d.1
+ core-js: 3.25.5
+ global: 4.4.0
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ regenerator-runtime: 0.13.9
+ ts-dedent: 2.2.0
+ dev: false
+
+ /@storybook/addon-toolbars/6.5.13_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-Qgr4wKRSP+gY1VaN7PYT4TM1um7KY341X3GHTglXLFHd8nDsCweawfV2shaX3WxCfZmVro8g4G+Oest30kLLCw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ dependencies:
+ '@storybook/addons': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/api': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/client-logger': 6.5.13
+ '@storybook/components': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/theming': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ core-js: 3.25.5
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ regenerator-runtime: 0.13.9
+ dev: false
+
+ /@storybook/addon-viewport/6.5.13_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-KSfeuCSIjncwWGnUu6cZBx8WNqYvm5gHyFvkSPKEu0+MJtgncbUy7pl53lrEEr6QmIq0GRXvS3A0XzV8RCnrSA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ dependencies:
+ '@storybook/addons': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/api': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/client-logger': 6.5.13
+ '@storybook/components': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/core-events': 6.5.13
+ '@storybook/theming': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ core-js: 3.25.5
+ global: 4.4.0
+ memoizerific: 1.11.3
+ prop-types: 15.8.1
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ regenerator-runtime: 0.13.9
+ dev: false
+
+ /@storybook/addons/6.5.13_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-18CqzNnrGMfeZtiKz+R/3rHtSNnfNwz6y6prIQIbWseK16jY8ELTfIFGviwO5V2OqpbHDQi5+xQQ63QAIb89YA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@storybook/api': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/channels': 6.5.13
+ '@storybook/client-logger': 6.5.13
+ '@storybook/core-events': 6.5.13
+ '@storybook/csf': 0.0.2--canary.4566f4d.1
+ '@storybook/router': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/theming': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@types/webpack-env': 1.18.0
+ core-js: 3.25.5
+ global: 4.4.0
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ regenerator-runtime: 0.13.9
+ dev: false
+
+ /@storybook/api/6.5.13_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-xVSmB7/IuFd6G7eiJjbI2MuS7SZunoUM6d+YCWpjiehfMeX47MXt1gZtOwFrgJC1ShZlefXFahq/dvxwtmWs+w==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@storybook/channels': 6.5.13
+ '@storybook/client-logger': 6.5.13
+ '@storybook/core-events': 6.5.13
+ '@storybook/csf': 0.0.2--canary.4566f4d.1
+ '@storybook/router': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/semver': 7.3.2
+ '@storybook/theming': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ core-js: 3.25.5
+ fast-deep-equal: 3.1.3
+ global: 4.4.0
+ lodash: 4.17.21
+ memoizerific: 1.11.3
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ regenerator-runtime: 0.13.9
+ store2: 2.14.2
+ telejson: 6.0.8
+ ts-dedent: 2.2.0
+ util-deprecate: 1.0.2
+ dev: false
+
+ /@storybook/builder-webpack4/6.5.13_j37t4rqwl7h3nhuecgvzwhcgii:
+ resolution: {integrity: sha512-Agqy3IKPv3Nl8QqdS7PjtqLp+c0BD8+/3A2ki/YfKqVz+F+J34EpbZlh3uU053avm1EoNQHSmhZok3ZlWH6O7A==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@babel/core': 7.19.6
+ '@storybook/addons': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/api': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/channel-postmessage': 6.5.13
+ '@storybook/channels': 6.5.13
+ '@storybook/client-api': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/client-logger': 6.5.13
+ '@storybook/components': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/core-common': 6.5.13_j37t4rqwl7h3nhuecgvzwhcgii
+ '@storybook/core-events': 6.5.13
+ '@storybook/node-logger': 6.5.13
+ '@storybook/preview-web': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/router': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/semver': 7.3.2
+ '@storybook/store': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/theming': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/ui': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@types/node': 14.18.29
+ '@types/webpack': 4.41.33
+ autoprefixer: 9.8.8
+ babel-loader: 8.2.5_q4ydpsrmbqywduja5orgah6fgq
+ case-sensitive-paths-webpack-plugin: 2.4.0
+ core-js: 3.25.5
+ css-loader: 3.6.0_webpack@4.46.0
+ file-loader: 6.2.0_webpack@4.46.0
+ find-up: 5.0.0
+ fork-ts-checker-webpack-plugin: 4.1.6_nis5txevc7dvhqsd6hjb72wjza
+ glob: 7.2.3
+ glob-promise: 3.4.0_glob@7.2.3
+ global: 4.4.0
+ html-webpack-plugin: 4.5.2_webpack@4.46.0
+ pnp-webpack-plugin: 1.6.4_typescript@4.8.3
+ postcss: 7.0.39
+ postcss-flexbugs-fixes: 4.2.1
+ postcss-loader: 4.3.0_gzaxsinx64nntyd3vmdqwl7coe
+ raw-loader: 4.0.2_webpack@4.46.0
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ stable: 0.1.8
+ style-loader: 1.3.0_webpack@4.46.0
+ terser-webpack-plugin: 4.2.3_webpack@4.46.0
+ ts-dedent: 2.2.0
+ typescript: 4.8.3
+ url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy
+ util-deprecate: 1.0.2
+ webpack: 4.46.0
+ webpack-dev-middleware: 3.7.3_webpack@4.46.0
+ webpack-filter-warnings-plugin: 1.2.1_webpack@4.46.0
+ webpack-hot-middleware: 2.25.2
+ webpack-virtual-modules: 0.2.2
+ transitivePeerDependencies:
+ - bluebird
+ - eslint
+ - supports-color
+ - vue-template-compiler
+ - webpack-cli
+ - webpack-command
+ dev: false
+
+ /@storybook/channel-postmessage/6.5.13:
+ resolution: {integrity: sha512-R79MBs0mQ7TV8M/a6x/SiTRyvZBidDfMEEthG7Cyo9p35JYiKOhj2535zhW4qlVMESBu95pwKYBibTjASoStPw==}
+ dependencies:
+ '@storybook/channels': 6.5.13
+ '@storybook/client-logger': 6.5.13
+ '@storybook/core-events': 6.5.13
+ core-js: 3.25.5
+ global: 4.4.0
+ qs: 6.10.3
+ telejson: 6.0.8
+ dev: false
+
+ /@storybook/channel-websocket/6.5.13:
+ resolution: {integrity: sha512-kwh667H+tzCiNvs92GNwYOwVXdj9uHZyieRAN5rJtTBJ7XgLzGkpTEU50mWlbc0nDKhgE0qYvzyr5H393Iy5ug==}
+ dependencies:
+ '@storybook/channels': 6.5.13
+ '@storybook/client-logger': 6.5.13
+ core-js: 3.25.5
+ global: 4.4.0
+ telejson: 6.0.8
+ dev: false
+
+ /@storybook/channels/6.5.13:
+ resolution: {integrity: sha512-sGYSilE30bz0jG+HdHnkv0B4XkAv2hP+KRZr4xmnv+MOOQpRnZpJ5Z3HVU16s17cj/83NWihKj6BuKcEVzyilg==}
+ dependencies:
+ core-js: 3.25.5
+ ts-dedent: 2.2.0
+ util-deprecate: 1.0.2
+ dev: false
+
+ /@storybook/client-api/6.5.13_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-uH1mAWbidPiuuTdMUVEiuaNOfrYXm+9QLSP1MMYTKULqEOZI5MSOGkEDqRfVWxbYv/iWBOPTQ+OM9TQ6ecYacg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@storybook/addons': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/channel-postmessage': 6.5.13
+ '@storybook/channels': 6.5.13
+ '@storybook/client-logger': 6.5.13
+ '@storybook/core-events': 6.5.13
+ '@storybook/csf': 0.0.2--canary.4566f4d.1
+ '@storybook/store': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@types/qs': 6.9.7
+ '@types/webpack-env': 1.18.0
+ core-js: 3.25.5
+ fast-deep-equal: 3.1.3
+ global: 4.4.0
+ lodash: 4.17.21
+ memoizerific: 1.11.3
+ qs: 6.10.3
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ regenerator-runtime: 0.13.9
+ store2: 2.14.2
+ synchronous-promise: 2.0.16
+ ts-dedent: 2.2.0
+ util-deprecate: 1.0.2
+ dev: false
+
+ /@storybook/client-logger/6.5.13:
+ resolution: {integrity: sha512-F2SMW3LWFGXLm2ENTwTitrLWJgmMXRf3CWQXdN2EbkNCIBHy5Zcbt+91K4OX8e2e5h9gjGfrdYbyYDYOoUCEfA==}
+ dependencies:
+ core-js: 3.25.5
+ global: 4.4.0
+ dev: false
+
+ /@storybook/components/6.5.13_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-6Hhx70JK5pGfKCkqMU4yq/BBH+vRTmzj7tZKfPwba+f8VmTMoOr/2ysTQFRtXryiHB6Z15xBYgfq5x2pIwQzLQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@storybook/client-logger': 6.5.13
+ '@storybook/csf': 0.0.2--canary.4566f4d.1
+ '@storybook/theming': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ core-js: 3.25.5
+ memoizerific: 1.11.3
+ qs: 6.10.3
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ regenerator-runtime: 0.13.9
+ util-deprecate: 1.0.2
+ dev: false
+
+ /@storybook/core-client/6.5.13_gb7obzxizvrzrpjapgh6fkjruy:
+ resolution: {integrity: sha512-YuELbRokTBdqjbx/R4/7O4rou9kvbBIOJjlUkor9hdLLuJ3P0yGianERGNkZFfvcfMBAxU0p52o7QvDldSR3kA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ typescript: '*'
+ webpack: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@storybook/addons': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/channel-postmessage': 6.5.13
+ '@storybook/channel-websocket': 6.5.13
+ '@storybook/client-api': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/client-logger': 6.5.13
+ '@storybook/core-events': 6.5.13
+ '@storybook/csf': 0.0.2--canary.4566f4d.1
+ '@storybook/preview-web': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/store': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/ui': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ airbnb-js-shims: 2.2.1
+ ansi-to-html: 0.6.15
+ core-js: 3.25.5
+ global: 4.4.0
+ lodash: 4.17.21
+ qs: 6.10.3
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ regenerator-runtime: 0.13.9
+ ts-dedent: 2.2.0
+ typescript: 4.8.3
+ unfetch: 4.2.0
+ util-deprecate: 1.0.2
+ webpack: 4.46.0
+ dev: false
+
+ /@storybook/core-client/6.5.13_pospbsmgsjcopriakyffi74twe:
+ resolution: {integrity: sha512-YuELbRokTBdqjbx/R4/7O4rou9kvbBIOJjlUkor9hdLLuJ3P0yGianERGNkZFfvcfMBAxU0p52o7QvDldSR3kA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ typescript: '*'
+ webpack: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@storybook/addons': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/channel-postmessage': 6.5.13
+ '@storybook/channel-websocket': 6.5.13
+ '@storybook/client-api': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/client-logger': 6.5.13
+ '@storybook/core-events': 6.5.13
+ '@storybook/csf': 0.0.2--canary.4566f4d.1
+ '@storybook/preview-web': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/store': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/ui': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ airbnb-js-shims: 2.2.1
+ ansi-to-html: 0.6.15
+ core-js: 3.25.5
+ global: 4.4.0
+ lodash: 4.17.21
+ qs: 6.10.3
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ regenerator-runtime: 0.13.9
+ ts-dedent: 2.2.0
+ typescript: 4.8.3
+ unfetch: 4.2.0
+ util-deprecate: 1.0.2
+ webpack: 5.74.0
+ dev: false
+
+ /@storybook/core-common/6.5.13_j37t4rqwl7h3nhuecgvzwhcgii:
+ resolution: {integrity: sha512-+DVZrRsteE9pw0X5MNffkdBgejQnbnL+UOG3qXkE9xxUamQALnuqS/w1BzpHE9WmOHuf7RWMKflyQEW3OLKAJg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-proposal-decorators': 7.19.6_@babel+core@7.19.6
+ '@babel/plugin-proposal-export-default-from': 7.18.10_@babel+core@7.19.6
+ '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-proposal-object-rest-spread': 7.19.4_@babel+core@7.19.6
+ '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.6
+ '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.19.6
+ '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-block-scoping': 7.19.4_@babel+core@7.19.6
+ '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.19.6
+ '@babel/plugin-transform-destructuring': 7.19.4_@babel+core@7.19.6
+ '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.19.6
+ '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.19.6
+ '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.19.6
+ '@babel/preset-env': 7.19.4_@babel+core@7.19.6
+ '@babel/preset-react': 7.18.6_@babel+core@7.19.6
+ '@babel/preset-typescript': 7.18.6_@babel+core@7.19.6
+ '@babel/register': 7.18.9_@babel+core@7.19.6
+ '@storybook/node-logger': 6.5.13
+ '@storybook/semver': 7.3.2
+ '@types/node': 14.18.29
+ '@types/pretty-hrtime': 1.0.1
+ babel-loader: 8.2.5_q4ydpsrmbqywduja5orgah6fgq
+ babel-plugin-macros: 3.1.0
+ babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.19.6
+ chalk: 4.1.2
+ core-js: 3.25.5
+ express: 4.18.1
+ file-system-cache: 1.1.0
+ find-up: 5.0.0
+ fork-ts-checker-webpack-plugin: 6.5.2_nis5txevc7dvhqsd6hjb72wjza
+ fs-extra: 9.1.0
+ glob: 7.2.3
+ handlebars: 4.7.7
+ interpret: 2.2.0
+ json5: 2.2.1
+ lazy-universal-dotenv: 3.0.1
+ picomatch: 2.3.1
+ pkg-dir: 5.0.0
+ pretty-hrtime: 1.0.3
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ resolve-from: 5.0.0
+ slash: 3.0.0
+ telejson: 6.0.8
+ ts-dedent: 2.2.0
+ typescript: 4.8.3
+ util-deprecate: 1.0.2
+ webpack: 4.46.0
+ transitivePeerDependencies:
+ - eslint
+ - supports-color
+ - vue-template-compiler
+ - webpack-cli
+ - webpack-command
+ dev: false
+
+ /@storybook/core-events/6.5.13:
+ resolution: {integrity: sha512-kL745tPpRKejzHToA3/CoBNbI+NPRVk186vGxXBmk95OEg0TlwgQExP8BnqEtLlRZMbW08e4+6kilc1M1M4N5w==}
+ dependencies:
+ core-js: 3.25.5
+ dev: false
+
+ /@storybook/core-server/6.5.13_j37t4rqwl7h3nhuecgvzwhcgii:
+ resolution: {integrity: sha512-vs7tu3kAnFwuINio1p87WyqDNlFyZESmeh9s7vvrZVbe/xS/ElqDscr9DT5seW+jbtxufAaHsx+JUTver1dheQ==}
+ peerDependencies:
+ '@storybook/builder-webpack5': '*'
+ '@storybook/manager-webpack5': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ '@storybook/builder-webpack5':
+ optional: true
+ '@storybook/manager-webpack5':
+ optional: true
+ typescript:
+ optional: true
+ dependencies:
+ '@discoveryjs/json-ext': 0.5.7
+ '@storybook/builder-webpack4': 6.5.13_j37t4rqwl7h3nhuecgvzwhcgii
+ '@storybook/core-client': 6.5.13_gb7obzxizvrzrpjapgh6fkjruy
+ '@storybook/core-common': 6.5.13_j37t4rqwl7h3nhuecgvzwhcgii
+ '@storybook/core-events': 6.5.13
+ '@storybook/csf': 0.0.2--canary.4566f4d.1
+ '@storybook/csf-tools': 6.5.13
+ '@storybook/manager-webpack4': 6.5.13_j37t4rqwl7h3nhuecgvzwhcgii
+ '@storybook/node-logger': 6.5.13
+ '@storybook/semver': 7.3.2
+ '@storybook/store': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/telemetry': 6.5.13_j37t4rqwl7h3nhuecgvzwhcgii
+ '@types/node': 14.18.29
+ '@types/node-fetch': 2.6.2
+ '@types/pretty-hrtime': 1.0.1
+ '@types/webpack': 4.41.33
+ better-opn: 2.1.1
+ boxen: 5.1.2
+ chalk: 4.1.2
+ cli-table3: 0.6.3
+ commander: 6.2.1
+ compression: 1.7.4
+ core-js: 3.25.5
+ cpy: 8.1.2
+ detect-port: 1.5.1
+ express: 4.18.1
+ fs-extra: 9.1.0
+ global: 4.4.0
+ globby: 11.1.0
+ ip: 2.0.0
+ lodash: 4.17.21
+ node-fetch: 2.6.7
+ open: 8.4.0
+ pretty-hrtime: 1.0.3
+ prompts: 2.4.2
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ regenerator-runtime: 0.13.9
+ serve-favicon: 2.5.0
+ slash: 3.0.0
+ telejson: 6.0.8
+ ts-dedent: 2.2.0
+ typescript: 4.8.3
+ util-deprecate: 1.0.2
+ watchpack: 2.4.0
+ webpack: 4.46.0
+ ws: 8.9.0
+ x-default-browser: 0.4.0
+ transitivePeerDependencies:
+ - '@storybook/mdx2-csf'
+ - bluebird
+ - bufferutil
+ - encoding
+ - eslint
+ - supports-color
+ - utf-8-validate
+ - vue-template-compiler
+ - webpack-cli
+ - webpack-command
+ dev: false
+
+ /@storybook/core/6.5.13_r4rqzp7wxvvrun7grbme23fugq:
+ resolution: {integrity: sha512-kw1lCgbsxzUimGww6t5rmuWJmFPe9kGGyzIqvj4RC4BBcEsP40LEu9XhSfvnb8vTOLIULFZeZpdRFfJs4TYbUw==}
+ peerDependencies:
+ '@storybook/builder-webpack5': '*'
+ '@storybook/manager-webpack5': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ typescript: '*'
+ webpack: '*'
+ peerDependenciesMeta:
+ '@storybook/builder-webpack5':
+ optional: true
+ '@storybook/manager-webpack5':
+ optional: true
+ typescript:
+ optional: true
+ dependencies:
+ '@storybook/core-client': 6.5.13_pospbsmgsjcopriakyffi74twe
+ '@storybook/core-server': 6.5.13_j37t4rqwl7h3nhuecgvzwhcgii
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ typescript: 4.8.3
+ webpack: 5.74.0
+ transitivePeerDependencies:
+ - '@storybook/mdx2-csf'
+ - bluebird
+ - bufferutil
+ - encoding
+ - eslint
+ - supports-color
+ - utf-8-validate
+ - vue-template-compiler
+ - webpack-cli
+ - webpack-command
+ dev: false
+
+ /@storybook/csf-tools/6.5.13:
+ resolution: {integrity: sha512-63Ev+VmBqzwSwfUzbuXOLKBD5dMTK2zBYLQ9anTVw70FuTikwTsGIbPgb098K0vsxRCgxl7KM7NpivHqtZtdjw==}
+ peerDependencies:
+ '@storybook/mdx2-csf': ^0.0.3
+ peerDependenciesMeta:
+ '@storybook/mdx2-csf':
+ optional: true
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/generator': 7.19.6
+ '@babel/parser': 7.19.6
+ '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.6
+ '@babel/preset-env': 7.19.4_@babel+core@7.19.6
+ '@babel/traverse': 7.19.6
+ '@babel/types': 7.19.4
+ '@storybook/csf': 0.0.2--canary.4566f4d.1
+ '@storybook/mdx1-csf': 0.0.1_@babel+core@7.19.6
+ core-js: 3.25.5
+ fs-extra: 9.1.0
+ global: 4.4.0
+ regenerator-runtime: 0.13.9
+ ts-dedent: 2.2.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@storybook/csf/0.0.2--canary.4566f4d.1:
+ resolution: {integrity: sha512-9OVvMVh3t9znYZwb0Svf/YQoxX2gVOeQTGe2bses2yj+a3+OJnCrUF3/hGv6Em7KujtOdL2LL+JnG49oMVGFgQ==}
+ dependencies:
+ lodash: 4.17.21
+ dev: false
+
+ /@storybook/docs-tools/6.5.13_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-hB+hk+895ny4SW84j3X5iV55DHs3bCfTOp7cDdcZJdQrlm0wuDb4A6d4ffNC7ZLh9VkUjU6ST4VEV5Bb0Cptow==}
+ dependencies:
+ '@babel/core': 7.19.6
+ '@storybook/csf': 0.0.2--canary.4566f4d.1
+ '@storybook/store': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ core-js: 3.25.5
+ doctrine: 3.0.0
+ lodash: 4.17.21
+ regenerator-runtime: 0.13.9
+ transitivePeerDependencies:
+ - react
+ - react-dom
+ - supports-color
+ dev: false
+
+ /@storybook/manager-webpack4/6.5.13_j37t4rqwl7h3nhuecgvzwhcgii:
+ resolution: {integrity: sha512-pURzS5W3XM0F7bCBWzpl7TRsuy+OXFwLXiWLaexuvo0POZe31Ueo2A1R4rx3MT5Iee8O9mYvG2XTmvK9MlLefQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.19.6
+ '@babel/preset-react': 7.18.6_@babel+core@7.19.6
+ '@storybook/addons': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/core-client': 6.5.13_gb7obzxizvrzrpjapgh6fkjruy
+ '@storybook/core-common': 6.5.13_j37t4rqwl7h3nhuecgvzwhcgii
+ '@storybook/node-logger': 6.5.13
+ '@storybook/theming': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/ui': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@types/node': 14.18.29
+ '@types/webpack': 4.41.33
+ babel-loader: 8.2.5_q4ydpsrmbqywduja5orgah6fgq
+ case-sensitive-paths-webpack-plugin: 2.4.0
+ chalk: 4.1.2
+ core-js: 3.25.5
+ css-loader: 3.6.0_webpack@4.46.0
+ express: 4.18.1
+ file-loader: 6.2.0_webpack@4.46.0
+ find-up: 5.0.0
+ fs-extra: 9.1.0
+ html-webpack-plugin: 4.5.2_webpack@4.46.0
+ node-fetch: 2.6.7
+ pnp-webpack-plugin: 1.6.4_typescript@4.8.3
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ read-pkg-up: 7.0.1
+ regenerator-runtime: 0.13.9
+ resolve-from: 5.0.0
+ style-loader: 1.3.0_webpack@4.46.0
+ telejson: 6.0.8
+ terser-webpack-plugin: 4.2.3_webpack@4.46.0
+ ts-dedent: 2.2.0
+ typescript: 4.8.3
+ url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy
+ util-deprecate: 1.0.2
+ webpack: 4.46.0
+ webpack-dev-middleware: 3.7.3_webpack@4.46.0
+ webpack-virtual-modules: 0.2.2
+ transitivePeerDependencies:
+ - bluebird
+ - encoding
+ - eslint
+ - supports-color
+ - vue-template-compiler
+ - webpack-cli
+ - webpack-command
+ dev: false
+
+ /@storybook/mdx1-csf/0.0.1_@babel+core@7.19.6:
+ resolution: {integrity: sha512-4biZIWWzoWlCarMZmTpqcJNgo/RBesYZwGFbQeXiGYsswuvfWARZnW9RE9aUEMZ4XPn7B1N3EKkWcdcWe/K2tg==}
+ dependencies:
+ '@babel/generator': 7.19.6
+ '@babel/parser': 7.19.6
+ '@babel/preset-env': 7.19.4_@babel+core@7.19.6
+ '@babel/types': 7.19.4
+ '@mdx-js/mdx': 1.6.22
+ '@types/lodash': 4.14.186
+ js-string-escape: 1.0.1
+ loader-utils: 2.0.3
+ lodash: 4.17.21
+ prettier: 2.3.0
+ ts-dedent: 2.2.0
+ transitivePeerDependencies:
+ - '@babel/core'
+ - supports-color
+ dev: false
+
+ /@storybook/node-logger/6.5.13:
+ resolution: {integrity: sha512-/r5aVZAqZRoy5FyNk/G4pj7yKJd3lJfPbAaOHVROv2IF7PJP/vtRaDkcfh0g2U6zwuDxGIqSn80j+qoEli9m5A==}
+ dependencies:
+ '@types/npmlog': 4.1.4
+ chalk: 4.1.2
+ core-js: 3.25.5
+ npmlog: 5.0.1
+ pretty-hrtime: 1.0.3
+ dev: false
+
+ /@storybook/postinstall/6.5.13:
+ resolution: {integrity: sha512-qmqP39FGIP5NdhXC5IpAs9cFoYx9fg1psoQKwb9snYb98eVQU31uHc1W2MBUh3lG4AjAm7pQaXJci7ti4jOh3g==}
+ dependencies:
+ core-js: 3.25.5
+ dev: false
+
+ /@storybook/preview-web/6.5.13_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-GNNYVzw4SmRua3dOc52Ye6Us4iQbq5GKQ56U3iwnzZM3TBdJB+Rft94Fn1/pypHujEHS8hl5Xgp9td6C1lLCow==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@storybook/addons': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/channel-postmessage': 6.5.13
+ '@storybook/client-logger': 6.5.13
+ '@storybook/core-events': 6.5.13
+ '@storybook/csf': 0.0.2--canary.4566f4d.1
+ '@storybook/store': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ ansi-to-html: 0.6.15
+ core-js: 3.25.5
+ global: 4.4.0
+ lodash: 4.17.21
+ qs: 6.10.3
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ regenerator-runtime: 0.13.9
+ synchronous-promise: 2.0.16
+ ts-dedent: 2.2.0
+ unfetch: 4.2.0
+ util-deprecate: 1.0.2
+ dev: false
+
+ /@storybook/react-docgen-typescript-plugin/1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0_kb3egcnme7w23lfa5xodfjfhge:
+ resolution: {integrity: sha512-eVg3BxlOm2P+chijHBTByr90IZVUtgRW56qEOLX7xlww2NBuKrcavBlcmn+HH7GIUktquWkMPtvy6e0W0NgA5w==}
+ peerDependencies:
+ typescript: '>= 3.x'
+ webpack: '>= 4'
+ dependencies:
+ debug: 4.3.4
+ endent: 2.1.0
+ find-cache-dir: 3.3.2
+ flat-cache: 3.0.4
+ micromatch: 4.0.5
+ react-docgen-typescript: 2.2.2_typescript@4.8.3
+ tslib: 2.4.0
+ typescript: 4.8.3
+ webpack: 5.74.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@storybook/react/6.5.13_sevfxvufqxngza4zj5dbnig4vq:
+ resolution: {integrity: sha512-4gO8qihEkVZ8RNm9iQd7G2iZz4rRAHizJ6T5m58Sn21fxfyg9zAMzhgd0JzXuPXR8lTTj4AvRyPv1Qx7b43smg==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ peerDependencies:
+ '@babel/core': ^7.11.5
+ '@storybook/builder-webpack4': '*'
+ '@storybook/builder-webpack5': '*'
+ '@storybook/manager-webpack4': '*'
+ '@storybook/manager-webpack5': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ require-from-string: ^2.0.2
+ typescript: '*'
+ peerDependenciesMeta:
+ '@babel/core':
+ optional: true
+ '@storybook/builder-webpack4':
+ optional: true
+ '@storybook/builder-webpack5':
+ optional: true
+ '@storybook/manager-webpack4':
+ optional: true
+ '@storybook/manager-webpack5':
+ optional: true
+ typescript:
+ optional: true
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/preset-flow': 7.18.6_@babel+core@7.19.6
+ '@babel/preset-react': 7.18.6_@babel+core@7.19.6
+ '@pmmmwh/react-refresh-webpack-plugin': 0.5.8_prxwy2zxcolvdag5hfkyuqbcze
+ '@storybook/addons': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/client-logger': 6.5.13
+ '@storybook/core': 6.5.13_r4rqzp7wxvvrun7grbme23fugq
+ '@storybook/core-common': 6.5.13_j37t4rqwl7h3nhuecgvzwhcgii
+ '@storybook/csf': 0.0.2--canary.4566f4d.1
+ '@storybook/docs-tools': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/node-logger': 6.5.13
+ '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0_kb3egcnme7w23lfa5xodfjfhge
+ '@storybook/semver': 7.3.2
+ '@storybook/store': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@types/estree': 0.0.51
+ '@types/node': 14.18.29
+ '@types/webpack-env': 1.18.0
+ acorn: 7.4.1
+ acorn-jsx: 5.3.2_acorn@7.4.1
+ acorn-walk: 7.2.0
+ babel-plugin-add-react-displayname: 0.0.5
+ babel-plugin-react-docgen: 4.2.1
+ core-js: 3.25.5
+ escodegen: 2.0.0
+ fs-extra: 9.1.0
+ global: 4.4.0
+ html-tags: 3.2.0
+ lodash: 4.17.21
+ prop-types: 15.8.1
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ react-element-to-jsx-string: 14.3.4_biqbaboplfbrettd7655fr4n2y
+ react-refresh: 0.11.0
+ read-pkg-up: 7.0.1
+ regenerator-runtime: 0.13.9
+ require-from-string: 2.0.2
+ ts-dedent: 2.2.0
+ typescript: 4.8.3
+ util-deprecate: 1.0.2
+ webpack: 5.74.0
+ transitivePeerDependencies:
+ - '@storybook/mdx2-csf'
+ - '@swc/core'
+ - '@types/webpack'
+ - bluebird
+ - bufferutil
+ - encoding
+ - esbuild
+ - eslint
+ - sockjs-client
+ - supports-color
+ - type-fest
+ - uglify-js
+ - utf-8-validate
+ - vue-template-compiler
+ - webpack-cli
+ - webpack-command
+ - webpack-dev-server
+ - webpack-hot-middleware
+ - webpack-plugin-serve
+ dev: false
+
+ /@storybook/router/6.5.13_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-sf5aogfirH5ucD0d0hc2mKf2iyWsZsvXhr5kjxUQmgkcoflkGUWhc34sbSQVRQ1i8K5lkLIDH/q2s1Zr2SbzhQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@storybook/client-logger': 6.5.13
+ core-js: 3.25.5
+ memoizerific: 1.11.3
+ qs: 6.10.3
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ regenerator-runtime: 0.13.9
+ dev: false
+
+ /@storybook/semver/7.3.2:
+ resolution: {integrity: sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ core-js: 3.25.5
+ find-up: 4.1.0
+ dev: false
+
+ /@storybook/source-loader/6.5.13_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-tHuM8PfeB/0m+JigbaFp+Ld0euFH+fgOObH2W9rjEXy5vnwmaeex/JAdCprv4oL+LcDQEERqNULUUNIvbcTPAg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@storybook/addons': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/client-logger': 6.5.13
+ '@storybook/csf': 0.0.2--canary.4566f4d.1
+ core-js: 3.25.5
+ estraverse: 5.3.0
+ global: 4.4.0
+ loader-utils: 2.0.3
+ lodash: 4.17.21
+ prettier: 2.3.0
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ regenerator-runtime: 0.13.9
+ dev: false
+
+ /@storybook/store/6.5.13_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-GG6lm+8fBX1tNUnX7x3raBOjYhhf14bPWLtYiPlxDTFEMs3sJte7zWKZq6NQ79MoBLL6jjzTeolBfDCBw6fiWQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@storybook/addons': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/client-logger': 6.5.13
+ '@storybook/core-events': 6.5.13
+ '@storybook/csf': 0.0.2--canary.4566f4d.1
+ core-js: 3.25.5
+ fast-deep-equal: 3.1.3
+ global: 4.4.0
+ lodash: 4.17.21
+ memoizerific: 1.11.3
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ regenerator-runtime: 0.13.9
+ slash: 3.0.0
+ stable: 0.1.8
+ synchronous-promise: 2.0.16
+ ts-dedent: 2.2.0
+ util-deprecate: 1.0.2
+ dev: false
+
+ /@storybook/telemetry/6.5.13_j37t4rqwl7h3nhuecgvzwhcgii:
+ resolution: {integrity: sha512-PFJEfGbunmfFWabD3rdCF8EHH+45578OHOkMPpXJjqXl94vPQxUH2XTVKQgEQJbYrgX0Vx9Z4tSkdMHuzYDbWQ==}
+ dependencies:
+ '@storybook/client-logger': 6.5.13
+ '@storybook/core-common': 6.5.13_j37t4rqwl7h3nhuecgvzwhcgii
+ chalk: 4.1.2
+ core-js: 3.25.5
+ detect-package-manager: 2.0.1
+ fetch-retry: 5.0.3
+ fs-extra: 9.1.0
+ global: 4.4.0
+ isomorphic-unfetch: 3.1.0
+ nanoid: 3.3.4
+ read-pkg-up: 7.0.1
+ regenerator-runtime: 0.13.9
+ transitivePeerDependencies:
+ - encoding
+ - eslint
+ - react
+ - react-dom
+ - supports-color
+ - typescript
+ - vue-template-compiler
+ - webpack-cli
+ - webpack-command
+ dev: false
+
+ /@storybook/theming/6.5.13_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-oif5NGFAUQhizo50r+ctw2hZNLWV4dPHai+L/gFvbaSeRBeHSNkIcMoZ2FlrO566HdGZTDutYXcR+xus8rI28g==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@storybook/client-logger': 6.5.13
+ core-js: 3.25.5
+ memoizerific: 1.11.3
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ regenerator-runtime: 0.13.9
+ dev: false
+
+ /@storybook/ui/6.5.13_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-MklJuSg4Bc+MWjwhZVmZhJaucaeEBUMMa2V9oRWbIgZOdRHqdW72S2vCbaarDAYfBQdnfaoq1GkSQiw+EnWOzA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@storybook/addons': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/api': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/channels': 6.5.13
+ '@storybook/client-logger': 6.5.13
+ '@storybook/components': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/core-events': 6.5.13
+ '@storybook/router': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ '@storybook/semver': 7.3.2
+ '@storybook/theming': 6.5.13_biqbaboplfbrettd7655fr4n2y
+ core-js: 3.25.5
+ memoizerific: 1.11.3
+ qs: 6.10.3
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ regenerator-runtime: 0.13.9
+ resolve-from: 5.0.0
+ dev: false
+
+ /@surma/rollup-plugin-off-main-thread/2.2.3:
+ resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==}
+ dependencies:
+ ejs: 3.1.8
+ json5: 2.2.1
+ magic-string: 0.25.9
+ string.prototype.matchall: 4.0.7
+ dev: false
+
+ /@svgr/babel-plugin-add-jsx-attribute/5.4.0:
+ resolution: {integrity: sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /@svgr/babel-plugin-remove-jsx-attribute/5.4.0:
+ resolution: {integrity: sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /@svgr/babel-plugin-remove-jsx-empty-expression/5.0.1:
+ resolution: {integrity: sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /@svgr/babel-plugin-replace-jsx-attribute-value/5.0.1:
+ resolution: {integrity: sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /@svgr/babel-plugin-svg-dynamic-title/5.4.0:
+ resolution: {integrity: sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /@svgr/babel-plugin-svg-em-dimensions/5.4.0:
+ resolution: {integrity: sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /@svgr/babel-plugin-transform-react-native-svg/5.4.0:
+ resolution: {integrity: sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /@svgr/babel-plugin-transform-svg-component/5.5.0:
+ resolution: {integrity: sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /@svgr/babel-preset/5.5.0:
+ resolution: {integrity: sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==}
+ engines: {node: '>=10'}
+ 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
+ dev: false
+
+ /@svgr/core/5.5.0:
+ resolution: {integrity: sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@svgr/plugin-jsx': 5.5.0
+ camelcase: 6.3.0
+ cosmiconfig: 7.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@svgr/hast-util-to-babel-ast/5.5.0:
+ resolution: {integrity: sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@babel/types': 7.19.4
+ dev: false
+
+ /@svgr/plugin-jsx/5.5.0:
+ resolution: {integrity: sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@babel/core': 7.19.6
+ '@svgr/babel-preset': 5.5.0
+ '@svgr/hast-util-to-babel-ast': 5.5.0
+ svg-parser: 2.0.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@svgr/plugin-svgo/5.5.0:
+ resolution: {integrity: sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ cosmiconfig: 7.0.1
+ deepmerge: 4.2.2
+ svgo: 1.3.2
+ dev: false
+
+ /@svgr/webpack/5.5.0:
+ resolution: {integrity: sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/plugin-transform-react-constant-elements': 7.18.12_@babel+core@7.19.6
+ '@babel/preset-env': 7.19.4_@babel+core@7.19.6
+ '@babel/preset-react': 7.18.6_@babel+core@7.19.6
+ '@svgr/core': 5.5.0
+ '@svgr/plugin-jsx': 5.5.0
+ '@svgr/plugin-svgo': 5.5.0
+ loader-utils: 2.0.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@tanstack/query-core/4.14.5:
+ resolution: {integrity: sha512-Su1AyrPb6xnm7wXTvpN5tt+B7LViYSh9k04vvuc6+eMVH0HkE9ktZTXibRrTvV83BI1KP5MG7v/k90ne/4zQzw==}
+ dev: false
+
+ /@tanstack/react-query/4.14.5_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-CuWl/SxSB0zHhHaTja8LNhy9Vdk+vk9IkW3Oiq3lo4gPnTguHmbUzfjEA1x3RfvPeHfPMuq/pYMSbV+CX4aDQA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-native: '*'
+ peerDependenciesMeta:
+ react-dom:
+ optional: true
+ react-native:
+ optional: true
+ dependencies:
+ '@tanstack/query-core': 4.14.5
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ use-sync-external-store: 1.2.0_react@18.2.0
+ dev: false
+
+ /@tootallnate/once/1.1.2:
+ resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==}
+ engines: {node: '>= 6'}
+ dev: false
+
+ /@tootallnate/once/2.0.0:
+ resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
+ engines: {node: '>= 10'}
+ dev: true
+
+ /@trysound/sax/0.2.0:
+ resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
+ engines: {node: '>=10.13.0'}
+ dev: false
+
+ /@tsconfig/node10/1.0.9:
+ resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==}
+
+ /@tsconfig/node12/1.0.11:
+ resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==}
+
+ /@tsconfig/node14/1.0.3:
+ resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==}
+
+ /@tsconfig/node16/1.0.3:
+ resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==}
+
+ /@types/babel__core/7.1.19:
+ resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==}
+ dependencies:
+ '@babel/parser': 7.19.6
+ '@babel/types': 7.19.4
+ '@types/babel__generator': 7.6.4
+ '@types/babel__template': 7.4.1
+ '@types/babel__traverse': 7.18.1
+
+ /@types/babel__generator/7.6.4:
+ resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==}
+ dependencies:
+ '@babel/types': 7.19.4
+
+ /@types/babel__template/7.4.1:
+ resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==}
+ dependencies:
+ '@babel/parser': 7.19.6
+ '@babel/types': 7.19.4
+
+ /@types/babel__traverse/7.18.1:
+ resolution: {integrity: sha512-FSdLaZh2UxaMuLp9lixWaHq/golWTRWOnRsAXzDTDSDOQLuZb1nsdCt6pJSPWSEQt2eFZ2YVk3oYhn+1kLMeMA==}
+ dependencies:
+ '@babel/types': 7.19.4
+
+ /@types/body-parser/1.19.2:
+ resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==}
+ dependencies:
+ '@types/connect': 3.4.35
+ '@types/node': 18.7.18
+
+ /@types/bonjour/3.5.10:
+ resolution: {integrity: sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==}
+ dependencies:
+ '@types/node': 18.7.18
+ dev: false
+
+ /@types/chai/4.3.4:
+ resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==}
+ dev: true
+
+ /@types/connect-history-api-fallback/1.3.5:
+ resolution: {integrity: sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==}
+ dependencies:
+ '@types/express-serve-static-core': 4.17.31
+ '@types/node': 18.7.18
+ dev: false
+
+ /@types/connect/3.4.35:
+ resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==}
+ dependencies:
+ '@types/node': 18.7.18
+
+ /@types/eslint-scope/3.7.4:
+ resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==}
+ dependencies:
+ '@types/eslint': 8.4.6
+ '@types/estree': 1.0.0
+
+ /@types/eslint/8.4.6:
+ resolution: {integrity: sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==}
+ dependencies:
+ '@types/estree': 1.0.0
+ '@types/json-schema': 7.0.11
+
+ /@types/estree/0.0.39:
+ resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==}
+ dev: false
+
+ /@types/estree/0.0.51:
+ resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==}
+
+ /@types/estree/1.0.0:
+ resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==}
+
+ /@types/express-serve-static-core/4.17.31:
+ resolution: {integrity: sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==}
+ dependencies:
+ '@types/node': 18.7.18
+ '@types/qs': 6.9.7
+ '@types/range-parser': 1.2.4
+
+ /@types/express/4.17.14:
+ resolution: {integrity: sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==}
+ dependencies:
+ '@types/body-parser': 1.19.2
+ '@types/express-serve-static-core': 4.17.31
+ '@types/qs': 6.9.7
+ '@types/serve-static': 1.15.0
+
+ /@types/file-saver/2.0.5:
+ resolution: {integrity: sha512-zv9kNf3keYegP5oThGLaPk8E081DFDuwfqjtiTzm6PoxChdJ1raSuADf2YGCVIyrSynLrgc8JWv296s7Q7pQSQ==}
+ dev: true
+
+ /@types/glob/7.2.0:
+ resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
+ dependencies:
+ '@types/minimatch': 5.1.2
+ '@types/node': 18.7.18
+ dev: false
+
+ /@types/glob/8.0.0:
+ resolution: {integrity: sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==}
+ dependencies:
+ '@types/minimatch': 5.1.2
+ '@types/node': 18.7.18
+ dev: false
+
+ /@types/graceful-fs/4.1.5:
+ resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==}
+ dependencies:
+ '@types/node': 18.7.18
+
+ /@types/hast/2.3.4:
+ resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==}
+ dependencies:
+ '@types/unist': 2.0.6
+ dev: false
+
+ /@types/hoist-non-react-statics/3.3.1:
+ resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==}
+ dependencies:
+ '@types/react': 18.0.21
+ hoist-non-react-statics: 3.3.2
+ dev: true
+
+ /@types/html-minifier-terser/5.1.2:
+ resolution: {integrity: sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==}
+ dev: false
+
+ /@types/html-minifier-terser/6.1.0:
+ resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==}
+ dev: false
+
+ /@types/http-proxy/1.17.9:
+ resolution: {integrity: sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==}
+ dependencies:
+ '@types/node': 18.7.18
+ dev: false
+
+ /@types/is-function/1.0.1:
+ resolution: {integrity: sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q==}
+ dev: false
+
+ /@types/istanbul-lib-coverage/2.0.4:
+ resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==}
+
+ /@types/istanbul-lib-report/3.0.0:
+ resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==}
+ dependencies:
+ '@types/istanbul-lib-coverage': 2.0.4
+
+ /@types/istanbul-reports/3.0.1:
+ resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==}
+ dependencies:
+ '@types/istanbul-lib-report': 3.0.0
+
+ /@types/json-schema/7.0.11:
+ resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
+
+ /@types/json5/0.0.29:
+ resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
+
+ /@types/lodash.camelcase/4.3.7:
+ resolution: {integrity: sha512-Nfi6jpo9vuEOSIJP+mpbTezKyEt75DQlbwjiDvs/JctWkbnHDoyQo5lWqdvgNiJmVUjcmkfvlrvSEgJYvurOKg==}
+ dependencies:
+ '@types/lodash': 4.14.186
+ dev: true
+
+ /@types/lodash/4.14.186:
+ resolution: {integrity: sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==}
+
+ /@types/mdast/3.0.10:
+ resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==}
+ dependencies:
+ '@types/unist': 2.0.6
+ dev: false
+
+ /@types/mime/3.0.1:
+ resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==}
+
+ /@types/minimatch/3.0.5:
+ resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==}
+ dev: true
+
+ /@types/minimatch/5.1.2:
+ resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
+ dev: false
+
+ /@types/minimist/1.2.2:
+ resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==}
+ dev: true
+
+ /@types/mocha/10.0.0:
+ resolution: {integrity: sha512-rADY+HtTOA52l9VZWtgQfn4p+UDVM2eDVkMZT1I6syp0YKxW2F9v+0pbRZLsvskhQv/vMb6ZfCay81GHbz5SHg==}
+ dev: true
+
+ /@types/multer/1.4.7:
+ resolution: {integrity: sha512-/SNsDidUFCvqqcWDwxv2feww/yqhNeTRL5CVoL3jU4Goc4kKEL10T7Eye65ZqPNi4HRx8sAEX59pV1aEH7drNA==}
+ dependencies:
+ '@types/express': 4.17.14
+ dev: true
+
+ /@types/node-fetch/2.6.2:
+ resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==}
+ dependencies:
+ '@types/node': 18.7.18
+ form-data: 3.0.1
+ dev: false
+
+ /@types/node/14.18.29:
+ resolution: {integrity: sha512-LhF+9fbIX4iPzhsRLpK5H7iPdvW8L4IwGciXQIOEcuF62+9nw/VQVsOViAOOGxY3OlOKGLFv0sWwJXdwQeTn6A==}
+
+ /@types/node/18.11.9:
+ resolution: {integrity: sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==}
+
+ /@types/node/18.7.18:
+ resolution: {integrity: sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg==}
+
+ /@types/normalize-package-data/2.4.1:
+ resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
+
+ /@types/npmlog/4.1.4:
+ resolution: {integrity: sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==}
+ dev: false
+
+ /@types/parse-json/4.0.0:
+ resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==}
+
+ /@types/parse5/5.0.3:
+ resolution: {integrity: sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==}
+ dev: false
+
+ /@types/prettier/2.7.0:
+ resolution: {integrity: sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==}
+
+ /@types/pretty-hrtime/1.0.1:
+ resolution: {integrity: sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ==}
+ dev: false
+
+ /@types/prop-types/15.7.5:
+ resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
+
+ /@types/q/1.5.5:
+ resolution: {integrity: sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==}
+ dev: false
+
+ /@types/qs/6.9.7:
+ resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==}
+
+ /@types/range-parser/1.2.4:
+ resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==}
+
+ /@types/react-dom/18.0.6:
+ resolution: {integrity: sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==}
+ dependencies:
+ '@types/react': 18.0.21
+ dev: true
+
+ /@types/react/18.0.21:
+ resolution: {integrity: sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA==}
+ dependencies:
+ '@types/prop-types': 15.7.5
+ '@types/scheduler': 0.16.2
+ csstype: 3.1.1
+
+ /@types/resolve/1.17.1:
+ resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==}
+ dependencies:
+ '@types/node': 18.7.18
+ dev: false
+
+ /@types/resolve/1.20.2:
+ resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
+ dev: true
+
+ /@types/retry/0.12.0:
+ resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==}
+ dev: false
+
+ /@types/scheduler/0.16.2:
+ resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==}
+
+ /@types/semver/7.3.12:
+ resolution: {integrity: sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==}
+ dev: false
+
+ /@types/serve-index/1.9.1:
+ resolution: {integrity: sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==}
+ dependencies:
+ '@types/express': 4.17.14
+ dev: false
+
+ /@types/serve-static/1.15.0:
+ resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==}
+ dependencies:
+ '@types/mime': 3.0.1
+ '@types/node': 18.7.18
+
+ /@types/sockjs/0.3.33:
+ resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==}
+ dependencies:
+ '@types/node': 18.7.18
+ dev: false
+
+ /@types/source-list-map/0.1.2:
+ resolution: {integrity: sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==}
+ dev: false
+
+ /@types/stack-utils/2.0.1:
+ resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==}
+
+ /@types/styled-components/5.1.26:
+ resolution: {integrity: sha512-KuKJ9Z6xb93uJiIyxo/+ksS7yLjS1KzG6iv5i78dhVg/X3u5t1H7juRWqVmodIdz6wGVaIApo1u01kmFRdJHVw==}
+ dependencies:
+ '@types/hoist-non-react-statics': 3.3.1
+ '@types/react': 18.0.21
+ csstype: 3.1.1
+ dev: true
+
+ /@types/tapable/1.0.8:
+ resolution: {integrity: sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==}
+ dev: false
+
+ /@types/trusted-types/2.0.2:
+ resolution: {integrity: sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==}
+ dev: false
+
+ /@types/uglify-js/3.17.1:
+ resolution: {integrity: sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g==}
+ dependencies:
+ source-map: 0.6.1
+ dev: false
+
+ /@types/unist/2.0.6:
+ resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==}
+ dev: false
+
+ /@types/webidl-conversions/7.0.0:
+ resolution: {integrity: sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==}
+ dev: false
+
+ /@types/webpack-env/1.18.0:
+ resolution: {integrity: sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg==}
+ dev: false
+
+ /@types/webpack-sources/3.2.0:
+ resolution: {integrity: sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==}
+ dependencies:
+ '@types/node': 18.7.18
+ '@types/source-list-map': 0.1.2
+ source-map: 0.7.4
+ dev: false
+
+ /@types/webpack/4.41.33:
+ resolution: {integrity: sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g==}
+ dependencies:
+ '@types/node': 18.7.18
+ '@types/tapable': 1.0.8
+ '@types/uglify-js': 3.17.1
+ '@types/webpack-sources': 3.2.0
+ anymatch: 3.1.2
+ source-map: 0.6.1
+ dev: false
+
+ /@types/whatwg-url/8.2.2:
+ resolution: {integrity: sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==}
+ dependencies:
+ '@types/node': 18.7.18
+ '@types/webidl-conversions': 7.0.0
+ dev: false
+
+ /@types/ws/8.5.3:
+ resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==}
+ dependencies:
+ '@types/node': 18.7.18
+ dev: false
+
+ /@types/yargs-parser/21.0.0:
+ resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==}
+
+ /@types/yargs/15.0.14:
+ resolution: {integrity: sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==}
+ dependencies:
+ '@types/yargs-parser': 21.0.0
+ dev: false
+
+ /@types/yargs/16.0.4:
+ resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==}
+ dependencies:
+ '@types/yargs-parser': 21.0.0
+ dev: false
+
+ /@types/yargs/17.0.12:
+ resolution: {integrity: sha512-Nz4MPhecOFArtm81gFQvQqdV7XYCrWKx5uUt6GNHredFHn1i2mtWqXTON7EPXMtNi1qjtjEM/VCHDhcHsAMLXQ==}
+ dependencies:
+ '@types/yargs-parser': 21.0.0
+
+ /@typescript-eslint/eslint-plugin/5.38.0_cyfvnejbgixxanpg7blnp3e3zi:
+ resolution: {integrity: sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^5.0.0
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 5.38.0_abkyjrvwkq25uefwggm6hc3u2a
+ '@typescript-eslint/scope-manager': 5.38.0
+ '@typescript-eslint/type-utils': 5.38.0_abkyjrvwkq25uefwggm6hc3u2a
+ '@typescript-eslint/utils': 5.38.0_abkyjrvwkq25uefwggm6hc3u2a
+ debug: 4.3.4
+ eslint: 8.23.1
+ ignore: 5.2.0
+ regexpp: 3.2.0
+ semver: 7.3.7
+ tsutils: 3.21.0_typescript@4.8.4
+ typescript: 4.8.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/eslint-plugin/5.38.0_wsb62dxj2oqwgas4kadjymcmry:
+ resolution: {integrity: sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^5.0.0
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 5.38.0_irgkl5vooow2ydyo6aokmferha
+ '@typescript-eslint/scope-manager': 5.38.0
+ '@typescript-eslint/type-utils': 5.38.0_irgkl5vooow2ydyo6aokmferha
+ '@typescript-eslint/utils': 5.38.0_irgkl5vooow2ydyo6aokmferha
+ debug: 4.3.4
+ eslint: 8.23.1
+ ignore: 5.2.0
+ regexpp: 3.2.0
+ semver: 7.3.7
+ tsutils: 3.21.0_typescript@4.8.3
+ typescript: 4.8.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@typescript-eslint/experimental-utils/5.40.1_irgkl5vooow2ydyo6aokmferha:
+ resolution: {integrity: sha512-lynjgnQuoCgxtYgYWjoQqijk0kYQNiztnVhoqha3N0kMYFVPURidzCq2vn9XvUUu2XxP130ZRKVDKyeGa2bhbw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ '@typescript-eslint/utils': 5.40.1_irgkl5vooow2ydyo6aokmferha
+ eslint: 8.23.1
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: false
+
+ /@typescript-eslint/parser/5.38.0_abkyjrvwkq25uefwggm6hc3u2a:
+ resolution: {integrity: sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/scope-manager': 5.38.0
+ '@typescript-eslint/types': 5.38.0
+ '@typescript-eslint/typescript-estree': 5.38.0_typescript@4.8.4
+ debug: 4.3.4
+ eslint: 8.23.1
+ typescript: 4.8.4
+ transitivePeerDependencies:
+ - supports-color
+
+ /@typescript-eslint/parser/5.38.0_irgkl5vooow2ydyo6aokmferha:
+ resolution: {integrity: sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/scope-manager': 5.38.0
+ '@typescript-eslint/types': 5.38.0
+ '@typescript-eslint/typescript-estree': 5.38.0_typescript@4.8.3
+ debug: 4.3.4
+ eslint: 8.23.1
+ typescript: 4.8.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@typescript-eslint/scope-manager/5.38.0:
+ resolution: {integrity: sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ '@typescript-eslint/types': 5.38.0
+ '@typescript-eslint/visitor-keys': 5.38.0
+
+ /@typescript-eslint/scope-manager/5.40.1:
+ resolution: {integrity: sha512-jkn4xsJiUQucI16OLCXrLRXDZ3afKhOIqXs4R3O+M00hdQLKR58WuyXPZZjhKLFCEP2g+TXdBRtLQ33UfAdRUg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ '@typescript-eslint/types': 5.40.1
+ '@typescript-eslint/visitor-keys': 5.40.1
+ dev: false
+
+ /@typescript-eslint/type-utils/5.38.0_abkyjrvwkq25uefwggm6hc3u2a:
+ resolution: {integrity: sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '*'
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/typescript-estree': 5.38.0_typescript@4.8.4
+ '@typescript-eslint/utils': 5.38.0_abkyjrvwkq25uefwggm6hc3u2a
+ debug: 4.3.4
+ eslint: 8.23.1
+ tsutils: 3.21.0_typescript@4.8.4
+ typescript: 4.8.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/type-utils/5.38.0_irgkl5vooow2ydyo6aokmferha:
+ resolution: {integrity: sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '*'
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/typescript-estree': 5.38.0_typescript@4.8.3
+ '@typescript-eslint/utils': 5.38.0_irgkl5vooow2ydyo6aokmferha
+ debug: 4.3.4
+ eslint: 8.23.1
+ tsutils: 3.21.0_typescript@4.8.3
+ typescript: 4.8.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@typescript-eslint/types/5.38.0:
+ resolution: {integrity: sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ /@typescript-eslint/types/5.40.1:
+ resolution: {integrity: sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dev: false
+
+ /@typescript-eslint/typescript-estree/5.38.0_typescript@4.8.3:
+ resolution: {integrity: sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/types': 5.38.0
+ '@typescript-eslint/visitor-keys': 5.38.0
+ debug: 4.3.4
+ globby: 11.1.0
+ is-glob: 4.0.3
+ semver: 7.3.7
+ tsutils: 3.21.0_typescript@4.8.3
+ typescript: 4.8.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@typescript-eslint/typescript-estree/5.38.0_typescript@4.8.4:
+ resolution: {integrity: sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/types': 5.38.0
+ '@typescript-eslint/visitor-keys': 5.38.0
+ debug: 4.3.4
+ globby: 11.1.0
+ is-glob: 4.0.3
+ semver: 7.3.7
+ tsutils: 3.21.0_typescript@4.8.4
+ typescript: 4.8.4
+ transitivePeerDependencies:
+ - supports-color
+
+ /@typescript-eslint/typescript-estree/5.40.1_typescript@4.8.3:
+ resolution: {integrity: sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/types': 5.40.1
+ '@typescript-eslint/visitor-keys': 5.40.1
+ debug: 4.3.4
+ globby: 11.1.0
+ is-glob: 4.0.3
+ semver: 7.3.7
+ tsutils: 3.21.0_typescript@4.8.3
+ typescript: 4.8.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@typescript-eslint/utils/5.38.0_abkyjrvwkq25uefwggm6hc3u2a:
+ resolution: {integrity: sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ '@types/json-schema': 7.0.11
+ '@typescript-eslint/scope-manager': 5.38.0
+ '@typescript-eslint/types': 5.38.0
+ '@typescript-eslint/typescript-estree': 5.38.0_typescript@4.8.4
+ eslint: 8.23.1
+ eslint-scope: 5.1.1
+ eslint-utils: 3.0.0_eslint@8.23.1
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: true
+
+ /@typescript-eslint/utils/5.38.0_irgkl5vooow2ydyo6aokmferha:
+ resolution: {integrity: sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ '@types/json-schema': 7.0.11
+ '@typescript-eslint/scope-manager': 5.38.0
+ '@typescript-eslint/types': 5.38.0
+ '@typescript-eslint/typescript-estree': 5.38.0_typescript@4.8.3
+ eslint: 8.23.1
+ eslint-scope: 5.1.1
+ eslint-utils: 3.0.0_eslint@8.23.1
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: false
+
+ /@typescript-eslint/utils/5.40.1_irgkl5vooow2ydyo6aokmferha:
+ resolution: {integrity: sha512-a2TAVScoX9fjryNrW6BZRnreDUszxqm9eQ9Esv8n5nXApMW0zeANUYlwh/DED04SC/ifuBvXgZpIK5xeJHQ3aw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ '@types/json-schema': 7.0.11
+ '@types/semver': 7.3.12
+ '@typescript-eslint/scope-manager': 5.40.1
+ '@typescript-eslint/types': 5.40.1
+ '@typescript-eslint/typescript-estree': 5.40.1_typescript@4.8.3
+ eslint: 8.23.1
+ eslint-scope: 5.1.1
+ eslint-utils: 3.0.0_eslint@8.23.1
+ semver: 7.3.7
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: false
+
+ /@typescript-eslint/visitor-keys/5.38.0:
+ resolution: {integrity: sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ '@typescript-eslint/types': 5.38.0
+ eslint-visitor-keys: 3.3.0
+
+ /@typescript-eslint/visitor-keys/5.40.1:
+ resolution: {integrity: sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ '@typescript-eslint/types': 5.40.1
+ eslint-visitor-keys: 3.3.0
+ dev: false
+
+ /@vitejs/plugin-react/2.2.0_vite@3.2.3:
+ resolution: {integrity: sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ vite: ^3.0.0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.6
+ '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.19.6
+ magic-string: 0.26.7
+ react-refresh: 0.14.0
+ vite: 3.2.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@webassemblyjs/ast/1.11.1:
+ resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==}
+ dependencies:
+ '@webassemblyjs/helper-numbers': 1.11.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.11.1
+
+ /@webassemblyjs/ast/1.9.0:
+ resolution: {integrity: sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==}
+ dependencies:
+ '@webassemblyjs/helper-module-context': 1.9.0
+ '@webassemblyjs/helper-wasm-bytecode': 1.9.0
+ '@webassemblyjs/wast-parser': 1.9.0
+ dev: false
+
+ /@webassemblyjs/floating-point-hex-parser/1.11.1:
+ resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==}
+
+ /@webassemblyjs/floating-point-hex-parser/1.9.0:
+ resolution: {integrity: sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==}
+ dev: false
+
+ /@webassemblyjs/helper-api-error/1.11.1:
+ resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==}
+
+ /@webassemblyjs/helper-api-error/1.9.0:
+ resolution: {integrity: sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==}
+ dev: false
+
+ /@webassemblyjs/helper-buffer/1.11.1:
+ resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==}
+
+ /@webassemblyjs/helper-buffer/1.9.0:
+ resolution: {integrity: sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==}
+ dev: false
+
+ /@webassemblyjs/helper-code-frame/1.9.0:
+ resolution: {integrity: sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==}
+ dependencies:
+ '@webassemblyjs/wast-printer': 1.9.0
+ dev: false
+
+ /@webassemblyjs/helper-fsm/1.9.0:
+ resolution: {integrity: sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==}
+ dev: false
+
+ /@webassemblyjs/helper-module-context/1.9.0:
+ resolution: {integrity: sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==}
+ dependencies:
+ '@webassemblyjs/ast': 1.9.0
+ dev: false
+
+ /@webassemblyjs/helper-numbers/1.11.1:
+ resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==}
+ dependencies:
+ '@webassemblyjs/floating-point-hex-parser': 1.11.1
+ '@webassemblyjs/helper-api-error': 1.11.1
+ '@xtuc/long': 4.2.2
+
+ /@webassemblyjs/helper-wasm-bytecode/1.11.1:
+ resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==}
+
+ /@webassemblyjs/helper-wasm-bytecode/1.9.0:
+ resolution: {integrity: sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==}
+ dev: false
+
+ /@webassemblyjs/helper-wasm-section/1.11.1:
+ resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==}
+ dependencies:
+ '@webassemblyjs/ast': 1.11.1
+ '@webassemblyjs/helper-buffer': 1.11.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.11.1
+ '@webassemblyjs/wasm-gen': 1.11.1
+
+ /@webassemblyjs/helper-wasm-section/1.9.0:
+ resolution: {integrity: sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==}
+ dependencies:
+ '@webassemblyjs/ast': 1.9.0
+ '@webassemblyjs/helper-buffer': 1.9.0
+ '@webassemblyjs/helper-wasm-bytecode': 1.9.0
+ '@webassemblyjs/wasm-gen': 1.9.0
+ dev: false
+
+ /@webassemblyjs/ieee754/1.11.1:
+ resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==}
+ dependencies:
+ '@xtuc/ieee754': 1.2.0
+
+ /@webassemblyjs/ieee754/1.9.0:
+ resolution: {integrity: sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==}
+ dependencies:
+ '@xtuc/ieee754': 1.2.0
+ dev: false
+
+ /@webassemblyjs/leb128/1.11.1:
+ resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==}
+ dependencies:
+ '@xtuc/long': 4.2.2
+
+ /@webassemblyjs/leb128/1.9.0:
+ resolution: {integrity: sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==}
+ dependencies:
+ '@xtuc/long': 4.2.2
+ dev: false
+
+ /@webassemblyjs/utf8/1.11.1:
+ resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==}
+
+ /@webassemblyjs/utf8/1.9.0:
+ resolution: {integrity: sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==}
+ dev: false
+
+ /@webassemblyjs/wasm-edit/1.11.1:
+ resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==}
+ dependencies:
+ '@webassemblyjs/ast': 1.11.1
+ '@webassemblyjs/helper-buffer': 1.11.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.11.1
+ '@webassemblyjs/helper-wasm-section': 1.11.1
+ '@webassemblyjs/wasm-gen': 1.11.1
+ '@webassemblyjs/wasm-opt': 1.11.1
+ '@webassemblyjs/wasm-parser': 1.11.1
+ '@webassemblyjs/wast-printer': 1.11.1
+
+ /@webassemblyjs/wasm-edit/1.9.0:
+ resolution: {integrity: sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==}
+ dependencies:
+ '@webassemblyjs/ast': 1.9.0
+ '@webassemblyjs/helper-buffer': 1.9.0
+ '@webassemblyjs/helper-wasm-bytecode': 1.9.0
+ '@webassemblyjs/helper-wasm-section': 1.9.0
+ '@webassemblyjs/wasm-gen': 1.9.0
+ '@webassemblyjs/wasm-opt': 1.9.0
+ '@webassemblyjs/wasm-parser': 1.9.0
+ '@webassemblyjs/wast-printer': 1.9.0
+ dev: false
+
+ /@webassemblyjs/wasm-gen/1.11.1:
+ resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==}
+ dependencies:
+ '@webassemblyjs/ast': 1.11.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.11.1
+ '@webassemblyjs/ieee754': 1.11.1
+ '@webassemblyjs/leb128': 1.11.1
+ '@webassemblyjs/utf8': 1.11.1
+
+ /@webassemblyjs/wasm-gen/1.9.0:
+ resolution: {integrity: sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==}
+ dependencies:
+ '@webassemblyjs/ast': 1.9.0
+ '@webassemblyjs/helper-wasm-bytecode': 1.9.0
+ '@webassemblyjs/ieee754': 1.9.0
+ '@webassemblyjs/leb128': 1.9.0
+ '@webassemblyjs/utf8': 1.9.0
+ dev: false
+
+ /@webassemblyjs/wasm-opt/1.11.1:
+ resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==}
+ dependencies:
+ '@webassemblyjs/ast': 1.11.1
+ '@webassemblyjs/helper-buffer': 1.11.1
+ '@webassemblyjs/wasm-gen': 1.11.1
+ '@webassemblyjs/wasm-parser': 1.11.1
+
+ /@webassemblyjs/wasm-opt/1.9.0:
+ resolution: {integrity: sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==}
+ dependencies:
+ '@webassemblyjs/ast': 1.9.0
+ '@webassemblyjs/helper-buffer': 1.9.0
+ '@webassemblyjs/wasm-gen': 1.9.0
+ '@webassemblyjs/wasm-parser': 1.9.0
+ dev: false
+
+ /@webassemblyjs/wasm-parser/1.11.1:
+ resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==}
+ dependencies:
+ '@webassemblyjs/ast': 1.11.1
+ '@webassemblyjs/helper-api-error': 1.11.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.11.1
+ '@webassemblyjs/ieee754': 1.11.1
+ '@webassemblyjs/leb128': 1.11.1
+ '@webassemblyjs/utf8': 1.11.1
+
+ /@webassemblyjs/wasm-parser/1.9.0:
+ resolution: {integrity: sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==}
+ dependencies:
+ '@webassemblyjs/ast': 1.9.0
+ '@webassemblyjs/helper-api-error': 1.9.0
+ '@webassemblyjs/helper-wasm-bytecode': 1.9.0
+ '@webassemblyjs/ieee754': 1.9.0
+ '@webassemblyjs/leb128': 1.9.0
+ '@webassemblyjs/utf8': 1.9.0
+ dev: false
+
+ /@webassemblyjs/wast-parser/1.9.0:
+ resolution: {integrity: sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==}
+ dependencies:
+ '@webassemblyjs/ast': 1.9.0
+ '@webassemblyjs/floating-point-hex-parser': 1.9.0
+ '@webassemblyjs/helper-api-error': 1.9.0
+ '@webassemblyjs/helper-code-frame': 1.9.0
+ '@webassemblyjs/helper-fsm': 1.9.0
+ '@xtuc/long': 4.2.2
+ dev: false
+
+ /@webassemblyjs/wast-printer/1.11.1:
+ resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==}
+ dependencies:
+ '@webassemblyjs/ast': 1.11.1
+ '@xtuc/long': 4.2.2
+
+ /@webassemblyjs/wast-printer/1.9.0:
+ resolution: {integrity: sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==}
+ dependencies:
+ '@webassemblyjs/ast': 1.9.0
+ '@webassemblyjs/wast-parser': 1.9.0
+ '@xtuc/long': 4.2.2
+ dev: false
+
+ /@xtuc/ieee754/1.2.0:
+ resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==}
+
+ /@xtuc/long/4.2.2:
+ resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
+
+ /@yarnpkg/lockfile/1.1.0:
+ resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==}
+ dev: true
+
+ /@yarnpkg/parsers/3.0.0-rc.20:
+ resolution: {integrity: sha512-ZzW6i9dspJsMzA0SxOTa/HABWWHYDIM4qSGE/ndX8wgae1qg+1+iqLQVVxKli674f386mo3RAKAmXia0q5nCOg==}
+ engines: {node: '>=14.15.0'}
+ dependencies:
+ js-yaml: 3.14.1
+ tslib: 2.4.0
+ dev: true
+
+ /@zkochan/js-yaml/0.0.6:
+ resolution: {integrity: sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==}
+ hasBin: true
+ dependencies:
+ argparse: 2.0.1
+ dev: true
+
+ /JSONStream/1.3.5:
+ resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
+ hasBin: true
+ dependencies:
+ jsonparse: 1.3.1
+ through: 2.3.8
+ dev: true
+
+ /abab/2.0.6:
+ resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
+ dev: false
+
+ /abbrev/1.1.1:
+ resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
+ dev: true
+
+ /accepts/1.3.8:
+ resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ mime-types: 2.1.35
+ negotiator: 0.6.3
+ dev: false
+
+ /acorn-globals/6.0.0:
+ resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==}
+ dependencies:
+ acorn: 7.4.1
+ acorn-walk: 7.2.0
+ dev: false
+
+ /acorn-import-assertions/1.8.0_acorn@8.8.0:
+ resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==}
+ peerDependencies:
+ acorn: ^8
+ dependencies:
+ acorn: 8.8.0
+
+ /acorn-jsx/5.3.2_acorn@7.4.1:
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ acorn: 7.4.1
+ dev: false
+
+ /acorn-jsx/5.3.2_acorn@8.8.0:
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ acorn: 8.8.0
+
+ /acorn-node/1.8.2:
+ resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==}
+ dependencies:
+ acorn: 7.4.1
+ acorn-walk: 7.2.0
+ xtend: 4.0.2
+ dev: false
+
+ /acorn-walk/7.2.0:
+ resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==}
+ engines: {node: '>=0.4.0'}
+ dev: false
+
+ /acorn-walk/8.2.0:
+ resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==}
+ engines: {node: '>=0.4.0'}
+
+ /acorn/6.4.2:
+ resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: false
+
+ /acorn/7.4.1:
+ resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: false
+
+ /acorn/8.8.0:
+ resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ /add-stream/1.0.0:
+ resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==}
+ dev: true
+
+ /address/1.1.2:
+ resolution: {integrity: sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==}
+ engines: {node: '>= 0.12.0'}
+ dev: false
+
+ /adjust-sourcemap-loader/4.0.0:
+ resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==}
+ engines: {node: '>=8.9'}
+ dependencies:
+ loader-utils: 2.0.3
+ regex-parser: 2.2.11
+ dev: false
+
+ /adler-32/1.3.1:
+ resolution: {integrity: sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==}
+ engines: {node: '>=0.8'}
+ dev: false
+
+ /agent-base/6.0.2:
+ resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
+ engines: {node: '>= 6.0.0'}
+ dependencies:
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+
+ /agentkeepalive/4.2.1:
+ resolution: {integrity: sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==}
+ engines: {node: '>= 8.0.0'}
+ dependencies:
+ debug: 4.3.4
+ depd: 1.1.2
+ humanize-ms: 1.2.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /aggregate-error/3.1.0:
+ resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
+ engines: {node: '>=8'}
+ dependencies:
+ clean-stack: 2.2.0
+ indent-string: 4.0.0
+
+ /airbnb-js-shims/2.2.1:
+ resolution: {integrity: sha512-wJNXPH66U2xjgo1Zwyjf9EydvJ2Si94+vSdk6EERcBfB2VZkeltpqIats0cqIZMLCXP3zcyaUKGYQeIBT6XjsQ==}
+ dependencies:
+ array-includes: 3.1.5
+ array.prototype.flat: 1.3.0
+ array.prototype.flatmap: 1.3.0
+ es5-shim: 4.6.7
+ es6-shim: 0.35.6
+ function.prototype.name: 1.1.5
+ globalthis: 1.0.3
+ object.entries: 1.1.5
+ object.fromentries: 2.0.5
+ object.getownpropertydescriptors: 2.1.4
+ object.values: 1.1.5
+ promise.allsettled: 1.0.5
+ promise.prototype.finally: 3.1.3
+ string.prototype.matchall: 4.0.7
+ string.prototype.padend: 3.1.3
+ string.prototype.padstart: 3.1.3
+ symbol.prototype.description: 1.0.5
+ dev: false
+
+ /ajv-errors/1.0.1_ajv@6.12.6:
+ resolution: {integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==}
+ peerDependencies:
+ ajv: '>=5.0.0'
+ dependencies:
+ ajv: 6.12.6
+ dev: false
+
+ /ajv-formats/2.1.1_ajv@8.11.0:
+ resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
+ peerDependencies:
+ ajv: ^8.0.0
+ peerDependenciesMeta:
+ ajv:
+ optional: true
+ dependencies:
+ ajv: 8.11.0
+
+ /ajv-keywords/3.5.2_ajv@6.12.6:
+ resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==}
+ peerDependencies:
+ ajv: ^6.9.1
+ dependencies:
+ ajv: 6.12.6
+
+ /ajv-keywords/5.1.0_ajv@8.11.0:
+ resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==}
+ peerDependencies:
+ ajv: ^8.8.2
+ dependencies:
+ ajv: 8.11.0
+ fast-deep-equal: 3.1.3
+ dev: false
+
+ /ajv/6.12.6:
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+
+ /ajv/8.11.0:
+ resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==}
+ dependencies:
+ fast-deep-equal: 3.1.3
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+ uri-js: 4.4.1
+
+ /amqp-connection-manager/4.1.7_amqplib@0.10.3:
+ resolution: {integrity: sha512-CbNev3Nr8rIzngwrpfWlgUqgJzSwA2cUNe6vMfNTzeKfShpkr4ZsUDadKY4nzbBrZC0s+lravXmlNg6eEzP7EQ==}
+ engines: {node: '>=10.0.0', npm: '>5.0.0'}
+ peerDependencies:
+ amqplib: '*'
+ dependencies:
+ amqplib: 0.10.3
+ promise-breaker: 6.0.0
+ dev: false
+
+ /amqplib/0.10.3:
+ resolution: {integrity: sha512-UHmuSa7n8vVW/a5HGh2nFPqAEr8+cD4dEZ6u9GjP91nHfr1a54RyAKyra7Sb5NH7NBKOUlyQSMXIp0qAixKexw==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@acuminous/bitsyntax': 0.1.2
+ buffer-more-ints: 1.0.0
+ readable-stream: 1.1.14
+ url-parse: 1.5.10
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /ansi-align/3.0.1:
+ resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
+ dependencies:
+ string-width: 4.2.3
+ dev: false
+
+ /ansi-colors/3.2.4:
+ resolution: {integrity: sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /ansi-colors/4.1.1:
+ resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /ansi-colors/4.1.3:
+ resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /ansi-escapes/4.3.2:
+ resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ type-fest: 0.21.3
+
+ /ansi-html-community/0.0.8:
+ resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==}
+ engines: {'0': node >= 0.8.0}
+ hasBin: true
+ dev: false
+
+ /ansi-regex/2.1.1:
+ resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /ansi-regex/5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ /ansi-regex/6.0.1:
+ resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
+ engines: {node: '>=12'}
+
+ /ansi-styles/3.2.1:
+ resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
+ engines: {node: '>=4'}
+ dependencies:
+ color-convert: 1.9.3
+
+ /ansi-styles/4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+ dependencies:
+ color-convert: 2.0.1
+
+ /ansi-styles/5.2.0:
+ resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
+ engines: {node: '>=10'}
+
+ /ansi-styles/6.1.1:
+ resolution: {integrity: sha512-qDOv24WjnYuL+wbwHdlsYZFy+cgPtrYw0Tn7GLORicQp9BkQLzrgI3Pm4VyR9ERZ41YTn7KlMPuL1n05WdZvmg==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /ansi-to-html/0.6.15:
+ resolution: {integrity: sha512-28ijx2aHJGdzbs+O5SNQF65r6rrKYnkuwTYm8lZlChuoJ9P1vVzIpWO20sQTqTPDXYp6NFwk326vApTtLVFXpQ==}
+ engines: {node: '>=8.0.0'}
+ hasBin: true
+ dependencies:
+ entities: 2.2.0
+ dev: false
+
+ /anymatch/2.0.0:
+ resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==}
+ dependencies:
+ micromatch: 3.1.10
+ normalize-path: 2.1.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /anymatch/3.1.2:
+ resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
+ engines: {node: '>= 8'}
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+
+ /app-root-dir/1.0.2:
+ resolution: {integrity: sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==}
+ dev: false
+
+ /append-field/1.0.0:
+ resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==}
+ dev: false
+
+ /aproba/1.2.0:
+ resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==}
+ dev: false
+
+ /aproba/2.0.0:
+ resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
+
+ /are-we-there-yet/2.0.0:
+ resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==}
+ engines: {node: '>=10'}
+ dependencies:
+ delegates: 1.0.0
+ readable-stream: 3.6.0
+ dev: false
+
+ /are-we-there-yet/3.0.1:
+ resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ delegates: 1.0.0
+ readable-stream: 3.6.0
+ dev: true
+
+ /arg/4.1.3:
+ resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
+
+ /arg/5.0.2:
+ resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
+ dev: false
+
+ /argparse/1.0.10:
+ resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
+ dependencies:
+ sprintf-js: 1.0.3
+
+ /argparse/2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ /aria-hidden/1.2.1_iapumuv4e6jcjznwuxpf4tt22e:
+ resolution: {integrity: sha512-PN344VAf9j1EAi+jyVHOJ8XidQdPVssGco39eNcsGdM4wcsILtxrKLkbuiMfLWYROK1FjRQasMWCBttrhjnr6A==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0
+ react: ^16.9.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.0.21
+ react: 18.2.0
+ tslib: 2.4.0
+ dev: false
+
+ /aria-query/4.2.2:
+ resolution: {integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==}
+ engines: {node: '>=6.0'}
+ dependencies:
+ '@babel/runtime': 7.19.0
+ '@babel/runtime-corejs3': 7.19.1
+
+ /arr-diff/4.0.0:
+ resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /arr-flatten/1.1.0:
+ resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /arr-union/3.1.0:
+ resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /array-differ/3.0.0:
+ resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /array-find-index/1.0.2:
+ resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+ optional: true
+
+ /array-flatten/1.1.1:
+ resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
+ dev: false
+
+ /array-flatten/2.1.2:
+ resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==}
+ dev: false
+
+ /array-ify/1.0.0:
+ resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==}
+ dev: true
+
+ /array-includes/3.1.5:
+ resolution: {integrity: sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.4
+ es-abstract: 1.20.3
+ get-intrinsic: 1.1.3
+ is-string: 1.0.7
+
+ /array-union/1.0.2:
+ resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ array-uniq: 1.0.3
+ dev: false
+
+ /array-union/2.1.0:
+ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
+ engines: {node: '>=8'}
+
+ /array-uniq/1.0.3:
+ resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /array-unique/0.3.2:
+ resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /array.prototype.flat/1.3.0:
+ resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.4
+ es-abstract: 1.20.3
+ es-shim-unscopables: 1.0.0
+
+ /array.prototype.flatmap/1.3.0:
+ resolution: {integrity: sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.4
+ es-abstract: 1.20.3
+ es-shim-unscopables: 1.0.0
+
+ /array.prototype.map/1.0.4:
+ resolution: {integrity: sha512-Qds9QnX7A0qISY7JT5WuJO0NJPE9CMlC6JzHQfhpqAAQQzufVRoeH7EzUY5GcPTx72voG8LV/5eo+b8Qi8hmhA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.4
+ es-abstract: 1.20.3
+ es-array-method-boxes-properly: 1.0.0
+ is-string: 1.0.7
+ dev: false
+
+ /array.prototype.reduce/1.0.4:
+ resolution: {integrity: sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.4
+ es-abstract: 1.20.3
+ es-array-method-boxes-properly: 1.0.0
+ is-string: 1.0.7
+ dev: false
+
+ /arrify/1.0.1:
+ resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /arrify/2.0.1:
+ resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==}
+ engines: {node: '>=8'}
+
+ /asap/2.0.6:
+ resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
+
+ /asn1.js/5.4.1:
+ resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==}
+ dependencies:
+ bn.js: 4.12.0
+ inherits: 2.0.4
+ minimalistic-assert: 1.0.1
+ safer-buffer: 2.1.2
+ dev: false
+
+ /assert/1.5.0:
+ resolution: {integrity: sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==}
+ dependencies:
+ object-assign: 4.1.1
+ util: 0.10.3
+ dev: false
+
+ /assertion-error/1.1.0:
+ resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
+ dev: true
+
+ /assign-symbols/1.0.0:
+ resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /ast-types-flow/0.0.7:
+ resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==}
+
+ /ast-types/0.14.2:
+ resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==}
+ engines: {node: '>=4'}
+ dependencies:
+ tslib: 2.4.0
+ dev: false
+
+ /astral-regex/2.0.0:
+ resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /async-each/1.0.3:
+ resolution: {integrity: sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==}
+ dev: false
+ optional: true
+
+ /async/2.6.4:
+ resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==}
+ dependencies:
+ lodash: 4.17.21
+ dev: false
+
+ /async/3.2.4:
+ resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==}
+
+ /asynckit/0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+
+ /at-least-node/1.0.0:
+ resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
+ engines: {node: '>= 4.0.0'}
+
+ /atob/2.1.2:
+ resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
+ engines: {node: '>= 4.5.0'}
+ hasBin: true
+ dev: false
+
+ /attr-accept/2.2.2:
+ resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /autoprefixer/10.4.12_postcss@8.4.18:
+ resolution: {integrity: sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==}
+ engines: {node: ^10 || ^12 || >=14}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ browserslist: 4.21.4
+ caniuse-lite: 1.0.30001410
+ fraction.js: 4.2.0
+ normalize-range: 0.1.2
+ picocolors: 1.0.0
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /autoprefixer/9.8.8:
+ resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==}
+ hasBin: true
+ dependencies:
+ browserslist: 4.21.4
+ caniuse-lite: 1.0.30001410
+ normalize-range: 0.1.2
+ num2fraction: 1.2.2
+ picocolors: 0.2.1
+ postcss: 7.0.39
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /axe-core/4.4.3:
+ resolution: {integrity: sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==}
+ engines: {node: '>=4'}
+
+ /axios/0.21.4:
+ resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==}
+ dependencies:
+ follow-redirects: 1.15.2
+ transitivePeerDependencies:
+ - debug
+ dev: true
+
+ /axios/0.26.1:
+ resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==}
+ dependencies:
+ follow-redirects: 1.15.2
+ transitivePeerDependencies:
+ - debug
+ dev: false
+
+ /axios/1.1.3:
+ resolution: {integrity: sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==}
+ dependencies:
+ follow-redirects: 1.15.2
+ form-data: 4.0.0
+ proxy-from-env: 1.1.0
+ transitivePeerDependencies:
+ - debug
+ dev: true
+
+ /axobject-query/2.2.0:
+ resolution: {integrity: sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==}
+
+ /babel-jest/27.5.1_@babel+core@7.19.6:
+ resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ peerDependencies:
+ '@babel/core': ^7.8.0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@jest/transform': 27.5.1
+ '@jest/types': 27.5.1
+ '@types/babel__core': 7.1.19
+ babel-plugin-istanbul: 6.1.1
+ babel-preset-jest: 27.5.1_@babel+core@7.19.6
+ chalk: 4.1.2
+ graceful-fs: 4.2.10
+ slash: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /babel-jest/28.1.3_@babel+core@7.19.1:
+ resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ peerDependencies:
+ '@babel/core': ^7.8.0
+ dependencies:
+ '@babel/core': 7.19.1
+ '@jest/transform': 28.1.3
+ '@types/babel__core': 7.1.19
+ babel-plugin-istanbul: 6.1.1
+ babel-preset-jest: 28.1.3_@babel+core@7.19.1
+ chalk: 4.1.2
+ graceful-fs: 4.2.10
+ slash: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /babel-loader/8.2.5_6zc4kxld457avlfyhj3lzsljlm:
+ resolution: {integrity: sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==}
+ engines: {node: '>= 8.9'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ webpack: '>=2'
+ dependencies:
+ '@babel/core': 7.19.6
+ find-cache-dir: 3.3.2
+ loader-utils: 2.0.3
+ make-dir: 3.1.0
+ schema-utils: 2.7.1
+ webpack: 5.74.0
+
+ /babel-loader/8.2.5_q4ydpsrmbqywduja5orgah6fgq:
+ resolution: {integrity: sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==}
+ engines: {node: '>= 8.9'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ webpack: '>=2'
+ dependencies:
+ '@babel/core': 7.19.6
+ find-cache-dir: 3.3.2
+ loader-utils: 2.0.3
+ make-dir: 3.1.0
+ schema-utils: 2.7.1
+ webpack: 4.46.0
+ dev: false
+
+ /babel-plugin-add-react-displayname/0.0.5:
+ resolution: {integrity: sha512-LY3+Y0XVDYcShHHorshrDbt4KFWL4bSeniCtl4SYZbask+Syngk1uMPCeN9+nSiZo6zX5s0RTq/J9Pnaaf/KHw==}
+ dev: false
+
+ /babel-plugin-apply-mdx-type-prop/1.6.22_@babel+core@7.12.9:
+ resolution: {integrity: sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==}
+ peerDependencies:
+ '@babel/core': ^7.11.6
+ dependencies:
+ '@babel/core': 7.12.9
+ '@babel/helper-plugin-utils': 7.10.4
+ '@mdx-js/util': 1.6.22
+ dev: false
+
+ /babel-plugin-extract-import-names/1.6.22:
+ resolution: {integrity: sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==}
+ dependencies:
+ '@babel/helper-plugin-utils': 7.10.4
+ dev: false
+
+ /babel-plugin-istanbul/6.1.1:
+ resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@babel/helper-plugin-utils': 7.19.0
+ '@istanbuljs/load-nyc-config': 1.1.0
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-instrument: 5.2.0
+ test-exclude: 6.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ /babel-plugin-jest-hoist/27.5.1:
+ resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@babel/template': 7.18.10
+ '@babel/types': 7.19.4
+ '@types/babel__core': 7.1.19
+ '@types/babel__traverse': 7.18.1
+ dev: false
+
+ /babel-plugin-jest-hoist/28.1.3:
+ resolution: {integrity: sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@babel/template': 7.18.10
+ '@babel/types': 7.19.0
+ '@types/babel__core': 7.1.19
+ '@types/babel__traverse': 7.18.1
+ dev: true
+
+ /babel-plugin-macros/3.1.0:
+ resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
+ engines: {node: '>=10', npm: '>=6'}
+ dependencies:
+ '@babel/runtime': 7.19.0
+ cosmiconfig: 7.0.1
+ resolve: 1.22.1
+ dev: false
+
+ /babel-plugin-named-asset-import/0.3.8_@babel+core@7.19.6:
+ resolution: {integrity: sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==}
+ peerDependencies:
+ '@babel/core': ^7.1.0
+ dependencies:
+ '@babel/core': 7.19.6
+ dev: false
+
+ /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.19.6:
+ resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/compat-data': 7.19.4
+ '@babel/core': 7.19.6
+ '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.6
+ semver: 6.3.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /babel-plugin-polyfill-corejs3/0.1.7_@babel+core@7.19.6:
+ resolution: {integrity: sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-define-polyfill-provider': 0.1.5_@babel+core@7.19.6
+ core-js-compat: 3.25.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.19.6:
+ resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.6
+ core-js-compat: 3.25.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.19.6:
+ resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.6
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /babel-plugin-react-docgen/4.2.1:
+ resolution: {integrity: sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ==}
+ dependencies:
+ ast-types: 0.14.2
+ lodash: 4.17.21
+ react-docgen: 5.4.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /babel-plugin-styled-components/2.0.7_styled-components@5.3.6:
+ resolution: {integrity: sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==}
+ peerDependencies:
+ styled-components: '>= 2'
+ dependencies:
+ '@babel/helper-annotate-as-pure': 7.18.6
+ '@babel/helper-module-imports': 7.18.6
+ babel-plugin-syntax-jsx: 6.18.0
+ lodash: 4.17.21
+ picomatch: 2.3.1
+ styled-components: 5.3.6_7i5myeigehqah43i5u7wbekgba
+ dev: false
+
+ /babel-plugin-syntax-jsx/6.18.0:
+ resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==}
+ dev: false
+
+ /babel-plugin-transform-react-remove-prop-types/0.4.24:
+ resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==}
+ dev: false
+
+ /babel-preset-current-node-syntax/1.0.1_@babel+core@7.19.1:
+ resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.19.1
+ '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.19.1
+ '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.19.1
+ '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.19.1
+ '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.19.1
+ '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.19.1
+ '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.19.1
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.19.1
+ '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.19.1
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.1
+ '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.19.1
+ '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.1
+ '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.19.1
+ dev: true
+
+ /babel-preset-current-node-syntax/1.0.1_@babel+core@7.19.6:
+ resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.19.6
+ '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.19.6
+ '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.19.6
+ '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.19.6
+ '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.19.6
+ '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.19.6
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.19.6
+ '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.19.6
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.6
+ '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.19.6
+ '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.6
+ '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.19.6
+ dev: false
+
+ /babel-preset-jest/27.5.1_@babel+core@7.19.6:
+ resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.19.6
+ babel-plugin-jest-hoist: 27.5.1
+ babel-preset-current-node-syntax: 1.0.1_@babel+core@7.19.6
+ dev: false
+
+ /babel-preset-jest/28.1.3_@babel+core@7.19.1:
+ resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.19.1
+ babel-plugin-jest-hoist: 28.1.3
+ babel-preset-current-node-syntax: 1.0.1_@babel+core@7.19.1
+ dev: true
+
+ /babel-preset-react-app/10.0.1:
+ resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==}
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-proposal-decorators': 7.19.6_@babel+core@7.19.6
+ '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.6
+ '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-flow-strip-types': 7.19.0_@babel+core@7.19.6
+ '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-runtime': 7.19.6_@babel+core@7.19.6
+ '@babel/preset-env': 7.19.4_@babel+core@7.19.6
+ '@babel/preset-react': 7.18.6_@babel+core@7.19.6
+ '@babel/preset-typescript': 7.18.6_@babel+core@7.19.6
+ '@babel/runtime': 7.19.0
+ babel-plugin-macros: 3.1.0
+ babel-plugin-transform-react-remove-prop-types: 0.4.24
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /bail/1.0.5:
+ resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==}
+ dev: false
+
+ /balanced-match/1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ /base/0.11.2:
+ resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ cache-base: 1.0.1
+ class-utils: 0.3.6
+ component-emitter: 1.3.0
+ define-property: 1.0.0
+ isobject: 3.0.1
+ mixin-deep: 1.3.2
+ pascalcase: 0.1.1
+ dev: false
+
+ /base64-js/1.5.1:
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+
+ /basic-auth/2.0.1:
+ resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ safe-buffer: 5.1.2
+ dev: false
+
+ /batch/0.6.1:
+ resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==}
+ dev: false
+
+ /before-after-hook/2.2.3:
+ resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==}
+ dev: true
+
+ /better-opn/2.1.1:
+ resolution: {integrity: sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==}
+ engines: {node: '>8.0.0'}
+ dependencies:
+ open: 7.4.2
+ dev: false
+
+ /bfj/7.0.2:
+ resolution: {integrity: sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==}
+ engines: {node: '>= 8.0.0'}
+ dependencies:
+ bluebird: 3.7.2
+ check-types: 11.1.2
+ hoopy: 0.1.4
+ tryer: 1.0.1
+ dev: false
+
+ /big-integer/1.6.51:
+ resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==}
+ engines: {node: '>=0.6'}
+ dev: false
+ optional: true
+
+ /big.js/5.2.2:
+ resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==}
+
+ /bin-links/3.0.3:
+ resolution: {integrity: sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ cmd-shim: 5.0.0
+ mkdirp-infer-owner: 2.0.0
+ npm-normalize-package-bin: 2.0.0
+ read-cmd-shim: 3.0.1
+ rimraf: 3.0.2
+ write-file-atomic: 4.0.2
+ dev: true
+
+ /binary-extensions/1.13.1:
+ resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+ optional: true
+
+ /binary-extensions/2.2.0:
+ resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
+ engines: {node: '>=8'}
+
+ /bindings/1.5.0:
+ resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
+ requiresBuild: true
+ dependencies:
+ file-uri-to-path: 1.0.0
+ dev: false
+ optional: true
+
+ /bl/4.1.0:
+ resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
+ dependencies:
+ buffer: 5.7.1
+ inherits: 2.0.4
+ readable-stream: 3.6.0
+ dev: true
+
+ /bluebird/3.7.2:
+ resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
+ dev: false
+
+ /bn.js/4.12.0:
+ resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==}
+ dev: false
+
+ /bn.js/5.2.1:
+ resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==}
+ dev: false
+
+ /body-parser/1.20.0:
+ resolution: {integrity: sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+ 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.10.3
+ raw-body: 2.5.1
+ type-is: 1.6.18
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /bonjour-service/1.0.14:
+ resolution: {integrity: sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==}
+ dependencies:
+ array-flatten: 2.1.2
+ dns-equal: 1.0.0
+ fast-deep-equal: 3.1.3
+ multicast-dns: 7.2.5
+ dev: false
+
+ /boolbase/1.0.0:
+ resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
+ dev: false
+
+ /bowser/2.11.0:
+ resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==}
+ dev: false
+
+ /boxen/5.1.2:
+ resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-align: 3.0.1
+ camelcase: 6.3.0
+ chalk: 4.1.2
+ cli-boxes: 2.2.1
+ string-width: 4.2.3
+ type-fest: 0.20.2
+ widest-line: 3.1.0
+ wrap-ansi: 7.0.0
+ dev: false
+
+ /bplist-parser/0.1.1:
+ resolution: {integrity: sha512-2AEM0FXy8ZxVLBuqX0hqt1gDwcnz2zygEkQ6zaD5Wko/sB9paUNwlpawrFtKeHUAQUOzjVy9AO4oeonqIHKA9Q==}
+ dependencies:
+ big-integer: 1.6.51
+ dev: false
+ optional: true
+
+ /brace-expansion/1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ /brace-expansion/2.0.1:
+ resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+ dependencies:
+ balanced-match: 1.0.2
+
+ /braces/2.3.2:
+ resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-flatten: 1.1.0
+ array-unique: 0.3.2
+ extend-shallow: 2.0.1
+ fill-range: 4.0.0
+ isobject: 3.0.1
+ repeat-element: 1.1.4
+ snapdragon: 0.8.2
+ snapdragon-node: 2.1.1
+ split-string: 3.1.0
+ to-regex: 3.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /braces/3.0.2:
+ resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+ engines: {node: '>=8'}
+ dependencies:
+ fill-range: 7.0.1
+
+ /brorand/1.1.0:
+ resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==}
+ dev: false
+
+ /browser-process-hrtime/1.0.0:
+ resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==}
+ dev: false
+
+ /browser-stdout/1.3.1:
+ resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==}
+ dev: true
+
+ /browserify-aes/1.2.0:
+ resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==}
+ dependencies:
+ buffer-xor: 1.0.3
+ cipher-base: 1.0.4
+ create-hash: 1.2.0
+ evp_bytestokey: 1.0.3
+ inherits: 2.0.4
+ safe-buffer: 5.2.1
+ dev: false
+
+ /browserify-cipher/1.0.1:
+ resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==}
+ dependencies:
+ browserify-aes: 1.2.0
+ browserify-des: 1.0.2
+ evp_bytestokey: 1.0.3
+ dev: false
+
+ /browserify-des/1.0.2:
+ resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==}
+ dependencies:
+ cipher-base: 1.0.4
+ des.js: 1.0.1
+ inherits: 2.0.4
+ safe-buffer: 5.2.1
+ dev: false
+
+ /browserify-rsa/4.1.0:
+ resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==}
+ dependencies:
+ bn.js: 5.2.1
+ randombytes: 2.1.0
+ dev: false
+
+ /browserify-sign/4.2.1:
+ resolution: {integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==}
+ dependencies:
+ bn.js: 5.2.1
+ browserify-rsa: 4.1.0
+ create-hash: 1.2.0
+ create-hmac: 1.1.7
+ elliptic: 6.5.4
+ inherits: 2.0.4
+ parse-asn1: 5.1.6
+ readable-stream: 3.6.0
+ safe-buffer: 5.2.1
+ dev: false
+
+ /browserify-zlib/0.2.0:
+ resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==}
+ dependencies:
+ pako: 1.0.11
+ dev: false
+
+ /browserslist/4.21.4:
+ resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+ dependencies:
+ caniuse-lite: 1.0.30001410
+ electron-to-chromium: 1.4.258
+ node-releases: 2.0.6
+ update-browserslist-db: 1.0.9_browserslist@4.21.4
+
+ /bser/2.1.1:
+ resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
+ dependencies:
+ node-int64: 0.4.0
+
+ /bson/4.7.0:
+ resolution: {integrity: sha512-VrlEE4vuiO1WTpfof4VmaVolCVYkYTgB9iWgYNOrVlnifpME/06fhFRmONgBhClD5pFC1t9ZWqFUQEQAzY43bA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ buffer: 5.7.1
+ dev: false
+
+ /buffer-from/1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+
+ /buffer-more-ints/1.0.0:
+ resolution: {integrity: sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==}
+ dev: false
+
+ /buffer-xor/1.0.3:
+ resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==}
+ dev: false
+
+ /buffer/4.9.2:
+ resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==}
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+ isarray: 1.0.0
+ dev: false
+
+ /buffer/5.7.1:
+ resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ /builtin-modules/3.3.0:
+ resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
+ engines: {node: '>=6'}
+
+ /builtin-status-codes/3.0.0:
+ resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==}
+ dev: false
+
+ /builtins/1.0.3:
+ resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==}
+ dev: true
+
+ /builtins/5.0.1:
+ resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==}
+ dependencies:
+ semver: 7.3.7
+ dev: true
+
+ /busboy/1.6.0:
+ resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
+ engines: {node: '>=10.16.0'}
+ dependencies:
+ streamsearch: 1.1.0
+ dev: false
+
+ /byte-size/7.0.1:
+ resolution: {integrity: sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /bytes/3.0.0:
+ resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
+ /bytes/3.1.2:
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
+ /c8/7.12.0:
+ resolution: {integrity: sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==}
+ engines: {node: '>=10.12.0'}
+ hasBin: true
+ dependencies:
+ '@bcoe/v8-coverage': 0.2.3
+ '@istanbuljs/schema': 0.1.3
+ find-up: 5.0.0
+ foreground-child: 2.0.0
+ istanbul-lib-coverage: 3.2.0
+ istanbul-lib-report: 3.0.0
+ istanbul-reports: 3.1.5
+ rimraf: 3.0.2
+ test-exclude: 6.0.0
+ v8-to-istanbul: 9.0.1
+ yargs: 16.2.0
+ yargs-parser: 20.2.9
+ dev: false
+
+ /cacache/12.0.4:
+ resolution: {integrity: sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==}
+ dependencies:
+ bluebird: 3.7.2
+ chownr: 1.1.4
+ figgy-pudding: 3.5.2
+ glob: 7.2.3
+ graceful-fs: 4.2.10
+ infer-owner: 1.0.4
+ lru-cache: 5.1.1
+ mississippi: 3.0.0
+ mkdirp: 0.5.6
+ move-concurrently: 1.0.1
+ promise-inflight: 1.0.1_bluebird@3.7.2
+ rimraf: 2.7.1
+ ssri: 6.0.2
+ unique-filename: 1.1.1
+ y18n: 4.0.3
+ dev: false
+
+ /cacache/15.3.0:
+ resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==}
+ engines: {node: '>= 10'}
+ dependencies:
+ '@npmcli/fs': 1.1.1
+ '@npmcli/move-file': 1.1.2
+ chownr: 2.0.0
+ fs-minipass: 2.1.0
+ glob: 7.2.3
+ infer-owner: 1.0.4
+ lru-cache: 6.0.0
+ minipass: 3.3.4
+ minipass-collect: 1.0.2
+ minipass-flush: 1.0.5
+ minipass-pipeline: 1.2.4
+ mkdirp: 1.0.4
+ p-map: 4.0.0
+ promise-inflight: 1.0.1
+ rimraf: 3.0.2
+ ssri: 8.0.1
+ tar: 6.1.11
+ unique-filename: 1.1.1
+ transitivePeerDependencies:
+ - bluebird
+ dev: false
+
+ /cacache/16.1.3:
+ resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ '@npmcli/fs': 2.1.2
+ '@npmcli/move-file': 2.0.1
+ chownr: 2.0.0
+ fs-minipass: 2.1.0
+ glob: 8.0.3
+ infer-owner: 1.0.4
+ lru-cache: 7.14.1
+ minipass: 3.3.4
+ minipass-collect: 1.0.2
+ minipass-flush: 1.0.5
+ minipass-pipeline: 1.2.4
+ mkdirp: 1.0.4
+ p-map: 4.0.0
+ promise-inflight: 1.0.1
+ rimraf: 3.0.2
+ ssri: 9.0.1
+ tar: 6.1.11
+ unique-filename: 2.0.1
+ transitivePeerDependencies:
+ - bluebird
+ dev: true
+
+ /cache-base/1.0.1:
+ resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ collection-visit: 1.0.0
+ component-emitter: 1.3.0
+ get-value: 2.0.6
+ has-value: 1.0.0
+ isobject: 3.0.1
+ set-value: 2.0.1
+ to-object-path: 0.3.0
+ union-value: 1.0.1
+ unset-value: 1.0.0
+ dev: false
+
+ /call-bind/1.0.2:
+ resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
+ dependencies:
+ function-bind: 1.1.1
+ get-intrinsic: 1.1.3
+
+ /call-me-maybe/1.0.1:
+ resolution: {integrity: sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==}
+ dev: false
+
+ /callsites/3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+
+ /camel-case/4.1.2:
+ resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
+ dependencies:
+ pascal-case: 3.1.2
+ tslib: 2.4.0
+ dev: false
+
+ /camelcase-css/2.0.1:
+ resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
+ engines: {node: '>= 6'}
+ dev: false
+
+ /camelcase-keys/2.1.0:
+ resolution: {integrity: sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ camelcase: 2.1.1
+ map-obj: 1.0.1
+ dev: false
+ optional: true
+
+ /camelcase-keys/6.2.2:
+ resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
+ engines: {node: '>=8'}
+ dependencies:
+ camelcase: 5.3.1
+ map-obj: 4.3.0
+ quick-lru: 4.0.1
+ dev: true
+
+ /camelcase/2.1.1:
+ resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+ optional: true
+
+ /camelcase/5.3.1:
+ resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
+ engines: {node: '>=6'}
+
+ /camelcase/6.3.0:
+ resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
+ engines: {node: '>=10'}
+
+ /camelize/1.0.1:
+ resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==}
+ dev: false
+
+ /caniuse-api/3.0.0:
+ resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
+ dependencies:
+ browserslist: 4.21.4
+ caniuse-lite: 1.0.30001410
+ lodash.memoize: 4.1.2
+ lodash.uniq: 4.5.0
+ dev: false
+
+ /caniuse-lite/1.0.30001410:
+ resolution: {integrity: sha512-QoblBnuE+rG0lc3Ur9ltP5q47lbguipa/ncNMyyGuqPk44FxbScWAeEO+k5fSQ8WekdAK4mWqNs1rADDAiN5xQ==}
+
+ /capture-exit/2.0.0:
+ resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+ dependencies:
+ rsvp: 4.8.5
+ dev: false
+
+ /case-sensitive-paths-webpack-plugin/2.4.0:
+ resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /ccount/1.1.0:
+ resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==}
+ dev: false
+
+ /cfb/1.2.2:
+ resolution: {integrity: sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==}
+ engines: {node: '>=0.8'}
+ dependencies:
+ adler-32: 1.3.1
+ crc-32: 1.2.2
+ dev: false
+
+ /chai/4.3.7:
+ resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==}
+ engines: {node: '>=4'}
+ dependencies:
+ assertion-error: 1.1.0
+ check-error: 1.0.2
+ deep-eql: 4.1.2
+ get-func-name: 2.0.0
+ loupe: 2.3.6
+ pathval: 1.1.1
+ type-detect: 4.0.8
+ dev: true
+
+ /chalk/2.4.2:
+ resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ ansi-styles: 3.2.1
+ escape-string-regexp: 1.0.5
+ supports-color: 5.5.0
+
+ /chalk/3.0.0:
+ resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+ dev: true
+
+ /chalk/4.1.0:
+ resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+ dev: true
+
+ /chalk/4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
+ /char-regex/1.0.2:
+ resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
+ engines: {node: '>=10'}
+
+ /char-regex/2.0.1:
+ resolution: {integrity: sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==}
+ engines: {node: '>=12.20'}
+ dev: false
+
+ /character-entities-legacy/1.1.4:
+ resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==}
+ dev: false
+
+ /character-entities/1.2.4:
+ resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==}
+ dev: false
+
+ /character-reference-invalid/1.1.4:
+ resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==}
+ dev: false
+
+ /chardet/0.7.0:
+ resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
+ dev: true
+
+ /check-error/1.0.2:
+ resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==}
+ dev: true
+
+ /check-types/11.1.2:
+ resolution: {integrity: sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==}
+ dev: false
+
+ /chokidar/2.1.8:
+ resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==}
+ deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies
+ dependencies:
+ anymatch: 2.0.0
+ async-each: 1.0.3
+ braces: 2.3.2
+ glob-parent: 3.1.0
+ inherits: 2.0.4
+ is-binary-path: 1.0.1
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ path-is-absolute: 1.0.1
+ readdirp: 2.2.1
+ upath: 1.2.0
+ optionalDependencies:
+ fsevents: 1.2.13
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+ optional: true
+
+ /chokidar/3.5.3:
+ resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
+ engines: {node: '>= 8.10.0'}
+ dependencies:
+ anymatch: 3.1.2
+ braces: 3.0.2
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.2
+
+ /chownr/1.1.4:
+ resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
+ dev: false
+
+ /chownr/2.0.0:
+ resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
+ engines: {node: '>=10'}
+
+ /chrome-trace-event/1.0.3:
+ resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==}
+ engines: {node: '>=6.0'}
+
+ /ci-info/2.0.0:
+ resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==}
+
+ /ci-info/3.4.0:
+ resolution: {integrity: sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==}
+
+ /cipher-base/1.0.4:
+ resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==}
+ dependencies:
+ inherits: 2.0.4
+ safe-buffer: 5.2.1
+ dev: false
+
+ /cjs-module-lexer/1.2.2:
+ resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==}
+
+ /class-transformer/0.5.1:
+ resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==}
+ dev: false
+
+ /class-utils/0.3.6:
+ resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-union: 3.1.0
+ define-property: 0.2.5
+ isobject: 3.0.1
+ static-extend: 0.1.2
+ dev: false
+
+ /class-validator/0.13.2:
+ resolution: {integrity: sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==}
+ dependencies:
+ libphonenumber-js: 1.10.13
+ validator: 13.7.0
+ dev: false
+
+ /clean-css/4.2.4:
+ resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==}
+ engines: {node: '>= 4.0'}
+ dependencies:
+ source-map: 0.6.1
+ dev: false
+
+ /clean-css/5.3.1:
+ resolution: {integrity: sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==}
+ engines: {node: '>= 10.0'}
+ dependencies:
+ source-map: 0.6.1
+ dev: false
+
+ /clean-stack/2.2.0:
+ resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
+ engines: {node: '>=6'}
+
+ /cli-boxes/2.2.1:
+ resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /cli-cursor/3.1.0:
+ resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
+ engines: {node: '>=8'}
+ dependencies:
+ restore-cursor: 3.1.0
+ dev: true
+
+ /cli-spinners/2.6.1:
+ resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /cli-table3/0.6.2:
+ resolution: {integrity: sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==}
+ engines: {node: 10.* || >= 12.*}
+ dependencies:
+ string-width: 4.2.3
+ optionalDependencies:
+ '@colors/colors': 1.5.0
+ dev: true
+
+ /cli-table3/0.6.3:
+ resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==}
+ engines: {node: 10.* || >= 12.*}
+ dependencies:
+ string-width: 4.2.3
+ optionalDependencies:
+ '@colors/colors': 1.5.0
+ dev: false
+
+ /cli-truncate/2.1.0:
+ resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==}
+ engines: {node: '>=8'}
+ dependencies:
+ slice-ansi: 3.0.0
+ string-width: 4.2.3
+ dev: true
+
+ /cli-truncate/3.1.0:
+ resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dependencies:
+ slice-ansi: 5.0.0
+ string-width: 5.1.2
+ dev: true
+
+ /cli-width/3.0.0:
+ resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==}
+ engines: {node: '>= 10'}
+ dev: true
+
+ /cliui/7.0.4:
+ resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
+ /cliui/8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+ dev: true
+
+ /clone-deep/4.0.1:
+ resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==}
+ engines: {node: '>=6'}
+ dependencies:
+ is-plain-object: 2.0.4
+ kind-of: 6.0.3
+ shallow-clone: 3.0.1
+
+ /clone/1.0.4:
+ resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
+ engines: {node: '>=0.8'}
+ dev: true
+
+ /clsx/1.1.1:
+ resolution: {integrity: sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /cmd-shim/5.0.0:
+ resolution: {integrity: sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ mkdirp-infer-owner: 2.0.0
+ dev: true
+
+ /co/4.6.0:
+ resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==}
+ engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
+
+ /coa/2.0.2:
+ resolution: {integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==}
+ engines: {node: '>= 4.0'}
+ dependencies:
+ '@types/q': 1.5.5
+ chalk: 2.4.2
+ q: 1.5.1
+ dev: false
+
+ /codepage/1.15.0:
+ resolution: {integrity: sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==}
+ engines: {node: '>=0.8'}
+ dev: false
+
+ /collapse-white-space/1.0.6:
+ resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==}
+ dev: false
+
+ /collect-v8-coverage/1.0.1:
+ resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==}
+
+ /collection-visit/1.0.0:
+ resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ map-visit: 1.0.0
+ object-visit: 1.0.1
+ dev: false
+
+ /color-convert/1.9.3:
+ resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+ dependencies:
+ color-name: 1.1.3
+
+ /color-convert/2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+ dependencies:
+ color-name: 1.1.4
+
+ /color-name/1.1.3:
+ resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+
+ /color-name/1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ /color-support/1.1.3:
+ resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
+ hasBin: true
+
+ /colord/2.9.3:
+ resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
+ dev: false
+
+ /colorette/2.0.19:
+ resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==}
+
+ /columnify/1.6.0:
+ resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==}
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ strip-ansi: 6.0.1
+ wcwidth: 1.0.1
+ dev: true
+
+ /combined-stream/1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ delayed-stream: 1.0.0
+
+ /comma-separated-tokens/1.0.8:
+ resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==}
+ dev: false
+
+ /commander/2.20.3:
+ resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+
+ /commander/4.1.1:
+ resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
+ engines: {node: '>= 6'}
+
+ /commander/6.2.1:
+ resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==}
+ engines: {node: '>= 6'}
+ dev: false
+
+ /commander/7.2.0:
+ resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
+ engines: {node: '>= 10'}
+ dev: false
+
+ /commander/8.3.0:
+ resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
+ engines: {node: '>= 12'}
+ dev: false
+
+ /commander/9.4.0:
+ resolution: {integrity: sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==}
+ engines: {node: ^12.20.0 || >=14}
+ dev: true
+
+ /common-ancestor-path/1.0.1:
+ resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==}
+ dev: true
+
+ /common-path-prefix/3.0.0:
+ resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==}
+ dev: false
+
+ /common-tags/1.8.2:
+ resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==}
+ engines: {node: '>=4.0.0'}
+ dev: false
+
+ /commondir/1.0.1:
+ resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
+
+ /compare-func/2.0.0:
+ resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==}
+ dependencies:
+ array-ify: 1.0.0
+ dot-prop: 5.3.0
+ dev: true
+
+ /component-emitter/1.3.0:
+ resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==}
+ dev: false
+
+ /compressible/2.0.18:
+ resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ mime-db: 1.52.0
+ dev: false
+
+ /compression/1.7.4:
+ resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ accepts: 1.3.8
+ bytes: 3.0.0
+ compressible: 2.0.18
+ debug: 2.6.9
+ on-headers: 1.0.2
+ safe-buffer: 5.1.2
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /concat-map/0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ /concat-stream/1.6.2:
+ resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==}
+ engines: {'0': node >= 0.8}
+ dependencies:
+ buffer-from: 1.1.2
+ inherits: 2.0.4
+ readable-stream: 2.3.7
+ typedarray: 0.0.6
+ dev: false
+
+ /concat-stream/2.0.0:
+ resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==}
+ engines: {'0': node >= 6.0}
+ dependencies:
+ buffer-from: 1.1.2
+ inherits: 2.0.4
+ readable-stream: 3.6.0
+ typedarray: 0.0.6
+ dev: true
+
+ /concurrently/7.4.0:
+ resolution: {integrity: sha512-M6AfrueDt/GEna/Vg9BqQ+93yuvzkSKmoTixnwEJkH0LlcGrRC2eCmjeG1tLLHIYfpYJABokqSGyMcXjm96AFA==}
+ engines: {node: ^12.20.0 || ^14.13.0 || >=16.0.0}
+ hasBin: true
+ dependencies:
+ chalk: 4.1.2
+ date-fns: 2.29.3
+ lodash: 4.17.21
+ rxjs: 7.5.6
+ shell-quote: 1.7.4
+ spawn-command: 0.0.2-1
+ supports-color: 8.1.1
+ tree-kill: 1.2.2
+ yargs: 17.5.1
+ dev: true
+
+ /config-chain/1.1.13:
+ resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
+ dependencies:
+ ini: 1.3.8
+ proto-list: 1.2.4
+ dev: true
+
+ /confusing-browser-globals/1.0.11:
+ resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==}
+
+ /connect-history-api-fallback/2.0.0:
+ resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==}
+ engines: {node: '>=0.8'}
+ dev: false
+
+ /consola/2.15.3:
+ resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==}
+ dev: false
+
+ /console-browserify/1.2.0:
+ resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==}
+ dev: false
+
+ /console-control-strings/1.1.0:
+ resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
+
+ /constants-browserify/1.0.0:
+ resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==}
+ dev: false
+
+ /content-disposition/0.5.4:
+ resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ safe-buffer: 5.2.1
+ dev: false
+
+ /content-type/1.0.4:
+ resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /conventional-changelog-angular/5.0.13:
+ resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==}
+ engines: {node: '>=10'}
+ dependencies:
+ compare-func: 2.0.0
+ q: 1.5.1
+ dev: true
+
+ /conventional-changelog-conventionalcommits/5.0.0:
+ resolution: {integrity: sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==}
+ engines: {node: '>=10'}
+ dependencies:
+ compare-func: 2.0.0
+ lodash: 4.17.21
+ q: 1.5.1
+ dev: true
+
+ /conventional-changelog-core/4.2.4:
+ resolution: {integrity: sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==}
+ engines: {node: '>=10'}
+ dependencies:
+ add-stream: 1.0.0
+ conventional-changelog-writer: 5.0.1
+ conventional-commits-parser: 3.2.4
+ dateformat: 3.0.3
+ get-pkg-repo: 4.2.1
+ git-raw-commits: 2.0.11
+ git-remote-origin-url: 2.0.0
+ git-semver-tags: 4.1.1
+ lodash: 4.17.21
+ normalize-package-data: 3.0.3
+ q: 1.5.1
+ read-pkg: 3.0.0
+ read-pkg-up: 3.0.0
+ through2: 4.0.2
+ dev: true
+
+ /conventional-changelog-preset-loader/2.3.4:
+ resolution: {integrity: sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /conventional-changelog-writer/5.0.1:
+ resolution: {integrity: sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ conventional-commits-filter: 2.0.7
+ dateformat: 3.0.3
+ handlebars: 4.7.7
+ json-stringify-safe: 5.0.1
+ lodash: 4.17.21
+ meow: 8.1.2
+ semver: 6.3.0
+ split: 1.0.1
+ through2: 4.0.2
+ dev: true
+
+ /conventional-commits-filter/2.0.7:
+ resolution: {integrity: sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==}
+ engines: {node: '>=10'}
+ dependencies:
+ lodash.ismatch: 4.4.0
+ modify-values: 1.0.1
+ dev: true
+
+ /conventional-commits-parser/3.2.4:
+ resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ JSONStream: 1.3.5
+ is-text-path: 1.0.1
+ lodash: 4.17.21
+ meow: 8.1.2
+ split2: 3.2.2
+ through2: 4.0.2
+ dev: true
+
+ /conventional-recommended-bump/6.1.0:
+ resolution: {integrity: sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ concat-stream: 2.0.0
+ conventional-changelog-preset-loader: 2.3.4
+ conventional-commits-filter: 2.0.7
+ conventional-commits-parser: 3.2.4
+ git-raw-commits: 2.0.11
+ git-semver-tags: 4.1.1
+ meow: 8.1.2
+ q: 1.5.1
+ dev: true
+
+ /convert-source-map/1.8.0:
+ resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==}
+ dependencies:
+ safe-buffer: 5.1.2
+
+ /cookie-signature/1.0.6:
+ resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
+ dev: false
+
+ /cookie/0.5.0:
+ resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /copy-concurrently/1.0.5:
+ resolution: {integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==}
+ dependencies:
+ aproba: 1.2.0
+ fs-write-stream-atomic: 1.0.10
+ iferr: 0.1.5
+ mkdirp: 0.5.6
+ rimraf: 2.7.1
+ run-queue: 1.0.3
+ dev: false
+
+ /copy-descriptor/0.1.1:
+ resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /core-js-compat/3.25.5:
+ resolution: {integrity: sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==}
+ dependencies:
+ browserslist: 4.21.4
+ dev: false
+
+ /core-js-pure/3.25.2:
+ resolution: {integrity: sha512-ItD7YpW1cUB4jaqFLZXe1AXkyqIxz6GqPnsDV4uF4hVcWh/WAGIqSqw5p0/WdsILM0Xht9s3Koyw05R3K6RtiA==}
+ requiresBuild: true
+
+ /core-js/3.25.5:
+ resolution: {integrity: sha512-nbm6eZSjm+ZuBQxCUPQKQCoUEfFOXjUZ8dTTyikyKaWrTYmAVbykQfwsKE5dBK88u3QCkCrzsx/PPlKfhsvgpw==}
+ requiresBuild: true
+ dev: false
+
+ /core-util-is/1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+
+ /cors/2.8.5:
+ resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
+ engines: {node: '>= 0.10'}
+ dependencies:
+ object-assign: 4.1.1
+ vary: 1.1.2
+ dev: false
+
+ /corser/2.0.1:
+ resolution: {integrity: sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==}
+ engines: {node: '>= 0.4.0'}
+ dev: false
+
+ /cosmiconfig-typescript-loader/1.0.9_ckuzsfvalmw37utbiwmugbgu2e:
+ resolution: {integrity: sha512-tRuMRhxN4m1Y8hP9SNYfz7jRwt8lZdWxdjg/ohg5esKmsndJIn4yT96oJVcf5x0eA11taXl+sIp+ielu529k6g==}
+ engines: {node: '>=12', npm: '>=6'}
+ peerDependencies:
+ '@types/node': '*'
+ cosmiconfig: '>=7'
+ typescript: '>=3'
+ dependencies:
+ '@types/node': 18.11.9
+ cosmiconfig: 7.0.1
+ ts-node: 10.9.1_h6wsvvmh4l7tb54yk3ecr4mgtm
+ typescript: 4.8.3
+ transitivePeerDependencies:
+ - '@swc/core'
+ - '@swc/wasm'
+ dev: false
+
+ /cosmiconfig-typescript-loader/4.1.0_3owiowz3ujipd4k6pbqn3n7oui:
+ resolution: {integrity: sha512-HbWIuR5O+XO5Oj9SZ5bzgrD4nN+rfhrm2PMb0FVx+t+XIvC45n8F0oTNnztXtspWGw0i2IzHaUWFD5LzV1JB4A==}
+ engines: {node: '>=12', npm: '>=6'}
+ peerDependencies:
+ '@types/node': '*'
+ cosmiconfig: '>=7'
+ ts-node: '>=10'
+ typescript: '>=3'
+ dependencies:
+ '@types/node': 14.18.29
+ cosmiconfig: 7.0.1
+ ts-node: 10.9.1_ck2axrxkiif44rdbzjywaqjysa
+ typescript: 4.8.3
+ dev: true
+
+ /cosmiconfig/6.0.0:
+ resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@types/parse-json': 4.0.0
+ import-fresh: 3.3.0
+ parse-json: 5.2.0
+ path-type: 4.0.0
+ yaml: 1.10.2
+ dev: false
+
+ /cosmiconfig/7.0.1:
+ resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@types/parse-json': 4.0.0
+ import-fresh: 3.3.0
+ parse-json: 5.2.0
+ path-type: 4.0.0
+ yaml: 1.10.2
+
+ /cp-file/7.0.0:
+ resolution: {integrity: sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==}
+ engines: {node: '>=8'}
+ dependencies:
+ graceful-fs: 4.2.10
+ make-dir: 3.1.0
+ nested-error-stacks: 2.1.1
+ p-event: 4.2.0
+ dev: false
+
+ /cpy/8.1.2:
+ resolution: {integrity: sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg==}
+ engines: {node: '>=8'}
+ dependencies:
+ arrify: 2.0.1
+ cp-file: 7.0.0
+ globby: 9.2.0
+ has-glob: 1.0.0
+ junk: 3.1.0
+ nested-error-stacks: 2.1.1
+ p-all: 2.1.0
+ p-filter: 2.1.0
+ p-map: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /crc-32/1.2.2:
+ resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==}
+ engines: {node: '>=0.8'}
+ hasBin: true
+ dev: false
+
+ /create-ecdh/4.0.4:
+ resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==}
+ dependencies:
+ bn.js: 4.12.0
+ elliptic: 6.5.4
+ dev: false
+
+ /create-hash/1.2.0:
+ resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==}
+ dependencies:
+ cipher-base: 1.0.4
+ inherits: 2.0.4
+ md5.js: 1.3.5
+ ripemd160: 2.0.2
+ sha.js: 2.4.11
+ dev: false
+
+ /create-hmac/1.1.7:
+ resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==}
+ dependencies:
+ cipher-base: 1.0.4
+ create-hash: 1.2.0
+ inherits: 2.0.4
+ ripemd160: 2.0.2
+ safe-buffer: 5.2.1
+ sha.js: 2.4.11
+ dev: false
+
+ /create-require/1.1.1:
+ resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
+
+ /cross-env/7.0.3:
+ resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
+ engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
+ hasBin: true
+ dependencies:
+ cross-spawn: 7.0.3
+
+ /cross-spawn/6.0.5:
+ resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==}
+ engines: {node: '>=4.8'}
+ dependencies:
+ nice-try: 1.0.5
+ path-key: 2.0.1
+ semver: 5.7.1
+ shebang-command: 1.2.0
+ which: 1.3.1
+ dev: false
+
+ /cross-spawn/7.0.3:
+ resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+ engines: {node: '>= 8'}
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ /crypto-browserify/3.12.0:
+ resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==}
+ dependencies:
+ browserify-cipher: 1.0.1
+ browserify-sign: 4.2.1
+ create-ecdh: 4.0.4
+ create-hash: 1.2.0
+ create-hmac: 1.1.7
+ diffie-hellman: 5.0.3
+ inherits: 2.0.4
+ pbkdf2: 3.1.2
+ public-encrypt: 4.0.3
+ randombytes: 2.1.0
+ randomfill: 1.0.4
+ dev: false
+
+ /crypto-random-string/2.0.0:
+ resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /css-blank-pseudo/3.0.3_postcss@8.4.18:
+ resolution: {integrity: sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==}
+ engines: {node: ^12 || ^14 || >=16}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.4
+ dependencies:
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /css-color-keywords/1.0.0:
+ resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /css-declaration-sorter/6.3.1_postcss@8.4.18:
+ resolution: {integrity: sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==}
+ engines: {node: ^10 || ^12 || >=14}
+ peerDependencies:
+ postcss: ^8.0.9
+ dependencies:
+ postcss: 8.4.18
+ dev: false
+
+ /css-has-pseudo/3.0.4_postcss@8.4.18:
+ resolution: {integrity: sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==}
+ engines: {node: ^12 || ^14 || >=16}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.4
+ dependencies:
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /css-loader/3.6.0_webpack@4.46.0:
+ resolution: {integrity: sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==}
+ engines: {node: '>= 8.9.0'}
+ peerDependencies:
+ webpack: ^4.0.0 || ^5.0.0
+ dependencies:
+ camelcase: 5.3.1
+ cssesc: 3.0.0
+ icss-utils: 4.1.1
+ loader-utils: 1.4.0
+ normalize-path: 3.0.0
+ postcss: 7.0.39
+ postcss-modules-extract-imports: 2.0.0
+ postcss-modules-local-by-default: 3.0.3
+ postcss-modules-scope: 2.2.0
+ postcss-modules-values: 3.0.0
+ postcss-value-parser: 4.2.0
+ schema-utils: 2.7.1
+ semver: 6.3.0
+ webpack: 4.46.0
+ dev: false
+
+ /css-loader/6.7.1_webpack@5.74.0:
+ resolution: {integrity: sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==}
+ engines: {node: '>= 12.13.0'}
+ peerDependencies:
+ webpack: ^5.0.0
+ dependencies:
+ icss-utils: 5.1.0_postcss@8.4.18
+ postcss: 8.4.18
+ postcss-modules-extract-imports: 3.0.0_postcss@8.4.18
+ postcss-modules-local-by-default: 4.0.0_postcss@8.4.18
+ postcss-modules-scope: 3.0.0_postcss@8.4.18
+ postcss-modules-values: 4.0.0_postcss@8.4.18
+ postcss-value-parser: 4.2.0
+ semver: 7.3.7
+ webpack: 5.74.0
+ dev: false
+
+ /css-minimizer-webpack-plugin/3.4.1_webpack@5.74.0:
+ resolution: {integrity: sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==}
+ engines: {node: '>= 12.13.0'}
+ peerDependencies:
+ '@parcel/css': '*'
+ clean-css: '*'
+ csso: '*'
+ esbuild: '*'
+ webpack: ^5.0.0
+ peerDependenciesMeta:
+ '@parcel/css':
+ optional: true
+ clean-css:
+ optional: true
+ csso:
+ optional: true
+ esbuild:
+ optional: true
+ dependencies:
+ cssnano: 5.1.13_postcss@8.4.18
+ jest-worker: 27.5.1
+ postcss: 8.4.18
+ schema-utils: 4.0.0
+ serialize-javascript: 6.0.0
+ source-map: 0.6.1
+ webpack: 5.74.0
+ dev: false
+
+ /css-prefers-color-scheme/6.0.3_postcss@8.4.18:
+ resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==}
+ engines: {node: ^12 || ^14 || >=16}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.4
+ dependencies:
+ postcss: 8.4.18
+ dev: false
+
+ /css-select-base-adapter/0.1.1:
+ resolution: {integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==}
+ dev: false
+
+ /css-select/2.1.0:
+ resolution: {integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==}
+ dependencies:
+ boolbase: 1.0.0
+ css-what: 3.4.2
+ domutils: 1.7.0
+ nth-check: 1.0.2
+ dev: false
+
+ /css-select/4.3.0:
+ resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
+ dependencies:
+ boolbase: 1.0.0
+ css-what: 6.1.0
+ domhandler: 4.3.1
+ domutils: 2.8.0
+ nth-check: 2.1.1
+ dev: false
+
+ /css-to-react-native/3.0.0:
+ resolution: {integrity: sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==}
+ dependencies:
+ camelize: 1.0.1
+ css-color-keywords: 1.0.0
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /css-tree/1.0.0-alpha.37:
+ resolution: {integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==}
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ mdn-data: 2.0.4
+ source-map: 0.6.1
+ dev: false
+
+ /css-tree/1.1.3:
+ resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==}
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ mdn-data: 2.0.14
+ source-map: 0.6.1
+ dev: false
+
+ /css-what/3.4.2:
+ resolution: {integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==}
+ engines: {node: '>= 6'}
+ dev: false
+
+ /css-what/6.1.0:
+ resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
+ engines: {node: '>= 6'}
+ dev: false
+
+ /cssdb/7.0.2:
+ resolution: {integrity: sha512-Vm4b6P/PifADu0a76H0DKRNVWq3Rq9xa/Nx6oEMUBJlwTUuZoZ3dkZxo8Gob3UEL53Cq+Ma1GBgISed6XEBs3w==}
+ dev: false
+
+ /cssesc/3.0.0:
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: false
+
+ /cssnano-preset-default/5.2.12_postcss@8.4.18:
+ resolution: {integrity: sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ css-declaration-sorter: 6.3.1_postcss@8.4.18
+ cssnano-utils: 3.1.0_postcss@8.4.18
+ postcss: 8.4.18
+ postcss-calc: 8.2.4_postcss@8.4.18
+ postcss-colormin: 5.3.0_postcss@8.4.18
+ postcss-convert-values: 5.1.2_postcss@8.4.18
+ postcss-discard-comments: 5.1.2_postcss@8.4.18
+ postcss-discard-duplicates: 5.1.0_postcss@8.4.18
+ postcss-discard-empty: 5.1.1_postcss@8.4.18
+ postcss-discard-overridden: 5.1.0_postcss@8.4.18
+ postcss-merge-longhand: 5.1.6_postcss@8.4.18
+ postcss-merge-rules: 5.1.2_postcss@8.4.18
+ postcss-minify-font-values: 5.1.0_postcss@8.4.18
+ postcss-minify-gradients: 5.1.1_postcss@8.4.18
+ postcss-minify-params: 5.1.3_postcss@8.4.18
+ postcss-minify-selectors: 5.2.1_postcss@8.4.18
+ postcss-normalize-charset: 5.1.0_postcss@8.4.18
+ postcss-normalize-display-values: 5.1.0_postcss@8.4.18
+ postcss-normalize-positions: 5.1.1_postcss@8.4.18
+ postcss-normalize-repeat-style: 5.1.1_postcss@8.4.18
+ postcss-normalize-string: 5.1.0_postcss@8.4.18
+ postcss-normalize-timing-functions: 5.1.0_postcss@8.4.18
+ postcss-normalize-unicode: 5.1.0_postcss@8.4.18
+ postcss-normalize-url: 5.1.0_postcss@8.4.18
+ postcss-normalize-whitespace: 5.1.1_postcss@8.4.18
+ postcss-ordered-values: 5.1.3_postcss@8.4.18
+ postcss-reduce-initial: 5.1.0_postcss@8.4.18
+ postcss-reduce-transforms: 5.1.0_postcss@8.4.18
+ postcss-svgo: 5.1.0_postcss@8.4.18
+ postcss-unique-selectors: 5.1.1_postcss@8.4.18
+ dev: false
+
+ /cssnano-utils/3.1.0_postcss@8.4.18:
+ resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.18
+ dev: false
+
+ /cssnano/5.1.13_postcss@8.4.18:
+ resolution: {integrity: sha512-S2SL2ekdEz6w6a2epXn4CmMKU4K3KpcyXLKfAYc9UQQqJRkD/2eLUG0vJ3Db/9OvO5GuAdgXw3pFbR6abqghDQ==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ cssnano-preset-default: 5.2.12_postcss@8.4.18
+ lilconfig: 2.0.6
+ postcss: 8.4.18
+ yaml: 1.10.2
+ dev: false
+
+ /csso/4.2.0:
+ resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==}
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ css-tree: 1.1.3
+ dev: false
+
+ /cssom/0.3.8:
+ resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==}
+ dev: false
+
+ /cssom/0.4.4:
+ resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==}
+ dev: false
+
+ /cssstyle/2.3.0:
+ resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==}
+ engines: {node: '>=8'}
+ dependencies:
+ cssom: 0.3.8
+ dev: false
+
+ /csstype/3.0.9:
+ resolution: {integrity: sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==}
+ dev: false
+
+ /csstype/3.1.1:
+ resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==}
+
+ /currently-unhandled/0.4.1:
+ resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ array-find-index: 1.0.2
+ dev: false
+ optional: true
+
+ /cyclist/1.0.1:
+ resolution: {integrity: sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==}
+ dev: false
+
+ /damerau-levenshtein/1.0.8:
+ resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
+
+ /dargs/7.0.0:
+ resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /data-urls/2.0.0:
+ resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ abab: 2.0.6
+ whatwg-mimetype: 2.3.0
+ whatwg-url: 8.7.0
+ dev: false
+
+ /date-fns/2.29.3:
+ resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==}
+ engines: {node: '>=0.11'}
+ dev: true
+
+ /dateformat/3.0.3:
+ resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==}
+ dev: true
+
+ /debug/2.6.9:
+ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.0.0
+
+ /debug/3.2.7:
+ resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.3
+
+ /debug/3.2.7_supports-color@5.5.0:
+ resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.3
+ supports-color: 5.5.0
+ dev: true
+
+ /debug/4.3.4:
+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.2
+
+ /debug/4.3.4_supports-color@5.5.0:
+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.2
+ supports-color: 5.5.0
+ dev: false
+
+ /debug/4.3.4_supports-color@8.1.1:
+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.2
+ supports-color: 8.1.1
+ dev: true
+
+ /debuglog/1.0.1:
+ resolution: {integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==}
+ dev: true
+
+ /decamelize-keys/1.1.0:
+ resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ decamelize: 1.2.0
+ map-obj: 1.0.1
+ dev: true
+
+ /decamelize/1.2.0:
+ resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
+ engines: {node: '>=0.10.0'}
+
+ /decamelize/4.0.0:
+ resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /decimal.js/10.4.2:
+ resolution: {integrity: sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==}
+ dev: false
+
+ /decode-uri-component/0.2.0:
+ resolution: {integrity: sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==}
+ engines: {node: '>=0.10'}
+ dev: false
+
+ /dedent/0.7.0:
+ resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==}
+
+ /deep-eql/4.1.2:
+ resolution: {integrity: sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w==}
+ engines: {node: '>=6'}
+ dependencies:
+ type-detect: 4.0.8
+ dev: true
+
+ /deep-is/0.1.4:
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+
+ /deepmerge-ts/4.2.2:
+ resolution: {integrity: sha512-Ka3Kb21tiWjvQvS9U+1Dx+aqFAHsdTnMdYptLTmC2VAmDFMugWMY1e15aTODstipmCun8iNuqeSfcx6rsUUk0Q==}
+ engines: {node: '>=12.4.0'}
+ dev: true
+
+ /deepmerge/4.2.2:
+ resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==}
+ engines: {node: '>=0.10.0'}
+
+ /default-browser-id/1.0.4:
+ resolution: {integrity: sha512-qPy925qewwul9Hifs+3sx1ZYn14obHxpkX+mPD369w4Rzg+YkJBgi3SOvwUq81nWSjqGUegIgEPwD8u+HUnxlw==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+ requiresBuild: true
+ dependencies:
+ bplist-parser: 0.1.1
+ meow: 3.7.0
+ untildify: 2.1.0
+ dev: false
+ optional: true
+
+ /default-gateway/6.0.3:
+ resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==}
+ engines: {node: '>= 10'}
+ dependencies:
+ execa: 5.1.1
+ dev: false
+
+ /defaults/1.0.4:
+ resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
+ dependencies:
+ clone: 1.0.4
+ dev: true
+
+ /define-lazy-prop/2.0.0:
+ resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
+ engines: {node: '>=8'}
+
+ /define-properties/1.1.4:
+ resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-property-descriptors: 1.0.0
+ object-keys: 1.1.1
+
+ /define-property/0.2.5:
+ resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-descriptor: 0.1.6
+ dev: false
+
+ /define-property/1.0.0:
+ resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-descriptor: 1.0.2
+ dev: false
+
+ /define-property/2.0.2:
+ resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-descriptor: 1.0.2
+ isobject: 3.0.1
+ dev: false
+
+ /defined/1.0.1:
+ resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==}
+ dev: false
+
+ /delayed-stream/1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+
+ /delegates/1.0.0:
+ resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
+
+ /denque/2.1.0:
+ resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==}
+ engines: {node: '>=0.10'}
+ dev: false
+
+ /depd/1.1.2:
+ resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==}
+ engines: {node: '>= 0.6'}
+
+ /depd/2.0.0:
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
+ /deprecation/2.3.1:
+ resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==}
+ dev: true
+
+ /des.js/1.0.1:
+ resolution: {integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==}
+ dependencies:
+ inherits: 2.0.4
+ minimalistic-assert: 1.0.1
+ dev: false
+
+ /destroy/1.2.0:
+ resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+ dev: false
+
+ /detab/2.0.4:
+ resolution: {integrity: sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==}
+ dependencies:
+ repeat-string: 1.6.1
+ dev: false
+
+ /detect-indent/5.0.0:
+ resolution: {integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /detect-indent/6.1.0:
+ resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /detect-newline/3.1.0:
+ resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
+ engines: {node: '>=8'}
+
+ /detect-node/2.1.0:
+ resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
+ dev: false
+
+ /detect-package-manager/2.0.1:
+ resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==}
+ engines: {node: '>=12'}
+ dependencies:
+ execa: 5.1.1
+ dev: false
+
+ /detect-port-alt/1.1.6:
+ resolution: {integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==}
+ engines: {node: '>= 4.2.1'}
+ hasBin: true
+ dependencies:
+ address: 1.1.2
+ debug: 2.6.9
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /detect-port/1.5.1:
+ resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==}
+ hasBin: true
+ dependencies:
+ address: 1.1.2
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /detective/5.2.1:
+ resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==}
+ engines: {node: '>=0.8.0'}
+ hasBin: true
+ dependencies:
+ acorn-node: 1.8.2
+ defined: 1.0.1
+ minimist: 1.2.6
+ dev: false
+
+ /dezalgo/1.0.4:
+ resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==}
+ dependencies:
+ asap: 2.0.6
+ wrappy: 1.0.2
+ dev: true
+
+ /didyoumean/1.2.2:
+ resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
+ dev: false
+
+ /diff-sequences/27.5.1:
+ resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dev: false
+
+ /diff-sequences/28.1.1:
+ resolution: {integrity: sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dev: true
+
+ /diff/4.0.2:
+ resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
+ engines: {node: '>=0.3.1'}
+
+ /diff/5.0.0:
+ resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==}
+ engines: {node: '>=0.3.1'}
+ dev: true
+
+ /diffie-hellman/5.0.3:
+ resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==}
+ dependencies:
+ bn.js: 4.12.0
+ miller-rabin: 4.0.1
+ randombytes: 2.1.0
+ dev: false
+
+ /dir-glob/2.2.2:
+ resolution: {integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==}
+ engines: {node: '>=4'}
+ dependencies:
+ path-type: 3.0.0
+ dev: false
+
+ /dir-glob/3.0.1:
+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
+ engines: {node: '>=8'}
+ dependencies:
+ path-type: 4.0.0
+
+ /dlv/1.1.3:
+ resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
+ dev: false
+
+ /dns-equal/1.0.0:
+ resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==}
+ dev: false
+
+ /dns-packet/5.4.0:
+ resolution: {integrity: sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==}
+ engines: {node: '>=6'}
+ dependencies:
+ '@leichtgewicht/ip-codec': 2.0.4
+ dev: false
+
+ /doctrine/2.1.0:
+ resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ esutils: 2.0.3
+
+ /doctrine/3.0.0:
+ resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ esutils: 2.0.3
+
+ /dom-converter/0.2.0:
+ resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==}
+ dependencies:
+ utila: 0.4.0
+ dev: false
+
+ /dom-helpers/5.2.1:
+ resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
+ dependencies:
+ '@babel/runtime': 7.19.0
+ csstype: 3.1.1
+ dev: false
+
+ /dom-serializer/0.2.2:
+ resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==}
+ dependencies:
+ domelementtype: 2.3.0
+ entities: 2.2.0
+ dev: false
+
+ /dom-serializer/1.4.1:
+ resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
+ dependencies:
+ domelementtype: 2.3.0
+ domhandler: 4.3.1
+ entities: 2.2.0
+ dev: false
+
+ /dom-walk/0.1.2:
+ resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==}
+ dev: false
+
+ /domain-browser/1.2.0:
+ resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==}
+ engines: {node: '>=0.4', npm: '>=1.2'}
+ dev: false
+
+ /domelementtype/1.3.1:
+ resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==}
+ dev: false
+
+ /domelementtype/2.3.0:
+ resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
+ dev: false
+
+ /domexception/2.0.1:
+ resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==}
+ engines: {node: '>=8'}
+ dependencies:
+ webidl-conversions: 5.0.0
+ dev: false
+
+ /domhandler/4.3.1:
+ resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
+ engines: {node: '>= 4'}
+ dependencies:
+ domelementtype: 2.3.0
+ dev: false
+
+ /domutils/1.7.0:
+ resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==}
+ dependencies:
+ dom-serializer: 0.2.2
+ domelementtype: 1.3.1
+ dev: false
+
+ /domutils/2.8.0:
+ resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
+ dependencies:
+ dom-serializer: 1.4.1
+ domelementtype: 2.3.0
+ domhandler: 4.3.1
+ dev: false
+
+ /dot-case/3.0.4:
+ resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.4.0
+ dev: false
+
+ /dot-prop/5.3.0:
+ resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==}
+ engines: {node: '>=8'}
+ dependencies:
+ is-obj: 2.0.0
+ dev: true
+
+ /dot-prop/6.0.1:
+ resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==}
+ engines: {node: '>=10'}
+ dependencies:
+ is-obj: 2.0.0
+ dev: true
+
+ /dotenv-expand/5.1.0:
+ resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==}
+ dev: false
+
+ /dotenv/10.0.0:
+ resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==}
+ engines: {node: '>=10'}
+
+ /dotenv/16.0.2:
+ resolution: {integrity: sha512-JvpYKUmzQhYoIFgK2MOnF3bciIZoItIIoryihy0rIA+H4Jy0FmgyKYAHCTN98P5ybGSJcIFbh6QKeJdtZd1qhA==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /dotenv/8.6.0:
+ resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /duplexer/0.1.2:
+ resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
+
+ /duplexify/3.7.1:
+ resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==}
+ dependencies:
+ end-of-stream: 1.4.4
+ inherits: 2.0.4
+ readable-stream: 2.3.7
+ stream-shift: 1.0.1
+ dev: false
+
+ /eastasianwidth/0.2.0:
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+ dev: true
+
+ /ee-first/1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+ dev: false
+
+ /ejs/3.1.8:
+ resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+ dependencies:
+ jake: 10.8.5
+
+ /electron-to-chromium/1.4.258:
+ resolution: {integrity: sha512-vutF4q0dTUXoAFI7Vbtdwen/BJVwPgj8GRg/SElOodfH7VTX+svUe62A5BG41QRQGk5HsZPB0M++KH1lAlOt0A==}
+
+ /elliptic/6.5.4:
+ resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==}
+ dependencies:
+ bn.js: 4.12.0
+ brorand: 1.1.0
+ hash.js: 1.1.7
+ hmac-drbg: 1.0.1
+ inherits: 2.0.4
+ minimalistic-assert: 1.0.1
+ minimalistic-crypto-utils: 1.0.1
+ dev: false
+
+ /emittery/0.10.2:
+ resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==}
+ engines: {node: '>=12'}
+
+ /emittery/0.8.1:
+ resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /emoji-regex/8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ /emoji-regex/9.2.2:
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+
+ /emojis-list/3.0.0:
+ resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
+ engines: {node: '>= 4'}
+
+ /encodeurl/1.0.2:
+ resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
+ /encoding/0.1.13:
+ resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==}
+ requiresBuild: true
+ dependencies:
+ iconv-lite: 0.6.3
+ dev: true
+ optional: true
+
+ /end-of-stream/1.4.4:
+ resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
+ dependencies:
+ once: 1.4.0
+
+ /endent/2.1.0:
+ resolution: {integrity: sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==}
+ dependencies:
+ dedent: 0.7.0
+ fast-json-parse: 1.0.3
+ objectorarray: 1.0.5
+ dev: false
+
+ /enhanced-resolve/4.5.0:
+ resolution: {integrity: sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ graceful-fs: 4.2.10
+ memory-fs: 0.5.0
+ tapable: 1.1.3
+ dev: false
+
+ /enhanced-resolve/5.10.0:
+ resolution: {integrity: sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==}
+ engines: {node: '>=10.13.0'}
+ dependencies:
+ graceful-fs: 4.2.10
+ tapable: 2.2.1
+
+ /enquirer/2.3.6:
+ resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==}
+ engines: {node: '>=8.6'}
+ dependencies:
+ ansi-colors: 4.1.3
+ dev: true
+
+ /entities/2.2.0:
+ resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
+ dev: false
+
+ /env-paths/2.2.1:
+ resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /envalid/7.3.1:
+ resolution: {integrity: sha512-KL1YRwn8WcoF/Ty7t+yLLtZol01xr9ZJMTjzoGRM8NaSU+nQQjSWOQKKJhJP2P57bpdakJ9jbxqQX4fGTOicZg==}
+ engines: {node: '>=8.12'}
+ dependencies:
+ tslib: 2.3.1
+ dev: false
+
+ /envinfo/7.8.1:
+ resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
+ /err-code/2.0.3:
+ resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==}
+ dev: true
+
+ /errno/0.1.8:
+ resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
+ hasBin: true
+ dependencies:
+ prr: 1.0.1
+ dev: false
+
+ /error-ex/1.3.2:
+ resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
+ dependencies:
+ is-arrayish: 0.2.1
+
+ /error-stack-parser/2.1.4:
+ resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==}
+ dependencies:
+ stackframe: 1.3.4
+ dev: false
+
+ /es-abstract/1.20.3:
+ resolution: {integrity: sha512-AyrnaKVpMzljIdwjzrj+LxGmj8ik2LckwXacHqrJJ/jxz6dDDBcZ7I7nlHM0FvEW8MfbWJwOd+yT2XzYW49Frw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ es-to-primitive: 1.2.1
+ function-bind: 1.1.1
+ function.prototype.name: 1.1.5
+ get-intrinsic: 1.1.3
+ get-symbol-description: 1.0.0
+ has: 1.0.3
+ has-property-descriptors: 1.0.0
+ has-symbols: 1.0.3
+ internal-slot: 1.0.3
+ is-callable: 1.2.6
+ is-negative-zero: 2.0.2
+ is-regex: 1.1.4
+ is-shared-array-buffer: 1.0.2
+ is-string: 1.0.7
+ is-weakref: 1.0.2
+ object-inspect: 1.12.2
+ object-keys: 1.1.1
+ object.assign: 4.1.4
+ regexp.prototype.flags: 1.4.3
+ safe-regex-test: 1.0.0
+ string.prototype.trimend: 1.0.5
+ string.prototype.trimstart: 1.0.5
+ unbox-primitive: 1.0.2
+
+ /es-array-method-boxes-properly/1.0.0:
+ resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==}
+ dev: false
+
+ /es-get-iterator/1.1.2:
+ resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==}
+ 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
+ dev: false
+
+ /es-module-lexer/0.9.3:
+ resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==}
+
+ /es-shim-unscopables/1.0.0:
+ resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==}
+ dependencies:
+ has: 1.0.3
+
+ /es-to-primitive/1.2.1:
+ resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-callable: 1.2.6
+ is-date-object: 1.0.5
+ is-symbol: 1.0.4
+
+ /es5-shim/4.6.7:
+ resolution: {integrity: sha512-jg21/dmlrNQI7JyyA2w7n+yifSxBng0ZralnSfVZjoCawgNTCnS+yBCyVM9DL5itm7SUnDGgv7hcq2XCZX4iRQ==}
+ engines: {node: '>=0.4.0'}
+ dev: false
+
+ /es6-shim/0.35.6:
+ resolution: {integrity: sha512-EmTr31wppcaIAgblChZiuN/l9Y7DPyw8Xtbg7fIVngn6zMW+IEBJDJngeKC3x6wr0V/vcA2wqeFnaw1bFJbDdA==}
+ dev: false
+
+ /esbuild-android-64/0.15.13:
+ resolution: {integrity: sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-android-arm64/0.15.13:
+ resolution: {integrity: sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-darwin-64/0.15.13:
+ resolution: {integrity: sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-darwin-arm64/0.15.13:
+ resolution: {integrity: sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-freebsd-64/0.15.13:
+ resolution: {integrity: sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-freebsd-arm64/0.15.13:
+ resolution: {integrity: sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-32/0.15.13:
+ resolution: {integrity: sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-64/0.15.13:
+ resolution: {integrity: sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-arm/0.15.13:
+ resolution: {integrity: sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-arm64/0.15.13:
+ resolution: {integrity: sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-mips64le/0.15.13:
+ resolution: {integrity: sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-ppc64le/0.15.13:
+ resolution: {integrity: sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-riscv64/0.15.13:
+ resolution: {integrity: sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-s390x/0.15.13:
+ resolution: {integrity: sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-netbsd-64/0.15.13:
+ resolution: {integrity: sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-openbsd-64/0.15.13:
+ resolution: {integrity: sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-sunos-64/0.15.13:
+ resolution: {integrity: sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-windows-32/0.15.13:
+ resolution: {integrity: sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-windows-64/0.15.13:
+ resolution: {integrity: sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-windows-arm64/0.15.13:
+ resolution: {integrity: sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild/0.15.13:
+ resolution: {integrity: sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ '@esbuild/android-arm': 0.15.13
+ '@esbuild/linux-loong64': 0.15.13
+ esbuild-android-64: 0.15.13
+ esbuild-android-arm64: 0.15.13
+ esbuild-darwin-64: 0.15.13
+ esbuild-darwin-arm64: 0.15.13
+ esbuild-freebsd-64: 0.15.13
+ esbuild-freebsd-arm64: 0.15.13
+ esbuild-linux-32: 0.15.13
+ esbuild-linux-64: 0.15.13
+ esbuild-linux-arm: 0.15.13
+ esbuild-linux-arm64: 0.15.13
+ esbuild-linux-mips64le: 0.15.13
+ esbuild-linux-ppc64le: 0.15.13
+ esbuild-linux-riscv64: 0.15.13
+ esbuild-linux-s390x: 0.15.13
+ esbuild-netbsd-64: 0.15.13
+ esbuild-openbsd-64: 0.15.13
+ esbuild-sunos-64: 0.15.13
+ esbuild-windows-32: 0.15.13
+ esbuild-windows-64: 0.15.13
+ esbuild-windows-arm64: 0.15.13
+ dev: true
+
+ /escalade/3.1.1:
+ resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
+ engines: {node: '>=6'}
+
+ /escape-html/1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+ dev: false
+
+ /escape-string-regexp/1.0.5:
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+ engines: {node: '>=0.8.0'}
+
+ /escape-string-regexp/2.0.0:
+ resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
+ engines: {node: '>=8'}
+
+ /escape-string-regexp/4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+
+ /escodegen/2.0.0:
+ resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==}
+ engines: {node: '>=6.0'}
+ hasBin: true
+ dependencies:
+ esprima: 4.0.1
+ estraverse: 5.3.0
+ esutils: 2.0.3
+ optionator: 0.8.3
+ optionalDependencies:
+ source-map: 0.6.1
+ dev: false
+
+ /eslint-config-airbnb-base/15.0.0_hdzsmr7kawaomymueo2tso6fjq:
+ resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ peerDependencies:
+ eslint: ^7.32.0 || ^8.2.0
+ eslint-plugin-import: ^2.25.2
+ dependencies:
+ confusing-browser-globals: 1.0.11
+ eslint: 8.23.1
+ eslint-plugin-import: 2.26.0_cxqatnnjiq7ozd2bkspxnuicdq
+ object.assign: 4.1.4
+ object.entries: 1.1.5
+ semver: 6.3.0
+ dev: true
+
+ /eslint-config-airbnb-typescript/17.0.0_j57hrpt2hfp47otngkwtnuyxpa:
+ resolution: {integrity: sha512-elNiuzD0kPAPTXjFWg+lE24nMdHMtuxgYoD30OyMD6yrW1AhFZPAg27VX7d3tzOErw+dgJTNWfRSDqEcXb4V0g==}
+ peerDependencies:
+ '@typescript-eslint/eslint-plugin': ^5.13.0
+ '@typescript-eslint/parser': ^5.0.0
+ eslint: ^7.32.0 || ^8.2.0
+ eslint-plugin-import: ^2.25.3
+ dependencies:
+ '@typescript-eslint/eslint-plugin': 5.38.0_cyfvnejbgixxanpg7blnp3e3zi
+ '@typescript-eslint/parser': 5.38.0_abkyjrvwkq25uefwggm6hc3u2a
+ eslint: 8.23.1
+ eslint-config-airbnb-base: 15.0.0_hdzsmr7kawaomymueo2tso6fjq
+ eslint-plugin-import: 2.26.0_cxqatnnjiq7ozd2bkspxnuicdq
+ dev: true
+
+ /eslint-config-prettier/8.5.0_eslint@8.23.1:
+ resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==}
+ hasBin: true
+ peerDependencies:
+ eslint: '>=7.0.0'
+ dependencies:
+ eslint: 8.23.1
+ dev: true
+
+ /eslint-config-react-app/7.0.1_ep5hkfurrjf46kbnkcej3benz4:
+ resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ eslint: ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/eslint-parser': 7.19.1_yw5cbkfc5c3v6frlo27uixp7pm
+ '@rushstack/eslint-patch': 1.2.0
+ '@typescript-eslint/eslint-plugin': 5.38.0_wsb62dxj2oqwgas4kadjymcmry
+ '@typescript-eslint/parser': 5.38.0_irgkl5vooow2ydyo6aokmferha
+ babel-preset-react-app: 10.0.1
+ confusing-browser-globals: 1.0.11
+ eslint: 8.23.1
+ eslint-plugin-flowtype: 8.0.3_yb7llsfoad77a2vx2os7pgkvmi
+ eslint-plugin-import: 2.26.0_cxqatnnjiq7ozd2bkspxnuicdq
+ eslint-plugin-jest: 25.7.0_hpujes4m5fznz335nz2hgbshme
+ eslint-plugin-jsx-a11y: 6.6.1_eslint@8.23.1
+ eslint-plugin-react: 7.31.8_eslint@8.23.1
+ eslint-plugin-react-hooks: 4.6.0_eslint@8.23.1
+ eslint-plugin-testing-library: 5.9.0_irgkl5vooow2ydyo6aokmferha
+ typescript: 4.8.3
+ transitivePeerDependencies:
+ - '@babel/plugin-syntax-flow'
+ - '@babel/plugin-transform-react-jsx'
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - jest
+ - supports-color
+ dev: false
+
+ /eslint-import-resolver-node/0.3.6:
+ resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==}
+ dependencies:
+ debug: 3.2.7
+ resolve: 1.22.1
+ transitivePeerDependencies:
+ - supports-color
+
+ /eslint-module-utils/2.7.4_p4kveujfv4nmzmj4mix5hvnxlm:
+ resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: '*'
+ eslint-import-resolver-node: '*'
+ eslint-import-resolver-typescript: '*'
+ eslint-import-resolver-webpack: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ eslint:
+ optional: true
+ eslint-import-resolver-node:
+ optional: true
+ eslint-import-resolver-typescript:
+ optional: true
+ eslint-import-resolver-webpack:
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 5.38.0_abkyjrvwkq25uefwggm6hc3u2a
+ debug: 3.2.7
+ eslint: 8.23.1
+ eslint-import-resolver-node: 0.3.6
+ transitivePeerDependencies:
+ - supports-color
+
+ /eslint-plugin-eslint-comments/3.2.0_eslint@8.23.1:
+ resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==}
+ engines: {node: '>=6.5.0'}
+ peerDependencies:
+ eslint: '>=4.19.1'
+ dependencies:
+ escape-string-regexp: 1.0.5
+ eslint: 8.23.1
+ ignore: 5.2.0
+ dev: true
+
+ /eslint-plugin-flowtype/8.0.3_yb7llsfoad77a2vx2os7pgkvmi:
+ resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==}
+ 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
+ dependencies:
+ '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.19.6
+ '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.6
+ eslint: 8.23.1
+ lodash: 4.17.21
+ string-natural-compare: 3.0.1
+ dev: false
+
+ /eslint-plugin-functional/4.4.0_abkyjrvwkq25uefwggm6hc3u2a:
+ resolution: {integrity: sha512-DY/Iax9knIgzvxhVeSe+KoF9e4imLvzCvUEN1a+bWciDiBi3s1CG/1fw7AQVXoAqoNw9eYuP7C2u3OtHzMFy+A==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^8.0.0
+ tsutils: ^3.0.0
+ typescript: ^3.4.1 || ^4.0.0
+ peerDependenciesMeta:
+ tsutils:
+ optional: true
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/utils': 5.38.0_abkyjrvwkq25uefwggm6hc3u2a
+ deepmerge-ts: 4.2.2
+ escape-string-regexp: 4.0.0
+ eslint: 8.23.1
+ semver: 7.3.7
+ typescript: 4.8.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /eslint-plugin-import/2.26.0_cxqatnnjiq7ozd2bkspxnuicdq:
+ resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 5.38.0_abkyjrvwkq25uefwggm6hc3u2a
+ array-includes: 3.1.5
+ array.prototype.flat: 1.3.0
+ debug: 2.6.9
+ doctrine: 2.1.0
+ eslint: 8.23.1
+ eslint-import-resolver-node: 0.3.6
+ eslint-module-utils: 2.7.4_p4kveujfv4nmzmj4mix5hvnxlm
+ has: 1.0.3
+ is-core-module: 2.10.0
+ is-glob: 4.0.3
+ minimatch: 3.1.2
+ object.values: 1.1.5
+ resolve: 1.22.1
+ tsconfig-paths: 3.14.1
+ transitivePeerDependencies:
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+
+ /eslint-plugin-jest/25.7.0_hpujes4m5fznz335nz2hgbshme:
+ resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==}
+ 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
+ jest: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/eslint-plugin':
+ optional: true
+ jest:
+ optional: true
+ dependencies:
+ '@typescript-eslint/eslint-plugin': 5.38.0_wsb62dxj2oqwgas4kadjymcmry
+ '@typescript-eslint/experimental-utils': 5.40.1_irgkl5vooow2ydyo6aokmferha
+ eslint: 8.23.1
+ jest: 27.5.1
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: false
+
+ /eslint-plugin-jsx-a11y/6.6.1_eslint@8.23.1:
+ resolution: {integrity: sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
+ dependencies:
+ '@babel/runtime': 7.19.0
+ aria-query: 4.2.2
+ array-includes: 3.1.5
+ ast-types-flow: 0.0.7
+ axe-core: 4.4.3
+ axobject-query: 2.2.0
+ damerau-levenshtein: 1.0.8
+ emoji-regex: 9.2.2
+ eslint: 8.23.1
+ has: 1.0.3
+ jsx-ast-utils: 3.3.3
+ language-tags: 1.0.5
+ minimatch: 3.1.2
+ semver: 6.3.0
+
+ /eslint-plugin-prettier/4.2.1_cabrci5exjdaojcvd6xoxgeowu:
+ resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ eslint: '>=7.28.0'
+ eslint-config-prettier: '*'
+ prettier: '>=2.0.0'
+ peerDependenciesMeta:
+ eslint-config-prettier:
+ optional: true
+ dependencies:
+ eslint: 8.23.1
+ eslint-config-prettier: 8.5.0_eslint@8.23.1
+ prettier: 2.7.1
+ prettier-linter-helpers: 1.0.0
+ dev: true
+
+ /eslint-plugin-prettier/4.2.1_lpvhfrfofky3e6gkwtrv5gvhfa:
+ resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ eslint: '>=7.28.0'
+ eslint-config-prettier: '*'
+ prettier: '>=2.0.0'
+ peerDependenciesMeta:
+ eslint-config-prettier:
+ optional: true
+ dependencies:
+ eslint: 8.23.1
+ prettier: 2.7.1
+ prettier-linter-helpers: 1.0.0
+ dev: true
+
+ /eslint-plugin-promise/6.0.1_eslint@8.23.1:
+ resolution: {integrity: sha512-uM4Tgo5u3UWQiroOyDEsYcVMOo7re3zmno0IZmB5auxoaQNIceAbXEkSt8RNrKtaYehARHG06pYK6K1JhtP0Zw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ dependencies:
+ eslint: 8.23.1
+ dev: true
+
+ /eslint-plugin-react-hooks/4.6.0_eslint@8.23.1:
+ resolution: {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
+ dependencies:
+ eslint: 8.23.1
+
+ /eslint-plugin-react/7.31.8_eslint@8.23.1:
+ resolution: {integrity: sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
+ dependencies:
+ array-includes: 3.1.5
+ array.prototype.flatmap: 1.3.0
+ doctrine: 2.1.0
+ eslint: 8.23.1
+ estraverse: 5.3.0
+ jsx-ast-utils: 3.3.3
+ minimatch: 3.1.2
+ object.entries: 1.1.5
+ object.fromentries: 2.0.5
+ object.hasown: 1.1.1
+ object.values: 1.1.5
+ prop-types: 15.8.1
+ resolve: 2.0.0-next.4
+ semver: 6.3.0
+ string.prototype.matchall: 4.0.7
+
+ /eslint-plugin-testing-library/5.9.0_irgkl5vooow2ydyo6aokmferha:
+ resolution: {integrity: sha512-iwPz6KNf/qc4rHMGaxn2vmS5snzuOqtia00D0FC2Wcp1xWM3J9w0/YzzrPv/UFHhLG0CwfQodyKmqL5+c6hGgg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'}
+ peerDependencies:
+ eslint: ^7.5.0 || ^8.0.0
+ dependencies:
+ '@typescript-eslint/utils': 5.38.0_irgkl5vooow2ydyo6aokmferha
+ eslint: 8.23.1
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: false
+
+ /eslint-scope/4.0.3:
+ resolution: {integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==}
+ engines: {node: '>=4.0.0'}
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 4.3.0
+ dev: false
+
+ /eslint-scope/5.1.1:
+ resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 4.3.0
+
+ /eslint-scope/7.1.1:
+ resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+
+ /eslint-utils/3.0.0_eslint@8.23.1:
+ resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
+ engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
+ peerDependencies:
+ eslint: '>=5'
+ dependencies:
+ eslint: 8.23.1
+ eslint-visitor-keys: 2.1.0
+
+ /eslint-visitor-keys/2.1.0:
+ resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
+ engines: {node: '>=10'}
+
+ /eslint-visitor-keys/3.3.0:
+ resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ /eslint-webpack-plugin/3.2.0_cnsurwdbw57xgwxuf5k544xt5e:
+ resolution: {integrity: sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==}
+ engines: {node: '>= 12.13.0'}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ webpack: ^5.0.0
+ dependencies:
+ '@types/eslint': 8.4.6
+ eslint: 8.23.1
+ jest-worker: 28.1.3
+ micromatch: 4.0.5
+ normalize-path: 3.0.0
+ schema-utils: 4.0.0
+ webpack: 5.74.0
+ dev: false
+
+ /eslint/8.23.1:
+ resolution: {integrity: sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ hasBin: true
+ dependencies:
+ '@eslint/eslintrc': 1.3.2
+ '@humanwhocodes/config-array': 0.10.5
+ '@humanwhocodes/gitignore-to-minimatch': 1.0.2
+ '@humanwhocodes/module-importer': 1.0.1
+ ajv: 6.12.6
+ chalk: 4.1.2
+ cross-spawn: 7.0.3
+ debug: 4.3.4
+ doctrine: 3.0.0
+ escape-string-regexp: 4.0.0
+ eslint-scope: 7.1.1
+ eslint-utils: 3.0.0_eslint@8.23.1
+ eslint-visitor-keys: 3.3.0
+ espree: 9.4.0
+ esquery: 1.4.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 6.0.1
+ find-up: 5.0.0
+ glob-parent: 6.0.2
+ globals: 13.17.0
+ globby: 11.1.0
+ grapheme-splitter: 1.0.4
+ ignore: 5.2.0
+ import-fresh: 3.3.0
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ js-sdsl: 4.1.4
+ 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.1
+ regexpp: 3.2.0
+ strip-ansi: 6.0.1
+ strip-json-comments: 3.1.1
+ text-table: 0.2.0
+ transitivePeerDependencies:
+ - supports-color
+
+ /espree/9.4.0:
+ resolution: {integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ acorn: 8.8.0
+ acorn-jsx: 5.3.2_acorn@8.8.0
+ eslint-visitor-keys: 3.3.0
+
+ /esprima/4.0.1:
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ /esquery/1.4.0:
+ resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==}
+ engines: {node: '>=0.10'}
+ dependencies:
+ estraverse: 5.3.0
+
+ /esrecurse/4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
+ dependencies:
+ estraverse: 5.3.0
+
+ /estraverse/4.3.0:
+ resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
+ engines: {node: '>=4.0'}
+
+ /estraverse/5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+
+ /estree-to-babel/3.2.1:
+ resolution: {integrity: sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==}
+ engines: {node: '>=8.3.0'}
+ dependencies:
+ '@babel/traverse': 7.19.6
+ '@babel/types': 7.19.4
+ c8: 7.12.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /estree-walker/1.0.1:
+ resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==}
+ dev: false
+
+ /estree-walker/2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+ dev: true
+
+ /esutils/2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+
+ /etag/1.8.1:
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /eventemitter3/4.0.7:
+ resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
+
+ /events/3.3.0:
+ resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
+ engines: {node: '>=0.8.x'}
+
+ /evp_bytestokey/1.0.3:
+ resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==}
+ dependencies:
+ md5.js: 1.3.5
+ safe-buffer: 5.2.1
+ dev: false
+
+ /exec-sh/0.3.6:
+ resolution: {integrity: sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==}
+ dev: false
+
+ /execa/1.0.0:
+ resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==}
+ engines: {node: '>=6'}
+ dependencies:
+ cross-spawn: 6.0.5
+ get-stream: 4.1.0
+ is-stream: 1.1.0
+ npm-run-path: 2.0.2
+ p-finally: 1.0.0
+ signal-exit: 3.0.7
+ strip-eof: 1.0.0
+ dev: false
+
+ /execa/4.1.0:
+ resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==}
+ engines: {node: '>=10'}
+ dependencies:
+ cross-spawn: 7.0.3
+ get-stream: 5.2.0
+ human-signals: 1.1.1
+ is-stream: 2.0.1
+ merge-stream: 2.0.0
+ npm-run-path: 4.0.1
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ strip-final-newline: 2.0.0
+ dev: true
+
+ /execa/5.1.1:
+ resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
+ engines: {node: '>=10'}
+ dependencies:
+ cross-spawn: 7.0.3
+ get-stream: 6.0.1
+ human-signals: 2.1.0
+ is-stream: 2.0.1
+ merge-stream: 2.0.0
+ npm-run-path: 4.0.1
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ strip-final-newline: 2.0.0
+
+ /execa/6.1.0:
+ resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dependencies:
+ cross-spawn: 7.0.3
+ get-stream: 6.0.1
+ human-signals: 3.0.1
+ is-stream: 3.0.0
+ merge-stream: 2.0.0
+ npm-run-path: 5.1.0
+ onetime: 6.0.0
+ signal-exit: 3.0.7
+ strip-final-newline: 3.0.0
+ dev: true
+
+ /exit/0.1.2:
+ resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==}
+ engines: {node: '>= 0.8.0'}
+
+ /expand-brackets/2.1.4:
+ resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ debug: 2.6.9
+ define-property: 0.2.5
+ extend-shallow: 2.0.1
+ posix-character-classes: 0.1.1
+ regex-not: 1.0.2
+ snapdragon: 0.8.2
+ to-regex: 3.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /expect/27.5.1:
+ resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.5.1
+ jest-get-type: 27.5.1
+ jest-matcher-utils: 27.5.1
+ jest-message-util: 27.5.1
+ dev: false
+
+ /expect/28.1.3:
+ resolution: {integrity: sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/expect-utils': 28.1.3
+ jest-get-type: 28.0.2
+ jest-matcher-utils: 28.1.3
+ jest-message-util: 28.1.3
+ jest-util: 28.1.3
+ dev: true
+
+ /express/4.18.1:
+ resolution: {integrity: sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==}
+ engines: {node: '>= 0.10.0'}
+ dependencies:
+ accepts: 1.3.8
+ array-flatten: 1.1.1
+ body-parser: 1.20.0
+ 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.10.3
+ 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
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /extend-shallow/2.0.1:
+ resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extendable: 0.1.1
+ dev: false
+
+ /extend-shallow/3.0.2:
+ resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ assign-symbols: 1.0.0
+ is-extendable: 1.0.1
+ dev: false
+
+ /extend/3.0.2:
+ resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
+ dev: false
+
+ /external-editor/3.1.0:
+ resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
+ engines: {node: '>=4'}
+ dependencies:
+ chardet: 0.7.0
+ iconv-lite: 0.4.24
+ tmp: 0.0.33
+ dev: true
+
+ /extglob/2.0.4:
+ resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ array-unique: 0.3.2
+ define-property: 1.0.0
+ expand-brackets: 2.1.4
+ extend-shallow: 2.0.1
+ fragment-cache: 0.2.1
+ regex-not: 1.0.2
+ snapdragon: 0.8.2
+ to-regex: 3.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /fast-csv/4.3.6:
+ resolution: {integrity: sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==}
+ engines: {node: '>=10.0.0'}
+ dependencies:
+ '@fast-csv/format': 4.3.5
+ '@fast-csv/parse': 4.3.6
+ dev: false
+
+ /fast-deep-equal/3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+
+ /fast-diff/1.2.0:
+ resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==}
+ dev: true
+
+ /fast-glob/2.2.7:
+ resolution: {integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==}
+ engines: {node: '>=4.0.0'}
+ dependencies:
+ '@mrmlnc/readdir-enhanced': 2.2.1
+ '@nodelib/fs.stat': 1.1.3
+ glob-parent: 3.1.0
+ is-glob: 4.0.3
+ merge2: 1.4.1
+ micromatch: 3.1.10
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /fast-glob/3.2.12:
+ resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
+ engines: {node: '>=8.6.0'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.5
+
+ /fast-glob/3.2.7:
+ resolution: {integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.5
+ dev: true
+
+ /fast-json-parse/1.0.3:
+ resolution: {integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==}
+ dev: false
+
+ /fast-json-stable-stringify/2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+
+ /fast-levenshtein/2.0.6:
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+
+ /fast-safe-stringify/2.1.1:
+ resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==}
+ dev: false
+
+ /fast-xml-parser/3.19.0:
+ resolution: {integrity: sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg==}
+ hasBin: true
+ dev: false
+
+ /fastq/1.13.0:
+ resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==}
+ dependencies:
+ reusify: 1.0.4
+
+ /faye-websocket/0.11.4:
+ resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==}
+ engines: {node: '>=0.8.0'}
+ dependencies:
+ websocket-driver: 0.7.4
+ dev: false
+
+ /fb-watchman/2.0.2:
+ resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
+ dependencies:
+ bser: 2.1.1
+
+ /fetch-retry/5.0.3:
+ resolution: {integrity: sha512-uJQyMrX5IJZkhoEUBQ3EjxkeiZkppBd5jS/fMTJmfZxLSiaQjv2zD0kTvuvkSH89uFvgSlB6ueGpjD3HWN7Bxw==}
+ dev: false
+
+ /figgy-pudding/3.5.2:
+ resolution: {integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==}
+ dev: false
+
+ /figures/3.2.0:
+ resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
+ engines: {node: '>=8'}
+ dependencies:
+ escape-string-regexp: 1.0.5
+ dev: true
+
+ /file-entry-cache/6.0.1:
+ resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ flat-cache: 3.0.4
+
+ /file-loader/6.2.0_webpack@4.46.0:
+ resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==}
+ engines: {node: '>= 10.13.0'}
+ peerDependencies:
+ webpack: ^4.0.0 || ^5.0.0
+ dependencies:
+ loader-utils: 2.0.3
+ schema-utils: 3.1.1
+ webpack: 4.46.0
+ dev: false
+
+ /file-loader/6.2.0_webpack@5.74.0:
+ resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==}
+ engines: {node: '>= 10.13.0'}
+ peerDependencies:
+ webpack: ^4.0.0 || ^5.0.0
+ dependencies:
+ loader-utils: 2.0.3
+ schema-utils: 3.1.1
+ webpack: 5.74.0
+ dev: false
+
+ /file-saver/2.0.5:
+ resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==}
+ dev: false
+
+ /file-selector/0.6.0:
+ resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==}
+ engines: {node: '>= 12'}
+ dependencies:
+ tslib: 2.4.0
+ dev: false
+
+ /file-system-cache/1.1.0:
+ resolution: {integrity: sha512-IzF5MBq+5CR0jXx5RxPe4BICl/oEhBSXKaL9fLhAXrIfIUS77Hr4vzrYyqYMHN6uTt+BOqi3fDCTjjEBCjERKw==}
+ dependencies:
+ fs-extra: 10.1.0
+ ramda: 0.28.0
+ dev: false
+
+ /file-uri-to-path/1.0.0:
+ resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /filelist/1.0.4:
+ resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
+ dependencies:
+ minimatch: 5.1.0
+
+ /filesize/8.0.7:
+ resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==}
+ engines: {node: '>= 0.4.0'}
+ dev: false
+
+ /fill-range/4.0.0:
+ resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ extend-shallow: 2.0.1
+ is-number: 3.0.0
+ repeat-string: 1.6.1
+ to-regex-range: 2.1.1
+ dev: false
+
+ /fill-range/7.0.1:
+ resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ to-regex-range: 5.0.1
+
+ /finalhandler/1.2.0:
+ resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==}
+ engines: {node: '>= 0.8'}
+ 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
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /find-cache-dir/2.1.0:
+ resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==}
+ engines: {node: '>=6'}
+ dependencies:
+ commondir: 1.0.1
+ make-dir: 2.1.0
+ pkg-dir: 3.0.0
+ dev: false
+
+ /find-cache-dir/3.3.2:
+ resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==}
+ engines: {node: '>=8'}
+ dependencies:
+ commondir: 1.0.1
+ make-dir: 3.1.0
+ pkg-dir: 4.2.0
+
+ /find-root/1.1.0:
+ resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==}
+ dev: false
+
+ /find-up/1.1.2:
+ resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ path-exists: 2.1.0
+ pinkie-promise: 2.0.1
+ dev: false
+ optional: true
+
+ /find-up/2.1.0:
+ resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ locate-path: 2.0.0
+ dev: true
+
+ /find-up/3.0.0:
+ resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==}
+ engines: {node: '>=6'}
+ dependencies:
+ locate-path: 3.0.0
+ dev: false
+
+ /find-up/4.1.0:
+ resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
+ engines: {node: '>=8'}
+ dependencies:
+ locate-path: 5.0.0
+ path-exists: 4.0.0
+
+ /find-up/5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+
+ /flat-cache/3.0.4:
+ resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ flatted: 3.2.7
+ rimraf: 3.0.2
+
+ /flat/5.0.2:
+ resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==}
+ hasBin: true
+ dev: true
+
+ /flatted/3.2.7:
+ resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
+
+ /flush-write-stream/1.1.1:
+ resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==}
+ dependencies:
+ inherits: 2.0.4
+ readable-stream: 2.3.7
+ dev: false
+
+ /follow-redirects/1.15.2:
+ resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+
+ /for-in/1.0.2:
+ resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /foreground-child/2.0.0:
+ resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==}
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ cross-spawn: 7.0.3
+ signal-exit: 3.0.7
+ dev: false
+
+ /fork-ts-checker-webpack-plugin/4.1.6_nis5txevc7dvhqsd6hjb72wjza:
+ resolution: {integrity: sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==}
+ engines: {node: '>=6.11.5', yarn: '>=1.0.0'}
+ peerDependencies:
+ eslint: '>= 6'
+ typescript: '>= 2.7'
+ vue-template-compiler: '*'
+ webpack: '>= 4'
+ peerDependenciesMeta:
+ eslint:
+ optional: true
+ vue-template-compiler:
+ optional: true
+ dependencies:
+ '@babel/code-frame': 7.18.6
+ chalk: 2.4.2
+ eslint: 8.23.1
+ micromatch: 3.1.10
+ minimatch: 3.1.2
+ semver: 5.7.1
+ tapable: 1.1.3
+ typescript: 4.8.3
+ webpack: 4.46.0
+ worker-rpc: 0.1.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /fork-ts-checker-webpack-plugin/6.5.2_nis5txevc7dvhqsd6hjb72wjza:
+ resolution: {integrity: sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==}
+ engines: {node: '>=10', yarn: '>=1.0.0'}
+ peerDependencies:
+ eslint: '>= 6'
+ typescript: '>= 2.7'
+ vue-template-compiler: '*'
+ webpack: '>= 4'
+ peerDependenciesMeta:
+ eslint:
+ optional: true
+ vue-template-compiler:
+ optional: true
+ dependencies:
+ '@babel/code-frame': 7.18.6
+ '@types/json-schema': 7.0.11
+ chalk: 4.1.2
+ chokidar: 3.5.3
+ cosmiconfig: 6.0.0
+ deepmerge: 4.2.2
+ eslint: 8.23.1
+ fs-extra: 9.1.0
+ glob: 7.2.3
+ memfs: 3.4.7
+ minimatch: 3.1.2
+ schema-utils: 2.7.0
+ semver: 7.3.7
+ tapable: 1.1.3
+ typescript: 4.8.3
+ webpack: 4.46.0
+ dev: false
+
+ /fork-ts-checker-webpack-plugin/6.5.2_npfwkgbcmgrbevrxnqgustqabe:
+ resolution: {integrity: sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==}
+ engines: {node: '>=10', yarn: '>=1.0.0'}
+ peerDependencies:
+ eslint: '>= 6'
+ typescript: '>= 2.7'
+ vue-template-compiler: '*'
+ webpack: '>= 4'
+ peerDependenciesMeta:
+ eslint:
+ optional: true
+ vue-template-compiler:
+ optional: true
+ dependencies:
+ '@babel/code-frame': 7.18.6
+ '@types/json-schema': 7.0.11
+ chalk: 4.1.2
+ chokidar: 3.5.3
+ cosmiconfig: 6.0.0
+ deepmerge: 4.2.2
+ eslint: 8.23.1
+ fs-extra: 9.1.0
+ glob: 7.2.3
+ memfs: 3.4.7
+ minimatch: 3.1.2
+ schema-utils: 2.7.0
+ semver: 7.3.7
+ tapable: 1.1.3
+ typescript: 4.8.3
+ webpack: 5.74.0
+ dev: false
+
+ /fork-ts-checker-webpack-plugin/7.2.13_qqxisngxjbp7lstdk7boexbu3e:
+ resolution: {integrity: sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==}
+ engines: {node: '>=12.13.0', yarn: '>=1.0.0'}
+ peerDependencies:
+ typescript: '>3.6.0'
+ vue-template-compiler: '*'
+ webpack: ^5.11.0
+ peerDependenciesMeta:
+ vue-template-compiler:
+ optional: true
+ dependencies:
+ '@babel/code-frame': 7.18.6
+ chalk: 4.1.2
+ chokidar: 3.5.3
+ cosmiconfig: 7.0.1
+ deepmerge: 4.2.2
+ fs-extra: 10.1.0
+ memfs: 3.4.7
+ minimatch: 3.1.2
+ node-abort-controller: 3.0.1
+ schema-utils: 3.1.1
+ semver: 7.3.7
+ tapable: 2.2.1
+ typescript: 4.8.4
+ webpack: 5.74.0
+ dev: true
+
+ /form-data/3.0.1:
+ resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==}
+ engines: {node: '>= 6'}
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ mime-types: 2.1.35
+ dev: false
+
+ /form-data/4.0.0:
+ resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
+ engines: {node: '>= 6'}
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ mime-types: 2.1.35
+ dev: true
+
+ /forwarded/0.2.0:
+ resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /frac/1.1.2:
+ resolution: {integrity: sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==}
+ engines: {node: '>=0.8'}
+ dev: false
+
+ /fraction.js/4.2.0:
+ resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
+ dev: false
+
+ /fragment-cache/0.2.1:
+ resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ map-cache: 0.2.2
+ dev: false
+
+ /fresh/0.5.2:
+ resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /from2/2.3.0:
+ resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==}
+ dependencies:
+ inherits: 2.0.4
+ readable-stream: 2.3.7
+ dev: false
+
+ /fs-constants/1.0.0:
+ resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
+ dev: true
+
+ /fs-extra/10.1.0:
+ resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ graceful-fs: 4.2.10
+ jsonfile: 6.1.0
+ universalify: 2.0.0
+
+ /fs-extra/9.1.0:
+ resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ at-least-node: 1.0.0
+ graceful-fs: 4.2.10
+ jsonfile: 6.1.0
+ universalify: 2.0.0
+
+ /fs-minipass/2.1.0:
+ resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
+ engines: {node: '>= 8'}
+ dependencies:
+ minipass: 3.3.4
+
+ /fs-monkey/1.0.3:
+ resolution: {integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==}
+
+ /fs-write-stream-atomic/1.0.10:
+ resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==}
+ dependencies:
+ graceful-fs: 4.2.10
+ iferr: 0.1.5
+ imurmurhash: 0.1.4
+ readable-stream: 2.3.7
+ dev: false
+
+ /fs.realpath/1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+
+ /fsevents/1.2.13:
+ resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==}
+ engines: {node: '>= 4.0'}
+ os: [darwin]
+ deprecated: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
+ requiresBuild: true
+ dependencies:
+ bindings: 1.5.0
+ nan: 2.17.0
+ dev: false
+ optional: true
+
+ /fsevents/2.3.2:
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+ requiresBuild: true
+ optional: true
+
+ /function-bind/1.1.1:
+ resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
+
+ /function.prototype.name/1.1.5:
+ resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.4
+ es-abstract: 1.20.3
+ functions-have-names: 1.2.3
+
+ /functions-have-names/1.2.3:
+ resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
+
+ /gauge/3.0.2:
+ resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==}
+ engines: {node: '>=10'}
+ dependencies:
+ aproba: 2.0.0
+ color-support: 1.1.3
+ console-control-strings: 1.1.0
+ has-unicode: 2.0.1
+ object-assign: 4.1.1
+ signal-exit: 3.0.7
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wide-align: 1.1.5
+ dev: false
+
+ /gauge/4.0.4:
+ resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ aproba: 2.0.0
+ color-support: 1.1.3
+ console-control-strings: 1.1.0
+ has-unicode: 2.0.1
+ signal-exit: 3.0.7
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wide-align: 1.1.5
+ dev: true
+
+ /gensync/1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+
+ /get-caller-file/2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+
+ /get-func-name/2.0.0:
+ resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==}
+ dev: true
+
+ /get-intrinsic/1.1.3:
+ resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==}
+ dependencies:
+ function-bind: 1.1.1
+ has: 1.0.3
+ has-symbols: 1.0.3
+
+ /get-own-enumerable-property-symbols/3.0.2:
+ resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==}
+ dev: false
+
+ /get-package-type/0.1.0:
+ resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
+ engines: {node: '>=8.0.0'}
+
+ /get-pkg-repo/4.2.1:
+ resolution: {integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==}
+ engines: {node: '>=6.9.0'}
+ hasBin: true
+ dependencies:
+ '@hutson/parse-repository-url': 3.0.2
+ hosted-git-info: 4.1.0
+ through2: 2.0.5
+ yargs: 16.2.0
+ dev: true
+
+ /get-port/5.1.1:
+ resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /get-stdin/4.0.1:
+ resolution: {integrity: sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+ optional: true
+
+ /get-stream/4.1.0:
+ resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==}
+ engines: {node: '>=6'}
+ dependencies:
+ pump: 3.0.0
+ dev: false
+
+ /get-stream/5.2.0:
+ resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
+ engines: {node: '>=8'}
+ dependencies:
+ pump: 3.0.0
+ dev: true
+
+ /get-stream/6.0.1:
+ resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
+ engines: {node: '>=10'}
+
+ /get-symbol-description/1.0.0:
+ resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ get-intrinsic: 1.1.3
+
+ /get-value/2.0.6:
+ resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /git-raw-commits/2.0.11:
+ resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ dargs: 7.0.0
+ lodash: 4.17.21
+ meow: 8.1.2
+ split2: 3.2.2
+ through2: 4.0.2
+ dev: true
+
+ /git-remote-origin-url/2.0.0:
+ resolution: {integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==}
+ engines: {node: '>=4'}
+ dependencies:
+ gitconfiglocal: 1.0.0
+ pify: 2.3.0
+ dev: true
+
+ /git-semver-tags/4.1.1:
+ resolution: {integrity: sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ meow: 8.1.2
+ semver: 6.3.0
+ dev: true
+
+ /git-up/7.0.0:
+ resolution: {integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==}
+ dependencies:
+ is-ssh: 1.4.0
+ parse-url: 8.1.0
+ dev: true
+
+ /git-url-parse/13.1.0:
+ resolution: {integrity: sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==}
+ dependencies:
+ git-up: 7.0.0
+ dev: true
+
+ /gitconfiglocal/1.0.0:
+ resolution: {integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==}
+ dependencies:
+ ini: 1.3.8
+ dev: true
+
+ /github-slugger/1.5.0:
+ resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==}
+ dev: false
+
+ /glob-parent/3.1.0:
+ resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==}
+ dependencies:
+ is-glob: 3.1.0
+ path-dirname: 1.0.2
+ dev: false
+
+ /glob-parent/5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+ dependencies:
+ is-glob: 4.0.3
+
+ /glob-parent/6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+ dependencies:
+ is-glob: 4.0.3
+
+ /glob-promise/3.4.0_glob@7.2.3:
+ resolution: {integrity: sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ glob: '*'
+ dependencies:
+ '@types/glob': 8.0.0
+ glob: 7.2.3
+ dev: false
+
+ /glob-to-regexp/0.3.0:
+ resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==}
+ dev: false
+
+ /glob-to-regexp/0.4.1:
+ resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
+
+ /glob/7.1.4:
+ resolution: {integrity: sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==}
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+ dev: true
+
+ /glob/7.2.0:
+ resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==}
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+ dev: true
+
+ /glob/7.2.3:
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+
+ /glob/8.0.3:
+ resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 5.1.0
+ once: 1.4.0
+ dev: true
+
+ /global-dirs/0.1.1:
+ resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==}
+ engines: {node: '>=4'}
+ dependencies:
+ ini: 1.3.8
+ dev: true
+
+ /global-modules/2.0.0:
+ resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==}
+ engines: {node: '>=6'}
+ dependencies:
+ global-prefix: 3.0.0
+ dev: false
+
+ /global-prefix/3.0.0:
+ resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==}
+ engines: {node: '>=6'}
+ dependencies:
+ ini: 1.3.8
+ kind-of: 6.0.3
+ which: 1.3.1
+ dev: false
+
+ /global/4.4.0:
+ resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==}
+ dependencies:
+ min-document: 2.19.0
+ process: 0.11.10
+ dev: false
+
+ /globals/11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
+
+ /globals/13.17.0:
+ resolution: {integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==}
+ engines: {node: '>=8'}
+ dependencies:
+ type-fest: 0.20.2
+
+ /globalthis/1.0.3:
+ resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-properties: 1.1.4
+ dev: false
+
+ /globby/11.1.0:
+ resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
+ engines: {node: '>=10'}
+ dependencies:
+ array-union: 2.1.0
+ dir-glob: 3.0.1
+ fast-glob: 3.2.12
+ ignore: 5.2.0
+ merge2: 1.4.1
+ slash: 3.0.0
+
+ /globby/9.2.0:
+ resolution: {integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==}
+ engines: {node: '>=6'}
+ dependencies:
+ '@types/glob': 7.2.0
+ array-union: 1.0.2
+ dir-glob: 2.2.2
+ fast-glob: 2.2.7
+ glob: 7.2.3
+ ignore: 4.0.6
+ pify: 4.0.1
+ slash: 2.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /graceful-fs/4.2.10:
+ resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
+
+ /grapheme-splitter/1.0.4:
+ resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
+
+ /gzip-size/6.0.0:
+ resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==}
+ engines: {node: '>=10'}
+ dependencies:
+ duplexer: 0.1.2
+ dev: false
+
+ /handle-thing/2.0.1:
+ resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==}
+ dev: false
+
+ /handlebars/4.7.7:
+ resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==}
+ engines: {node: '>=0.4.7'}
+ hasBin: true
+ dependencies:
+ minimist: 1.2.6
+ neo-async: 2.6.2
+ source-map: 0.6.1
+ wordwrap: 1.0.0
+ optionalDependencies:
+ uglify-js: 3.17.4
+
+ /hard-rejection/2.1.0:
+ resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /harmony-reflect/1.6.2:
+ resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==}
+
+ /has-bigints/1.0.2:
+ resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
+
+ /has-flag/3.0.0:
+ resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+ engines: {node: '>=4'}
+
+ /has-flag/4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+
+ /has-glob/1.0.0:
+ resolution: {integrity: sha512-D+8A457fBShSEI3tFCj65PAbT++5sKiFtdCdOam0gnfBgw9D277OERk+HM9qYJXmdVLZ/znez10SqHN0BBQ50g==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-glob: 3.1.0
+ dev: false
+
+ /has-property-descriptors/1.0.0:
+ resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
+ dependencies:
+ get-intrinsic: 1.1.3
+
+ /has-symbols/1.0.3:
+ resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
+ engines: {node: '>= 0.4'}
+
+ /has-tostringtag/1.0.0:
+ resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-symbols: 1.0.3
+
+ /has-unicode/2.0.1:
+ resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
+
+ /has-value/0.3.1:
+ resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ get-value: 2.0.6
+ has-values: 0.1.4
+ isobject: 2.1.0
+ dev: false
+
+ /has-value/1.0.0:
+ resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ get-value: 2.0.6
+ has-values: 1.0.0
+ isobject: 3.0.1
+ dev: false
+
+ /has-values/0.1.4:
+ resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /has-values/1.0.0:
+ resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-number: 3.0.0
+ kind-of: 4.0.0
+ dev: false
+
+ /has/1.0.3:
+ resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
+ engines: {node: '>= 0.4.0'}
+ dependencies:
+ function-bind: 1.1.1
+
+ /hash-base/3.1.0:
+ resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==}
+ engines: {node: '>=4'}
+ dependencies:
+ inherits: 2.0.4
+ readable-stream: 3.6.0
+ safe-buffer: 5.2.1
+ dev: false
+
+ /hash.js/1.1.7:
+ resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==}
+ dependencies:
+ inherits: 2.0.4
+ minimalistic-assert: 1.0.1
+ dev: false
+
+ /hast-to-hyperscript/9.0.1:
+ resolution: {integrity: sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==}
+ dependencies:
+ '@types/unist': 2.0.6
+ comma-separated-tokens: 1.0.8
+ property-information: 5.6.0
+ space-separated-tokens: 1.1.5
+ style-to-object: 0.3.0
+ unist-util-is: 4.1.0
+ web-namespaces: 1.1.4
+ dev: false
+
+ /hast-util-from-parse5/6.0.1:
+ resolution: {integrity: sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==}
+ dependencies:
+ '@types/parse5': 5.0.3
+ hastscript: 6.0.0
+ property-information: 5.6.0
+ vfile: 4.2.1
+ vfile-location: 3.2.0
+ web-namespaces: 1.1.4
+ dev: false
+
+ /hast-util-parse-selector/2.2.5:
+ resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==}
+ dev: false
+
+ /hast-util-raw/6.0.1:
+ resolution: {integrity: sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==}
+ dependencies:
+ '@types/hast': 2.3.4
+ hast-util-from-parse5: 6.0.1
+ hast-util-to-parse5: 6.0.0
+ html-void-elements: 1.0.5
+ parse5: 6.0.1
+ unist-util-position: 3.1.0
+ vfile: 4.2.1
+ web-namespaces: 1.1.4
+ xtend: 4.0.2
+ zwitch: 1.0.5
+ dev: false
+
+ /hast-util-to-parse5/6.0.0:
+ resolution: {integrity: sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==}
+ dependencies:
+ hast-to-hyperscript: 9.0.1
+ property-information: 5.6.0
+ web-namespaces: 1.1.4
+ xtend: 4.0.2
+ zwitch: 1.0.5
+ dev: false
+
+ /hastscript/6.0.0:
+ resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==}
+ dependencies:
+ '@types/hast': 2.3.4
+ comma-separated-tokens: 1.0.8
+ hast-util-parse-selector: 2.2.5
+ property-information: 5.6.0
+ space-separated-tokens: 1.1.5
+ dev: false
+
+ /he/1.2.0:
+ resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
+ hasBin: true
+
+ /hmac-drbg/1.0.1:
+ resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==}
+ dependencies:
+ hash.js: 1.1.7
+ minimalistic-assert: 1.0.1
+ minimalistic-crypto-utils: 1.0.1
+ dev: false
+
+ /hoist-non-react-statics/3.3.2:
+ resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
+ dependencies:
+ react-is: 16.13.1
+
+ /hoopy/0.1.4:
+ resolution: {integrity: sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==}
+ engines: {node: '>= 6.0.0'}
+ dev: false
+
+ /hosted-git-info/2.8.9:
+ resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
+
+ /hosted-git-info/3.0.8:
+ resolution: {integrity: sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==}
+ engines: {node: '>=10'}
+ dependencies:
+ lru-cache: 6.0.0
+ dev: true
+
+ /hosted-git-info/4.1.0:
+ resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
+ engines: {node: '>=10'}
+ dependencies:
+ lru-cache: 6.0.0
+ dev: true
+
+ /hosted-git-info/5.2.1:
+ resolution: {integrity: sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ lru-cache: 7.14.1
+ dev: true
+
+ /hpack.js/2.1.6:
+ resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==}
+ dependencies:
+ inherits: 2.0.4
+ obuf: 1.1.2
+ readable-stream: 2.3.7
+ wbuf: 1.7.3
+ dev: false
+
+ /html-encoding-sniffer/2.0.1:
+ resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ whatwg-encoding: 1.0.5
+ dev: false
+
+ /html-encoding-sniffer/3.0.0:
+ resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==}
+ engines: {node: '>=12'}
+ dependencies:
+ whatwg-encoding: 2.0.0
+ dev: false
+
+ /html-entities/2.3.3:
+ resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==}
+ dev: false
+
+ /html-escaper/2.0.2:
+ resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
+
+ /html-minifier-terser/5.1.1:
+ resolution: {integrity: sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dependencies:
+ camel-case: 4.1.2
+ clean-css: 4.2.4
+ commander: 4.1.1
+ he: 1.2.0
+ param-case: 3.0.4
+ relateurl: 0.2.7
+ terser: 4.8.1
+ dev: false
+
+ /html-minifier-terser/6.1.0:
+ resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==}
+ engines: {node: '>=12'}
+ hasBin: true
+ dependencies:
+ camel-case: 4.1.2
+ clean-css: 5.3.1
+ commander: 8.3.0
+ he: 1.2.0
+ param-case: 3.0.4
+ relateurl: 0.2.7
+ terser: 5.15.0
+ dev: false
+
+ /html-tags/3.2.0:
+ resolution: {integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /html-void-elements/1.0.5:
+ resolution: {integrity: sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==}
+ dev: false
+
+ /html-webpack-plugin/4.5.2_webpack@4.46.0:
+ resolution: {integrity: sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==}
+ engines: {node: '>=6.9'}
+ peerDependencies:
+ webpack: ^4.0.0 || ^5.0.0
+ dependencies:
+ '@types/html-minifier-terser': 5.1.2
+ '@types/tapable': 1.0.8
+ '@types/webpack': 4.41.33
+ html-minifier-terser: 5.1.1
+ loader-utils: 1.4.0
+ lodash: 4.17.21
+ pretty-error: 2.1.2
+ tapable: 1.1.3
+ util.promisify: 1.0.0
+ webpack: 4.46.0
+ dev: false
+
+ /html-webpack-plugin/5.5.0_webpack@5.74.0:
+ resolution: {integrity: sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==}
+ engines: {node: '>=10.13.0'}
+ peerDependencies:
+ webpack: ^5.20.0
+ dependencies:
+ '@types/html-minifier-terser': 6.1.0
+ html-minifier-terser: 6.1.0
+ lodash: 4.17.21
+ pretty-error: 4.0.0
+ tapable: 2.2.1
+ webpack: 5.74.0
+ dev: false
+
+ /htmlparser2/6.1.0:
+ resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==}
+ dependencies:
+ domelementtype: 2.3.0
+ domhandler: 4.3.1
+ domutils: 2.8.0
+ entities: 2.2.0
+ dev: false
+
+ /http-cache-semantics/4.1.0:
+ resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==}
+ dev: true
+
+ /http-deceiver/1.2.7:
+ resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==}
+ dev: false
+
+ /http-errors/1.6.3:
+ resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ depd: 1.1.2
+ inherits: 2.0.3
+ setprototypeof: 1.1.0
+ statuses: 1.5.0
+ dev: false
+
+ /http-errors/2.0.0:
+ resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ toidentifier: 1.0.1
+ dev: false
+
+ /http-parser-js/0.5.8:
+ resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==}
+ dev: false
+
+ /http-proxy-agent/4.0.1:
+ resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==}
+ engines: {node: '>= 6'}
+ dependencies:
+ '@tootallnate/once': 1.1.2
+ agent-base: 6.0.2
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /http-proxy-agent/5.0.0:
+ resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==}
+ engines: {node: '>= 6'}
+ dependencies:
+ '@tootallnate/once': 2.0.0
+ agent-base: 6.0.2
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /http-proxy-middleware/2.0.6_@types+express@4.17.14:
+ resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ '@types/express': ^4.17.13
+ peerDependenciesMeta:
+ '@types/express':
+ optional: true
+ dependencies:
+ '@types/express': 4.17.14
+ '@types/http-proxy': 1.17.9
+ http-proxy: 1.18.1
+ is-glob: 4.0.3
+ is-plain-obj: 3.0.0
+ micromatch: 4.0.5
+ transitivePeerDependencies:
+ - debug
+ dev: false
+
+ /http-proxy/1.18.1:
+ resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==}
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ eventemitter3: 4.0.7
+ follow-redirects: 1.15.2
+ requires-port: 1.0.0
+ transitivePeerDependencies:
+ - debug
+ dev: false
+
+ /http-server/14.1.1:
+ resolution: {integrity: sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==}
+ engines: {node: '>=12'}
+ hasBin: true
+ dependencies:
+ basic-auth: 2.0.1
+ chalk: 4.1.2
+ corser: 2.0.1
+ he: 1.2.0
+ html-encoding-sniffer: 3.0.0
+ http-proxy: 1.18.1
+ mime: 1.6.0
+ minimist: 1.2.6
+ opener: 1.5.2
+ portfinder: 1.0.32
+ secure-compare: 3.0.1
+ union: 0.5.0
+ url-join: 4.0.1
+ transitivePeerDependencies:
+ - debug
+ - supports-color
+ dev: false
+
+ /https-browserify/1.0.0:
+ resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==}
+ dev: false
+
+ /https-proxy-agent/5.0.1:
+ resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
+ engines: {node: '>= 6'}
+ dependencies:
+ agent-base: 6.0.2
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+
+ /human-signals/1.1.1:
+ resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==}
+ engines: {node: '>=8.12.0'}
+ dev: true
+
+ /human-signals/2.1.0:
+ resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
+ engines: {node: '>=10.17.0'}
+
+ /human-signals/3.0.1:
+ resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==}
+ engines: {node: '>=12.20.0'}
+ dev: true
+
+ /humanize-ms/1.2.1:
+ resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
+ dependencies:
+ ms: 2.1.3
+ dev: true
+
+ /husky/8.0.1:
+ resolution: {integrity: sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==}
+ engines: {node: '>=14'}
+ hasBin: true
+ dev: true
+
+ /iconv-lite/0.4.24:
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ safer-buffer: 2.1.2
+
+ /iconv-lite/0.6.3:
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ safer-buffer: 2.1.2
+
+ /icss-utils/4.1.1:
+ resolution: {integrity: sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==}
+ engines: {node: '>= 6'}
+ dependencies:
+ postcss: 7.0.39
+ dev: false
+
+ /icss-utils/5.1.0_postcss@8.4.18:
+ resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ postcss: 8.4.18
+ dev: false
+
+ /idb/7.1.0:
+ resolution: {integrity: sha512-Wsk07aAxDsntgYJY4h0knZJuTxM73eQ4reRAO+Z1liOh8eMCJ/MoDS8fCui1vGT9mnjtl1sOu3I2i/W1swPYZg==}
+ dev: false
+
+ /identity-obj-proxy/3.0.0:
+ resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==}
+ engines: {node: '>=4'}
+ dependencies:
+ harmony-reflect: 1.6.2
+
+ /ieee754/1.2.1:
+ resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+
+ /iferr/0.1.5:
+ resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==}
+ dev: false
+
+ /ignore-by-default/1.0.1:
+ resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==}
+ dev: true
+
+ /ignore-walk/5.0.1:
+ resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ minimatch: 5.1.0
+ dev: true
+
+ /ignore/4.0.6:
+ resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==}
+ engines: {node: '>= 4'}
+ dev: false
+
+ /ignore/5.2.0:
+ resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==}
+ engines: {node: '>= 4'}
+
+ /immer/9.0.15:
+ resolution: {integrity: sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==}
+ dev: false
+
+ /import-fresh/3.3.0:
+ resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
+ engines: {node: '>=6'}
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+
+ /import-local/3.1.0:
+ resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==}
+ engines: {node: '>=8'}
+ hasBin: true
+ dependencies:
+ pkg-dir: 4.2.0
+ resolve-cwd: 3.0.0
+
+ /imurmurhash/0.1.4:
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
+
+ /indent-string/2.1.0:
+ resolution: {integrity: sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ repeating: 2.0.1
+ dev: false
+ optional: true
+
+ /indent-string/4.0.0:
+ resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
+ engines: {node: '>=8'}
+
+ /infer-owner/1.0.4:
+ resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==}
+
+ /inflight/1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+
+ /inherits/2.0.1:
+ resolution: {integrity: sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==}
+ dev: false
+
+ /inherits/2.0.3:
+ resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==}
+ dev: false
+
+ /inherits/2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ /ini/1.3.8:
+ resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
+
+ /init-package-json/3.0.2:
+ resolution: {integrity: sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ npm-package-arg: 9.1.2
+ promzard: 0.3.0
+ read: 1.0.7
+ read-package-json: 5.0.2
+ semver: 7.3.7
+ validate-npm-package-license: 3.0.4
+ validate-npm-package-name: 4.0.0
+ dev: true
+
+ /inline-style-parser/0.1.1:
+ resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==}
+ dev: false
+
+ /inquirer/7.3.3:
+ resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==}
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ cli-cursor: 3.1.0
+ cli-width: 3.0.0
+ external-editor: 3.1.0
+ figures: 3.2.0
+ lodash: 4.17.21
+ mute-stream: 0.0.8
+ run-async: 2.4.1
+ rxjs: 6.6.7
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ through: 2.3.8
+ dev: true
+
+ /inquirer/8.2.4:
+ resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==}
+ engines: {node: '>=12.0.0'}
+ dependencies:
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ cli-cursor: 3.1.0
+ cli-width: 3.0.0
+ external-editor: 3.1.0
+ figures: 3.2.0
+ lodash: 4.17.21
+ mute-stream: 0.0.8
+ ora: 5.4.1
+ run-async: 2.4.1
+ rxjs: 7.5.6
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ through: 2.3.8
+ wrap-ansi: 7.0.0
+ dev: true
+
+ /inquirer/8.2.5:
+ resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==}
+ engines: {node: '>=12.0.0'}
+ dependencies:
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ cli-cursor: 3.1.0
+ cli-width: 3.0.0
+ external-editor: 3.1.0
+ figures: 3.2.0
+ lodash: 4.17.21
+ mute-stream: 0.0.8
+ ora: 5.4.1
+ run-async: 2.4.1
+ rxjs: 7.5.6
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ through: 2.3.8
+ wrap-ansi: 7.0.0
+ dev: true
+
+ /internal-slot/1.0.3:
+ resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ get-intrinsic: 1.1.3
+ has: 1.0.3
+ side-channel: 1.0.4
+
+ /interpret/1.4.0:
+ resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==}
+ engines: {node: '>= 0.10'}
+ dev: true
+
+ /interpret/2.2.0:
+ resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==}
+ engines: {node: '>= 0.10'}
+ dev: false
+
+ /ip/2.0.0:
+ resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==}
+
+ /ipaddr.js/1.9.1:
+ resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
+ engines: {node: '>= 0.10'}
+ dev: false
+
+ /ipaddr.js/2.0.1:
+ resolution: {integrity: sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==}
+ engines: {node: '>= 10'}
+ dev: false
+
+ /is-absolute-url/3.0.3:
+ resolution: {integrity: sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /is-accessor-descriptor/0.1.6:
+ resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 3.2.2
+ dev: false
+
+ /is-accessor-descriptor/1.0.0:
+ resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 6.0.3
+ dev: false
+
+ /is-alphabetical/1.0.4:
+ resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==}
+ dev: false
+
+ /is-alphanumerical/1.0.4:
+ resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==}
+ dependencies:
+ is-alphabetical: 1.0.4
+ is-decimal: 1.0.4
+ dev: false
+
+ /is-arguments/1.1.1:
+ resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ has-tostringtag: 1.0.0
+ dev: false
+
+ /is-arrayish/0.2.1:
+ resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
+
+ /is-bigint/1.0.4:
+ resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
+ dependencies:
+ has-bigints: 1.0.2
+
+ /is-binary-path/1.0.1:
+ resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ binary-extensions: 1.13.1
+ dev: false
+ optional: true
+
+ /is-binary-path/2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+ dependencies:
+ binary-extensions: 2.2.0
+
+ /is-boolean-object/1.1.2:
+ resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ has-tostringtag: 1.0.0
+
+ /is-buffer/1.1.6:
+ resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
+ dev: false
+
+ /is-buffer/2.0.5:
+ resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /is-builtin-module/3.2.0:
+ resolution: {integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==}
+ engines: {node: '>=6'}
+ dependencies:
+ builtin-modules: 3.3.0
+ dev: true
+
+ /is-callable/1.2.6:
+ resolution: {integrity: sha512-krO72EO2NptOGAX2KYyqbP9vYMlNAXdB53rq6f8LXY6RY7JdSR/3BD6wLUlPHSAesmY9vstNrjvqGaCiRK/91Q==}
+ engines: {node: '>= 0.4'}
+
+ /is-ci/2.0.0:
+ resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==}
+ hasBin: true
+ dependencies:
+ ci-info: 2.0.0
+
+ /is-core-module/2.10.0:
+ resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==}
+ dependencies:
+ has: 1.0.3
+
+ /is-data-descriptor/0.1.4:
+ resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 3.2.2
+ dev: false
+
+ /is-data-descriptor/1.0.0:
+ resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 6.0.3
+ dev: false
+
+ /is-date-object/1.0.5:
+ resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-tostringtag: 1.0.0
+
+ /is-decimal/1.0.4:
+ resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==}
+ dev: false
+
+ /is-descriptor/0.1.6:
+ resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-accessor-descriptor: 0.1.6
+ is-data-descriptor: 0.1.4
+ kind-of: 5.1.0
+ dev: false
+
+ /is-descriptor/1.0.2:
+ resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-accessor-descriptor: 1.0.0
+ is-data-descriptor: 1.0.0
+ kind-of: 6.0.3
+ dev: false
+
+ /is-docker/2.2.1:
+ resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
+ engines: {node: '>=8'}
+ hasBin: true
+
+ /is-dom/1.1.0:
+ resolution: {integrity: sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ==}
+ dependencies:
+ is-object: 1.0.2
+ is-window: 1.0.2
+ dev: false
+
+ /is-extendable/0.1.1:
+ resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /is-extendable/1.0.1:
+ resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-plain-object: 2.0.4
+ dev: false
+
+ /is-extglob/2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ /is-finite/1.1.0:
+ resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+ optional: true
+
+ /is-fullwidth-code-point/3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ /is-fullwidth-code-point/4.0.0:
+ resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /is-function/1.0.2:
+ resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==}
+ dev: false
+
+ /is-generator-fn/2.1.0:
+ resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==}
+ engines: {node: '>=6'}
+
+ /is-glob/3.1.0:
+ resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extglob: 2.1.1
+ dev: false
+
+ /is-glob/4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extglob: 2.1.1
+
+ /is-hexadecimal/1.0.4:
+ resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==}
+ dev: false
+
+ /is-interactive/1.0.0:
+ resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /is-lambda/1.0.1:
+ resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==}
+ dev: true
+
+ /is-map/2.0.2:
+ resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==}
+ dev: false
+
+ /is-module/1.0.0:
+ resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==}
+
+ /is-negative-zero/2.0.2:
+ resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
+ engines: {node: '>= 0.4'}
+
+ /is-number-object/1.0.7:
+ resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-tostringtag: 1.0.0
+
+ /is-number/3.0.0:
+ resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 3.2.2
+ dev: false
+
+ /is-number/7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ /is-obj/1.0.1:
+ resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /is-obj/2.0.0:
+ resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /is-object/1.0.2:
+ resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==}
+ dev: false
+
+ /is-plain-obj/1.1.0:
+ resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-plain-obj/2.1.0:
+ resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==}
+ engines: {node: '>=8'}
+
+ /is-plain-obj/3.0.0:
+ resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /is-plain-object/2.0.4:
+ resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ isobject: 3.0.1
+
+ /is-plain-object/5.0.0:
+ resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
+ engines: {node: '>=0.10.0'}
+
+ /is-potential-custom-element-name/1.0.1:
+ resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
+ dev: false
+
+ /is-reference/1.2.1:
+ resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
+ dependencies:
+ '@types/estree': 1.0.0
+ dev: true
+
+ /is-regex/1.1.4:
+ resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ has-tostringtag: 1.0.0
+
+ /is-regexp/1.0.0:
+ resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /is-root/2.1.0:
+ resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /is-set/2.0.2:
+ resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==}
+ dev: false
+
+ /is-shared-array-buffer/1.0.2:
+ resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
+ dependencies:
+ call-bind: 1.0.2
+
+ /is-ssh/1.4.0:
+ resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==}
+ dependencies:
+ protocols: 2.0.1
+ dev: true
+
+ /is-stream/1.1.0:
+ resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /is-stream/2.0.1:
+ resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+ engines: {node: '>=8'}
+
+ /is-stream/3.0.0:
+ resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dev: true
+
+ /is-string/1.0.7:
+ resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-tostringtag: 1.0.0
+
+ /is-symbol/1.0.4:
+ resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-symbols: 1.0.3
+
+ /is-text-path/1.0.1:
+ resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ text-extensions: 1.9.0
+ dev: true
+
+ /is-typedarray/1.0.0:
+ resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
+
+ /is-unicode-supported/0.1.0:
+ resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /is-utf8/0.2.1:
+ resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==}
+ dev: false
+ optional: true
+
+ /is-weakref/1.0.2:
+ resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
+ dependencies:
+ call-bind: 1.0.2
+
+ /is-whitespace-character/1.0.4:
+ resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==}
+ dev: false
+
+ /is-window/1.0.2:
+ resolution: {integrity: sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg==}
+ dev: false
+
+ /is-windows/1.0.2:
+ resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /is-word-character/1.0.4:
+ resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==}
+ dev: false
+
+ /is-wsl/1.1.0:
+ resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /is-wsl/2.2.0:
+ resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
+ engines: {node: '>=8'}
+ dependencies:
+ is-docker: 2.2.1
+
+ /isarray/0.0.1:
+ resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==}
+ dev: false
+
+ /isarray/1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+
+ /isarray/2.0.5:
+ resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
+ dev: false
+
+ /isexe/2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ /isobject/2.1.0:
+ resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ isarray: 1.0.0
+ dev: false
+
+ /isobject/3.0.1:
+ resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
+ engines: {node: '>=0.10.0'}
+
+ /isobject/4.0.0:
+ resolution: {integrity: sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /isomorphic-unfetch/3.1.0:
+ resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==}
+ dependencies:
+ node-fetch: 2.6.7
+ unfetch: 4.2.0
+ transitivePeerDependencies:
+ - encoding
+ dev: false
+
+ /istanbul-lib-coverage/3.2.0:
+ resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==}
+ engines: {node: '>=8'}
+
+ /istanbul-lib-instrument/5.2.0:
+ resolution: {integrity: sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/parser': 7.19.6
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-coverage: 3.2.0
+ semver: 6.3.0
+ transitivePeerDependencies:
+ - supports-color
+
+ /istanbul-lib-report/3.0.0:
+ resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==}
+ engines: {node: '>=8'}
+ dependencies:
+ istanbul-lib-coverage: 3.2.0
+ make-dir: 3.1.0
+ supports-color: 7.2.0
+
+ /istanbul-lib-source-maps/4.0.1:
+ resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
+ engines: {node: '>=10'}
+ dependencies:
+ debug: 4.3.4
+ istanbul-lib-coverage: 3.2.0
+ source-map: 0.6.1
+ transitivePeerDependencies:
+ - supports-color
+
+ /istanbul-reports/3.1.5:
+ resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==}
+ engines: {node: '>=8'}
+ dependencies:
+ html-escaper: 2.0.2
+ istanbul-lib-report: 3.0.0
+
+ /iterare/1.2.1:
+ resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /iterate-iterator/1.0.2:
+ resolution: {integrity: sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==}
+ dev: false
+
+ /iterate-value/1.0.2:
+ resolution: {integrity: sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==}
+ dependencies:
+ es-get-iterator: 1.1.2
+ iterate-iterator: 1.0.2
+ dev: false
+
+ /jake/10.8.5:
+ resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ async: 3.2.4
+ chalk: 4.1.2
+ filelist: 1.0.4
+ minimatch: 3.1.2
+
+ /jest-changed-files/27.5.1:
+ resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.5.1
+ execa: 5.1.1
+ throat: 6.0.1
+ dev: false
+
+ /jest-circus/27.5.1:
+ resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/environment': 27.5.1
+ '@jest/test-result': 27.5.1
+ '@jest/types': 27.5.1
+ '@types/node': 18.7.18
+ chalk: 4.1.2
+ co: 4.6.0
+ dedent: 0.7.0
+ expect: 27.5.1
+ is-generator-fn: 2.1.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.5
+ throat: 6.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /jest-circus/28.1.3:
+ resolution: {integrity: sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/environment': 28.1.3
+ '@jest/expect': 28.1.3
+ '@jest/test-result': 28.1.3
+ '@jest/types': 28.1.3
+ '@types/node': 18.7.18
+ chalk: 4.1.2
+ co: 4.6.0
+ dedent: 0.7.0
+ is-generator-fn: 2.1.0
+ jest-each: 28.1.3
+ jest-matcher-utils: 28.1.3
+ jest-message-util: 28.1.3
+ jest-runtime: 28.1.3
+ jest-snapshot: 28.1.3
+ jest-util: 28.1.3
+ p-limit: 3.1.0
+ pretty-format: 28.1.3
+ slash: 3.0.0
+ stack-utils: 2.0.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /jest-cli/27.5.1:
+ resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@jest/core': 27.5.1
+ '@jest/test-result': 27.5.1
+ '@jest/types': 27.5.1
+ chalk: 4.1.2
+ exit: 0.1.2
+ graceful-fs: 4.2.10
+ import-local: 3.1.0
+ jest-config: 27.5.1
+ jest-util: 27.5.1
+ jest-validate: 27.5.1
+ prompts: 2.4.2
+ yargs: 16.2.0
+ transitivePeerDependencies:
+ - bufferutil
+ - canvas
+ - supports-color
+ - ts-node
+ - utf-8-validate
+ dev: false
+
+ /jest-config/27.5.1:
+ resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==}
+ 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
+ dependencies:
+ '@babel/core': 7.19.6
+ '@jest/test-sequencer': 27.5.1
+ '@jest/types': 27.5.1
+ babel-jest: 27.5.1_@babel+core@7.19.6
+ chalk: 4.1.2
+ ci-info: 3.4.0
+ deepmerge: 4.2.2
+ glob: 7.2.3
+ graceful-fs: 4.2.10
+ 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.5
+ parse-json: 5.2.0
+ pretty-format: 27.5.1
+ slash: 3.0.0
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - bufferutil
+ - canvas
+ - supports-color
+ - utf-8-validate
+ dev: false
+
+ /jest-config/28.1.1:
+ resolution: {integrity: sha512-tASynMhS+jVV85zKvjfbJ8nUyJS/jUSYZ5KQxLUN2ZCvcQc/OmhQl2j6VEL3ezQkNofxn5pQ3SPYWPHb0unTZA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ peerDependencies:
+ '@types/node': '*'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ ts-node:
+ optional: true
+ dependencies:
+ '@babel/core': 7.19.1
+ '@jest/test-sequencer': 28.1.3
+ '@jest/types': 28.1.3
+ babel-jest: 28.1.3_@babel+core@7.19.1
+ chalk: 4.1.2
+ ci-info: 3.4.0
+ deepmerge: 4.2.2
+ glob: 7.2.3
+ graceful-fs: 4.2.10
+ jest-circus: 28.1.3
+ jest-environment-node: 28.1.3
+ jest-get-type: 28.0.2
+ jest-regex-util: 28.0.2
+ jest-resolve: 28.1.1
+ jest-runner: 28.1.3
+ jest-util: 28.1.1
+ jest-validate: 28.1.3
+ micromatch: 4.0.5
+ parse-json: 5.2.0
+ pretty-format: 28.1.3
+ slash: 3.0.0
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /jest-diff/27.5.1:
+ resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ chalk: 4.1.2
+ diff-sequences: 27.5.1
+ jest-get-type: 27.5.1
+ pretty-format: 27.5.1
+ dev: false
+
+ /jest-diff/28.1.3:
+ resolution: {integrity: sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ chalk: 4.1.2
+ diff-sequences: 28.1.1
+ jest-get-type: 28.0.2
+ pretty-format: 28.1.3
+ dev: true
+
+ /jest-docblock/27.5.1:
+ resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ detect-newline: 3.1.0
+ dev: false
+
+ /jest-docblock/28.1.1:
+ resolution: {integrity: sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ detect-newline: 3.1.0
+ dev: true
+
+ /jest-each/27.5.1:
+ resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.5.1
+ chalk: 4.1.2
+ jest-get-type: 27.5.1
+ jest-util: 27.5.1
+ pretty-format: 27.5.1
+ dev: false
+
+ /jest-each/28.1.3:
+ resolution: {integrity: sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/types': 28.1.3
+ chalk: 4.1.2
+ jest-get-type: 28.0.2
+ jest-util: 28.1.3
+ pretty-format: 28.1.3
+ dev: true
+
+ /jest-environment-jsdom/27.5.1:
+ resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/environment': 27.5.1
+ '@jest/fake-timers': 27.5.1
+ '@jest/types': 27.5.1
+ '@types/node': 18.7.18
+ jest-mock: 27.5.1
+ jest-util: 27.5.1
+ jsdom: 16.7.0
+ transitivePeerDependencies:
+ - bufferutil
+ - canvas
+ - supports-color
+ - utf-8-validate
+ dev: false
+
+ /jest-environment-node/27.5.1:
+ resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/environment': 27.5.1
+ '@jest/fake-timers': 27.5.1
+ '@jest/types': 27.5.1
+ '@types/node': 18.7.18
+ jest-mock: 27.5.1
+ jest-util: 27.5.1
+ dev: false
+
+ /jest-environment-node/28.1.3:
+ resolution: {integrity: sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/environment': 28.1.3
+ '@jest/fake-timers': 28.1.3
+ '@jest/types': 28.1.3
+ '@types/node': 18.7.18
+ jest-mock: 28.1.3
+ jest-util: 28.1.3
+ dev: true
+
+ /jest-get-type/27.5.1:
+ resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dev: false
+
+ /jest-get-type/28.0.2:
+ resolution: {integrity: sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dev: true
+
+ /jest-haste-map/26.6.2:
+ resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==}
+ engines: {node: '>= 10.14.2'}
+ dependencies:
+ '@jest/types': 26.6.2
+ '@types/graceful-fs': 4.1.5
+ '@types/node': 18.7.18
+ anymatch: 3.1.2
+ fb-watchman: 2.0.2
+ graceful-fs: 4.2.10
+ jest-regex-util: 26.0.0
+ jest-serializer: 26.6.2
+ jest-util: 26.6.2
+ jest-worker: 26.6.2
+ micromatch: 4.0.5
+ sane: 4.1.0
+ walker: 1.0.8
+ optionalDependencies:
+ fsevents: 2.3.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /jest-haste-map/27.5.1:
+ resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.5.1
+ '@types/graceful-fs': 4.1.5
+ '@types/node': 18.7.18
+ anymatch: 3.1.2
+ fb-watchman: 2.0.2
+ graceful-fs: 4.2.10
+ jest-regex-util: 27.5.1
+ jest-serializer: 27.5.1
+ jest-util: 27.5.1
+ jest-worker: 27.5.1
+ micromatch: 4.0.5
+ walker: 1.0.8
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: false
+
+ /jest-haste-map/28.1.3:
+ resolution: {integrity: sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/types': 28.1.3
+ '@types/graceful-fs': 4.1.5
+ '@types/node': 18.7.18
+ anymatch: 3.1.2
+ fb-watchman: 2.0.2
+ graceful-fs: 4.2.10
+ jest-regex-util: 28.0.2
+ jest-util: 28.1.3
+ jest-worker: 28.1.3
+ micromatch: 4.0.5
+ walker: 1.0.8
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /jest-jasmine2/27.5.1:
+ resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ 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': 18.7.18
+ chalk: 4.1.2
+ co: 4.6.0
+ expect: 27.5.1
+ is-generator-fn: 2.1.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
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /jest-leak-detector/27.5.1:
+ resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ jest-get-type: 27.5.1
+ pretty-format: 27.5.1
+ dev: false
+
+ /jest-leak-detector/28.1.3:
+ resolution: {integrity: sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ jest-get-type: 28.0.2
+ pretty-format: 28.1.3
+ dev: true
+
+ /jest-matcher-utils/27.5.1:
+ resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ chalk: 4.1.2
+ jest-diff: 27.5.1
+ jest-get-type: 27.5.1
+ pretty-format: 27.5.1
+ dev: false
+
+ /jest-matcher-utils/28.1.3:
+ resolution: {integrity: sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ chalk: 4.1.2
+ jest-diff: 28.1.3
+ jest-get-type: 28.0.2
+ pretty-format: 28.1.3
+ dev: true
+
+ /jest-message-util/27.5.1:
+ resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@babel/code-frame': 7.18.6
+ '@jest/types': 27.5.1
+ '@types/stack-utils': 2.0.1
+ chalk: 4.1.2
+ graceful-fs: 4.2.10
+ micromatch: 4.0.5
+ pretty-format: 27.5.1
+ slash: 3.0.0
+ stack-utils: 2.0.5
+ dev: false
+
+ /jest-message-util/28.1.3:
+ resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@babel/code-frame': 7.18.6
+ '@jest/types': 28.1.3
+ '@types/stack-utils': 2.0.1
+ chalk: 4.1.2
+ graceful-fs: 4.2.10
+ micromatch: 4.0.5
+ pretty-format: 28.1.3
+ slash: 3.0.0
+ stack-utils: 2.0.5
+
+ /jest-mock/27.5.1:
+ resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.5.1
+ '@types/node': 18.7.18
+ dev: false
+
+ /jest-mock/28.1.3:
+ resolution: {integrity: sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/types': 28.1.3
+ '@types/node': 18.7.18
+ dev: true
+
+ /jest-pnp-resolver/1.2.2_jest-resolve@27.5.1:
+ resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==}
+ engines: {node: '>=6'}
+ peerDependencies:
+ jest-resolve: '*'
+ peerDependenciesMeta:
+ jest-resolve:
+ optional: true
+ dependencies:
+ jest-resolve: 27.5.1
+ dev: false
+
+ /jest-pnp-resolver/1.2.2_jest-resolve@28.1.1:
+ resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==}
+ engines: {node: '>=6'}
+ peerDependencies:
+ jest-resolve: '*'
+ peerDependenciesMeta:
+ jest-resolve:
+ optional: true
+ dependencies:
+ jest-resolve: 28.1.1
+ dev: true
+
+ /jest-pnp-resolver/1.2.2_jest-resolve@28.1.3:
+ resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==}
+ engines: {node: '>=6'}
+ peerDependencies:
+ jest-resolve: '*'
+ peerDependenciesMeta:
+ jest-resolve:
+ optional: true
+ dependencies:
+ jest-resolve: 28.1.3
+ dev: true
+
+ /jest-regex-util/26.0.0:
+ resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==}
+ engines: {node: '>= 10.14.2'}
+ dev: false
+
+ /jest-regex-util/27.5.1:
+ resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dev: false
+
+ /jest-regex-util/28.0.2:
+ resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+
+ /jest-resolve-dependencies/27.5.1:
+ resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.5.1
+ jest-regex-util: 27.5.1
+ jest-snapshot: 27.5.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /jest-resolve/27.5.1:
+ resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.5.1
+ chalk: 4.1.2
+ graceful-fs: 4.2.10
+ jest-haste-map: 27.5.1
+ jest-pnp-resolver: 1.2.2_jest-resolve@27.5.1
+ jest-util: 27.5.1
+ jest-validate: 27.5.1
+ resolve: 1.22.1
+ resolve.exports: 1.1.0
+ slash: 3.0.0
+ dev: false
+
+ /jest-resolve/28.1.1:
+ resolution: {integrity: sha512-/d1UbyUkf9nvsgdBildLe6LAD4DalgkgZcKd0nZ8XUGPyA/7fsnaQIlKVnDiuUXv/IeZhPEDrRJubVSulxrShA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ chalk: 4.1.2
+ graceful-fs: 4.2.10
+ jest-haste-map: 28.1.3
+ jest-pnp-resolver: 1.2.2_jest-resolve@28.1.1
+ jest-util: 28.1.1
+ jest-validate: 28.1.3
+ resolve: 1.22.1
+ resolve.exports: 1.1.0
+ slash: 3.0.0
+ dev: true
+
+ /jest-resolve/28.1.3:
+ resolution: {integrity: sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ chalk: 4.1.2
+ graceful-fs: 4.2.10
+ jest-haste-map: 28.1.3
+ jest-pnp-resolver: 1.2.2_jest-resolve@28.1.3
+ jest-util: 28.1.3
+ jest-validate: 28.1.3
+ resolve: 1.22.1
+ resolve.exports: 1.1.0
+ slash: 3.0.0
+ dev: true
+
+ /jest-runner/27.5.1:
+ resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ 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': 18.7.18
+ chalk: 4.1.2
+ emittery: 0.8.1
+ graceful-fs: 4.2.10
+ 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.21
+ throat: 6.0.1
+ transitivePeerDependencies:
+ - bufferutil
+ - canvas
+ - supports-color
+ - utf-8-validate
+ dev: false
+
+ /jest-runner/28.1.3:
+ resolution: {integrity: sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/console': 28.1.3
+ '@jest/environment': 28.1.3
+ '@jest/test-result': 28.1.3
+ '@jest/transform': 28.1.3
+ '@jest/types': 28.1.3
+ '@types/node': 18.7.18
+ chalk: 4.1.2
+ emittery: 0.10.2
+ graceful-fs: 4.2.10
+ jest-docblock: 28.1.1
+ jest-environment-node: 28.1.3
+ jest-haste-map: 28.1.3
+ jest-leak-detector: 28.1.3
+ jest-message-util: 28.1.3
+ jest-resolve: 28.1.3
+ jest-runtime: 28.1.3
+ jest-util: 28.1.3
+ jest-watcher: 28.1.3
+ jest-worker: 28.1.3
+ p-limit: 3.1.0
+ source-map-support: 0.5.13
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /jest-runtime/27.5.1:
+ resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ 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.1.2
+ cjs-module-lexer: 1.2.2
+ collect-v8-coverage: 1.0.1
+ execa: 5.1.1
+ glob: 7.2.3
+ graceful-fs: 4.2.10
+ 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
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /jest-runtime/28.1.3:
+ resolution: {integrity: sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/environment': 28.1.3
+ '@jest/fake-timers': 28.1.3
+ '@jest/globals': 28.1.3
+ '@jest/source-map': 28.1.2
+ '@jest/test-result': 28.1.3
+ '@jest/transform': 28.1.3
+ '@jest/types': 28.1.3
+ chalk: 4.1.2
+ cjs-module-lexer: 1.2.2
+ collect-v8-coverage: 1.0.1
+ execa: 5.1.1
+ glob: 7.2.3
+ graceful-fs: 4.2.10
+ jest-haste-map: 28.1.3
+ jest-message-util: 28.1.3
+ jest-mock: 28.1.3
+ jest-regex-util: 28.0.2
+ jest-resolve: 28.1.3
+ jest-snapshot: 28.1.3
+ jest-util: 28.1.3
+ slash: 3.0.0
+ strip-bom: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /jest-serializer/26.6.2:
+ resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==}
+ engines: {node: '>= 10.14.2'}
+ dependencies:
+ '@types/node': 18.7.18
+ graceful-fs: 4.2.10
+ dev: false
+
+ /jest-serializer/27.5.1:
+ resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@types/node': 18.7.18
+ graceful-fs: 4.2.10
+ dev: false
+
+ /jest-snapshot/27.5.1:
+ resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/generator': 7.19.6
+ '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.19.6
+ '@babel/traverse': 7.19.6
+ '@babel/types': 7.19.4
+ '@jest/transform': 27.5.1
+ '@jest/types': 27.5.1
+ '@types/babel__traverse': 7.18.1
+ '@types/prettier': 2.7.0
+ babel-preset-current-node-syntax: 1.0.1_@babel+core@7.19.6
+ chalk: 4.1.2
+ expect: 27.5.1
+ graceful-fs: 4.2.10
+ 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.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /jest-snapshot/28.1.3:
+ resolution: {integrity: sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@babel/core': 7.19.1
+ '@babel/generator': 7.19.0
+ '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.19.1
+ '@babel/traverse': 7.19.1
+ '@babel/types': 7.19.0
+ '@jest/expect-utils': 28.1.3
+ '@jest/transform': 28.1.3
+ '@jest/types': 28.1.3
+ '@types/babel__traverse': 7.18.1
+ '@types/prettier': 2.7.0
+ babel-preset-current-node-syntax: 1.0.1_@babel+core@7.19.1
+ chalk: 4.1.2
+ expect: 28.1.3
+ graceful-fs: 4.2.10
+ jest-diff: 28.1.3
+ jest-get-type: 28.0.2
+ jest-haste-map: 28.1.3
+ jest-matcher-utils: 28.1.3
+ jest-message-util: 28.1.3
+ jest-util: 28.1.3
+ natural-compare: 1.4.0
+ pretty-format: 28.1.3
+ semver: 7.3.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /jest-util/26.6.2:
+ resolution: {integrity: sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==}
+ engines: {node: '>= 10.14.2'}
+ dependencies:
+ '@jest/types': 26.6.2
+ '@types/node': 18.7.18
+ chalk: 4.1.2
+ graceful-fs: 4.2.10
+ is-ci: 2.0.0
+ micromatch: 4.0.5
+ dev: false
+
+ /jest-util/27.5.1:
+ resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.5.1
+ '@types/node': 18.7.18
+ chalk: 4.1.2
+ ci-info: 3.4.0
+ graceful-fs: 4.2.10
+ picomatch: 2.3.1
+ dev: false
+
+ /jest-util/28.1.1:
+ resolution: {integrity: sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/types': 28.1.3
+ '@types/node': 18.7.18
+ chalk: 4.1.2
+ ci-info: 3.4.0
+ graceful-fs: 4.2.10
+ picomatch: 2.3.1
+ dev: true
+
+ /jest-util/28.1.3:
+ resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/types': 28.1.3
+ '@types/node': 18.7.18
+ chalk: 4.1.2
+ ci-info: 3.4.0
+ graceful-fs: 4.2.10
+ picomatch: 2.3.1
+
+ /jest-validate/27.5.1:
+ resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.5.1
+ camelcase: 6.3.0
+ chalk: 4.1.2
+ jest-get-type: 27.5.1
+ leven: 3.1.0
+ pretty-format: 27.5.1
+ dev: false
+
+ /jest-validate/28.1.3:
+ resolution: {integrity: sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/types': 28.1.3
+ camelcase: 6.3.0
+ chalk: 4.1.2
+ jest-get-type: 28.0.2
+ leven: 3.1.0
+ pretty-format: 28.1.3
+ dev: true
+
+ /jest-watch-typeahead/1.1.0_jest@27.5.1:
+ resolution: {integrity: sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ jest: ^27.0.0 || ^28.0.0
+ dependencies:
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ jest: 27.5.1
+ jest-regex-util: 28.0.2
+ jest-watcher: 28.1.3
+ slash: 4.0.0
+ string-length: 5.0.1
+ strip-ansi: 7.0.1
+ dev: false
+
+ /jest-watcher/27.5.1:
+ resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/test-result': 27.5.1
+ '@jest/types': 27.5.1
+ '@types/node': 18.7.18
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ jest-util: 27.5.1
+ string-length: 4.0.2
+ dev: false
+
+ /jest-watcher/28.1.3:
+ resolution: {integrity: sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/test-result': 28.1.3
+ '@jest/types': 28.1.3
+ '@types/node': 18.7.18
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ emittery: 0.10.2
+ jest-util: 28.1.3
+ string-length: 4.0.2
+
+ /jest-worker/26.6.2:
+ resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==}
+ engines: {node: '>= 10.13.0'}
+ dependencies:
+ '@types/node': 18.7.18
+ merge-stream: 2.0.0
+ supports-color: 7.2.0
+
+ /jest-worker/27.5.1:
+ resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
+ engines: {node: '>= 10.13.0'}
+ dependencies:
+ '@types/node': 18.11.9
+ merge-stream: 2.0.0
+ supports-color: 8.1.1
+
+ /jest-worker/28.1.3:
+ resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@types/node': 18.7.18
+ merge-stream: 2.0.0
+ supports-color: 8.1.1
+
+ /jest/27.5.1:
+ resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@jest/core': 27.5.1
+ import-local: 3.1.0
+ jest-cli: 27.5.1
+ transitivePeerDependencies:
+ - bufferutil
+ - canvas
+ - supports-color
+ - ts-node
+ - utf-8-validate
+ dev: false
+
+ /js-sdsl/4.1.4:
+ resolution: {integrity: sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==}
+
+ /js-string-escape/1.0.1:
+ resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
+ /js-tokens/4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ /js-yaml/3.14.1:
+ resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
+ hasBin: true
+ dependencies:
+ argparse: 1.0.10
+ esprima: 4.0.1
+
+ /js-yaml/4.1.0:
+ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
+ hasBin: true
+ dependencies:
+ argparse: 2.0.1
+
+ /jsdom/16.7.0:
+ resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ canvas: ^2.5.0
+ peerDependenciesMeta:
+ canvas:
+ optional: true
+ dependencies:
+ abab: 2.0.6
+ acorn: 8.8.0
+ acorn-globals: 6.0.0
+ cssom: 0.4.4
+ cssstyle: 2.3.0
+ data-urls: 2.0.0
+ decimal.js: 10.4.2
+ domexception: 2.0.1
+ escodegen: 2.0.0
+ form-data: 3.0.1
+ html-encoding-sniffer: 2.0.1
+ http-proxy-agent: 4.0.1
+ https-proxy-agent: 5.0.1
+ is-potential-custom-element-name: 1.0.1
+ nwsapi: 2.2.2
+ parse5: 6.0.1
+ saxes: 5.0.1
+ symbol-tree: 3.2.4
+ tough-cookie: 4.1.2
+ 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.7.0
+ ws: 7.5.9
+ xml-name-validator: 3.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+ dev: false
+
+ /jsesc/0.5.0:
+ resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==}
+ hasBin: true
+ dev: false
+
+ /jsesc/2.5.2:
+ resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ /json-parse-better-errors/1.0.2:
+ resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
+
+ /json-parse-even-better-errors/2.3.1:
+ resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+
+ /json-schema-traverse/0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+
+ /json-schema-traverse/1.0.0:
+ resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+
+ /json-schema/0.4.0:
+ resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
+ dev: false
+
+ /json-stable-stringify-without-jsonify/1.0.1:
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+
+ /json-stringify-nice/1.1.4:
+ resolution: {integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==}
+ dev: true
+
+ /json-stringify-safe/5.0.1:
+ resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
+ dev: true
+
+ /json5/1.0.1:
+ resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==}
+ hasBin: true
+ dependencies:
+ minimist: 1.2.6
+
+ /json5/2.2.1:
+ resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ /jsonc-parser/3.1.0:
+ resolution: {integrity: sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==}
+ dev: true
+
+ /jsonc-parser/3.2.0:
+ resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
+ dev: true
+
+ /jsonfile/6.1.0:
+ resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
+ dependencies:
+ universalify: 2.0.0
+ optionalDependencies:
+ graceful-fs: 4.2.10
+
+ /jsonparse/1.3.1:
+ resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
+ engines: {'0': node >= 0.2.0}
+ dev: true
+
+ /jsonpointer/5.0.1:
+ resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /jsx-ast-utils/3.3.3:
+ resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==}
+ engines: {node: '>=4.0'}
+ dependencies:
+ array-includes: 3.1.5
+ object.assign: 4.1.4
+
+ /junk/3.1.0:
+ resolution: {integrity: sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /just-diff-apply/5.4.1:
+ resolution: {integrity: sha512-AAV5Jw7tsniWwih8Ly3fXxEZ06y+6p5TwQMsw0dzZ/wPKilzyDgdAnL0Ug4NNIquPUOh1vfFWEHbmXUqM5+o8g==}
+ dev: true
+
+ /just-diff/5.1.1:
+ resolution: {integrity: sha512-u8HXJ3HlNrTzY7zrYYKjNEfBlyjqhdBkoyTVdjtn7p02RJD5NvR8rIClzeGA7t+UYP1/7eAkWNLU0+P3QrEqKQ==}
+ dev: true
+
+ /kareem/2.4.1:
+ resolution: {integrity: sha512-aJ9opVoXroQUPfovYP5kaj2lM7Jn02Gw13bL0lg9v0V7SaUc0qavPs0Eue7d2DcC3NjqI6QAUElXNsuZSeM+EA==}
+ dev: false
+
+ /kind-of/3.2.2:
+ resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-buffer: 1.1.6
+ dev: false
+
+ /kind-of/4.0.0:
+ resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-buffer: 1.1.6
+ dev: false
+
+ /kind-of/5.1.0:
+ resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /kind-of/6.0.3:
+ resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
+ engines: {node: '>=0.10.0'}
+
+ /kleur/3.0.3:
+ resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /klona/2.0.5:
+ resolution: {integrity: sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==}
+ engines: {node: '>= 8'}
+ dev: false
+
+ /language-subtag-registry/0.3.22:
+ resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==}
+
+ /language-tags/1.0.5:
+ resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==}
+ dependencies:
+ language-subtag-registry: 0.3.22
+
+ /lazy-universal-dotenv/3.0.1:
+ resolution: {integrity: sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ==}
+ engines: {node: '>=6.0.0', npm: '>=6.0.0', yarn: '>=1.0.0'}
+ dependencies:
+ '@babel/runtime': 7.19.0
+ app-root-dir: 1.0.2
+ core-js: 3.25.5
+ dotenv: 8.6.0
+ dotenv-expand: 5.1.0
+ dev: false
+
+ /lerna/6.0.3:
+ resolution: {integrity: sha512-DzRCTZGoDI502daViNK1Ha+HPAVvTp72xshDOQ6o6SWCDTvnxFI3hGF6CBqGWnOoPwEOlQowHEIcPw5PjoMz8A==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ hasBin: true
+ dependencies:
+ '@lerna/add': 6.0.3
+ '@lerna/bootstrap': 6.0.3
+ '@lerna/changed': 6.0.3
+ '@lerna/clean': 6.0.3
+ '@lerna/cli': 6.0.3
+ '@lerna/command': 6.0.3
+ '@lerna/create': 6.0.3
+ '@lerna/diff': 6.0.3
+ '@lerna/exec': 6.0.3
+ '@lerna/import': 6.0.3
+ '@lerna/info': 6.0.3
+ '@lerna/init': 6.0.3
+ '@lerna/link': 6.0.3
+ '@lerna/list': 6.0.3
+ '@lerna/publish': 6.0.3_dtuttet22dxzt73ll2oxv2ugvu
+ '@lerna/run': 6.0.3
+ '@lerna/version': 6.0.3_dtuttet22dxzt73ll2oxv2ugvu
+ '@nrwl/devkit': 15.0.13_dtuttet22dxzt73ll2oxv2ugvu
+ import-local: 3.1.0
+ inquirer: 8.2.5
+ npmlog: 6.0.2
+ nx: 15.0.13
+ typescript: 4.8.4
+ transitivePeerDependencies:
+ - '@swc-node/register'
+ - '@swc/core'
+ - bluebird
+ - debug
+ - encoding
+ - supports-color
+ dev: true
+
+ /leven/3.1.0:
+ resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
+ engines: {node: '>=6'}
+
+ /levn/0.3.0:
+ resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.1.2
+ type-check: 0.3.2
+ dev: false
+
+ /levn/0.4.1:
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+
+ /libnpmaccess/6.0.4:
+ resolution: {integrity: sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ aproba: 2.0.0
+ minipass: 3.3.4
+ npm-package-arg: 9.1.2
+ npm-registry-fetch: 13.3.1
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+ dev: true
+
+ /libnpmpublish/6.0.5:
+ resolution: {integrity: sha512-LUR08JKSviZiqrYTDfywvtnsnxr+tOvBU0BF8H+9frt7HMvc6Qn6F8Ubm72g5hDTHbq8qupKfDvDAln2TVPvFg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ normalize-package-data: 4.0.1
+ npm-package-arg: 9.1.2
+ npm-registry-fetch: 13.3.1
+ semver: 7.3.7
+ ssri: 9.0.1
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+ dev: true
+
+ /libphonenumber-js/1.10.13:
+ resolution: {integrity: sha512-b74iyWmwb4GprAUPjPkJ11GTC7KX4Pd3onpJfKxYyY8y9Rbb4ERY47LvCMEDM09WD3thiLDMXtkfDK/AX+zT7Q==}
+ dev: false
+
+ /lilconfig/2.0.5:
+ resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /lilconfig/2.0.6:
+ resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /lines-and-columns/1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+
+ /lint-staged/13.0.3:
+ resolution: {integrity: sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug==}
+ engines: {node: ^14.13.1 || >=16.0.0}
+ hasBin: true
+ dependencies:
+ cli-truncate: 3.1.0
+ colorette: 2.0.19
+ commander: 9.4.0
+ debug: 4.3.4
+ execa: 6.1.0
+ lilconfig: 2.0.5
+ listr2: 4.0.5
+ micromatch: 4.0.5
+ normalize-path: 3.0.0
+ object-inspect: 1.12.2
+ pidtree: 0.6.0
+ string-argv: 0.3.1
+ yaml: 2.1.1
+ transitivePeerDependencies:
+ - enquirer
+ - supports-color
+ dev: true
+
+ /listr2/4.0.5:
+ resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ enquirer: '>= 2.3.0 < 3'
+ peerDependenciesMeta:
+ enquirer:
+ optional: true
+ dependencies:
+ cli-truncate: 2.1.0
+ colorette: 2.0.19
+ log-update: 4.0.0
+ p-map: 4.0.0
+ rfdc: 1.3.0
+ rxjs: 7.5.6
+ through: 2.3.8
+ wrap-ansi: 7.0.0
+ dev: true
+
+ /load-json-file/1.1.0:
+ resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ graceful-fs: 4.2.10
+ parse-json: 2.2.0
+ pify: 2.3.0
+ pinkie-promise: 2.0.1
+ strip-bom: 2.0.0
+ dev: false
+ optional: true
+
+ /load-json-file/4.0.0:
+ resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==}
+ engines: {node: '>=4'}
+ dependencies:
+ graceful-fs: 4.2.10
+ parse-json: 4.0.0
+ pify: 3.0.0
+ strip-bom: 3.0.0
+ dev: true
+
+ /load-json-file/6.2.0:
+ resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ graceful-fs: 4.2.10
+ parse-json: 5.2.0
+ strip-bom: 4.0.0
+ type-fest: 0.6.0
+ dev: true
+
+ /loader-runner/2.4.0:
+ resolution: {integrity: sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==}
+ engines: {node: '>=4.3.0 <5.0.0 || >=5.10'}
+ dev: false
+
+ /loader-runner/4.3.0:
+ resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==}
+ engines: {node: '>=6.11.5'}
+
+ /loader-utils/1.4.0:
+ resolution: {integrity: sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==}
+ engines: {node: '>=4.0.0'}
+ dependencies:
+ big.js: 5.2.2
+ emojis-list: 3.0.0
+ json5: 1.0.1
+ dev: false
+
+ /loader-utils/2.0.3:
+ resolution: {integrity: sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==}
+ engines: {node: '>=8.9.0'}
+ dependencies:
+ big.js: 5.2.2
+ emojis-list: 3.0.0
+ json5: 2.2.1
+
+ /loader-utils/3.2.0:
+ resolution: {integrity: sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==}
+ engines: {node: '>= 12.13.0'}
+ dev: false
+
+ /locate-path/2.0.0:
+ resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==}
+ engines: {node: '>=4'}
+ dependencies:
+ p-locate: 2.0.0
+ path-exists: 3.0.0
+ dev: true
+
+ /locate-path/3.0.0:
+ resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==}
+ engines: {node: '>=6'}
+ dependencies:
+ p-locate: 3.0.0
+ path-exists: 3.0.0
+ dev: false
+
+ /locate-path/5.0.0:
+ resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
+ engines: {node: '>=8'}
+ dependencies:
+ p-locate: 4.1.0
+
+ /locate-path/6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
+ dependencies:
+ p-locate: 5.0.0
+
+ /lodash.camelcase/4.3.0:
+ resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
+ dev: true
+
+ /lodash.debounce/4.0.8:
+ resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
+ dev: false
+
+ /lodash.escaperegexp/4.1.2:
+ resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==}
+ dev: false
+
+ /lodash.groupby/4.6.0:
+ resolution: {integrity: sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==}
+ dev: false
+
+ /lodash.isboolean/3.0.3:
+ resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==}
+ dev: false
+
+ /lodash.isequal/4.5.0:
+ resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
+ dev: false
+
+ /lodash.isfunction/3.0.9:
+ resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==}
+ dev: false
+
+ /lodash.ismatch/4.4.0:
+ resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==}
+ dev: true
+
+ /lodash.isnil/4.0.0:
+ resolution: {integrity: sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==}
+ dev: false
+
+ /lodash.isundefined/3.0.1:
+ resolution: {integrity: sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==}
+ dev: false
+
+ /lodash.memoize/4.1.2:
+ resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
+ dev: false
+
+ /lodash.merge/4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+
+ /lodash.sortby/4.7.0:
+ resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
+ dev: false
+
+ /lodash.uniq/4.5.0:
+ resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==}
+ dev: false
+
+ /lodash/4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+
+ /log-symbols/4.1.0:
+ resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
+ engines: {node: '>=10'}
+ dependencies:
+ chalk: 4.1.2
+ is-unicode-supported: 0.1.0
+ dev: true
+
+ /log-update/4.0.0:
+ resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-escapes: 4.3.2
+ cli-cursor: 3.1.0
+ slice-ansi: 4.0.0
+ wrap-ansi: 6.2.0
+ dev: true
+
+ /loose-envify/1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+ dependencies:
+ js-tokens: 4.0.0
+
+ /loud-rejection/1.6.0:
+ resolution: {integrity: sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ currently-unhandled: 0.4.1
+ signal-exit: 3.0.7
+ dev: false
+ optional: true
+
+ /loupe/2.3.6:
+ resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==}
+ dependencies:
+ get-func-name: 2.0.0
+ dev: true
+
+ /lower-case/2.0.2:
+ resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
+ dependencies:
+ tslib: 2.4.0
+ dev: false
+
+ /lru-cache/5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+ dependencies:
+ yallist: 3.1.1
+ dev: false
+
+ /lru-cache/6.0.0:
+ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+ engines: {node: '>=10'}
+ dependencies:
+ yallist: 4.0.0
+
+ /lru-cache/7.14.1:
+ resolution: {integrity: sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /lunr/2.3.9:
+ resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==}
+ dev: true
+
+ /macos-release/2.5.0:
+ resolution: {integrity: sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /magic-string/0.25.9:
+ resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
+ dependencies:
+ sourcemap-codec: 1.4.8
+ dev: false
+
+ /magic-string/0.26.2:
+ resolution: {integrity: sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==}
+ engines: {node: '>=12'}
+ dependencies:
+ sourcemap-codec: 1.4.8
+ dev: true
+
+ /magic-string/0.26.7:
+ resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==}
+ engines: {node: '>=12'}
+ dependencies:
+ sourcemap-codec: 1.4.8
+ dev: true
+
+ /make-dir/2.1.0:
+ resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
+ engines: {node: '>=6'}
+ dependencies:
+ pify: 4.0.1
+ semver: 5.7.1
+
+ /make-dir/3.1.0:
+ resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
+ engines: {node: '>=8'}
+ dependencies:
+ semver: 6.3.0
+
+ /make-error/1.3.6:
+ resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
+
+ /make-fetch-happen/10.2.1:
+ resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ agentkeepalive: 4.2.1
+ cacache: 16.1.3
+ http-cache-semantics: 4.1.0
+ http-proxy-agent: 5.0.0
+ https-proxy-agent: 5.0.1
+ is-lambda: 1.0.1
+ lru-cache: 7.14.1
+ minipass: 3.3.4
+ minipass-collect: 1.0.2
+ minipass-fetch: 2.1.2
+ minipass-flush: 1.0.5
+ minipass-pipeline: 1.2.4
+ negotiator: 0.6.3
+ promise-retry: 2.0.1
+ socks-proxy-agent: 7.0.0
+ ssri: 9.0.1
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+ dev: true
+
+ /makeerror/1.0.12:
+ resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==}
+ dependencies:
+ tmpl: 1.0.5
+
+ /map-cache/0.2.2:
+ resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /map-obj/1.0.1:
+ resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
+ engines: {node: '>=0.10.0'}
+
+ /map-obj/4.3.0:
+ resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /map-or-similar/1.5.0:
+ resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==}
+ dev: false
+
+ /map-visit/1.0.0:
+ resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ object-visit: 1.0.1
+ dev: false
+
+ /markdown-escapes/1.0.4:
+ resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==}
+ dev: false
+
+ /marked/4.2.2:
+ resolution: {integrity: sha512-JjBTFTAvuTgANXx82a5vzK9JLSMoV6V3LBVn4Uhdso6t7vXrGx7g1Cd2r6NYSsxrYbQGFCMqBDhFHyK5q2UvcQ==}
+ engines: {node: '>= 12'}
+ hasBin: true
+ dev: true
+
+ /md5.js/1.3.5:
+ resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==}
+ dependencies:
+ hash-base: 3.1.0
+ inherits: 2.0.4
+ safe-buffer: 5.2.1
+ dev: false
+
+ /mdast-squeeze-paragraphs/4.0.0:
+ resolution: {integrity: sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==}
+ dependencies:
+ unist-util-remove: 2.1.0
+ dev: false
+
+ /mdast-util-definitions/4.0.0:
+ resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==}
+ dependencies:
+ unist-util-visit: 2.0.3
+ dev: false
+
+ /mdast-util-to-hast/10.0.1:
+ resolution: {integrity: sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==}
+ dependencies:
+ '@types/mdast': 3.0.10
+ '@types/unist': 2.0.6
+ mdast-util-definitions: 4.0.0
+ mdurl: 1.0.1
+ unist-builder: 2.0.3
+ unist-util-generated: 1.1.6
+ unist-util-position: 3.1.0
+ unist-util-visit: 2.0.3
+ dev: false
+
+ /mdast-util-to-string/1.1.0:
+ resolution: {integrity: sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==}
+ dev: false
+
+ /mdn-data/2.0.14:
+ resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
+ dev: false
+
+ /mdn-data/2.0.4:
+ resolution: {integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==}
+ dev: false
+
+ /mdurl/1.0.1:
+ resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==}
+ dev: false
+
+ /media-typer/0.3.0:
+ resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /memfs/3.4.7:
+ resolution: {integrity: sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==}
+ engines: {node: '>= 4.0.0'}
+ dependencies:
+ fs-monkey: 1.0.3
+
+ /memoizerific/1.11.3:
+ resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==}
+ dependencies:
+ map-or-similar: 1.5.0
+ dev: false
+
+ /memory-fs/0.4.1:
+ resolution: {integrity: sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==}
+ dependencies:
+ errno: 0.1.8
+ readable-stream: 2.3.7
+ dev: false
+
+ /memory-fs/0.5.0:
+ resolution: {integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==}
+ engines: {node: '>=4.3.0 <5.0.0 || >=5.10'}
+ dependencies:
+ errno: 0.1.8
+ readable-stream: 2.3.7
+ dev: false
+
+ /memory-pager/1.5.0:
+ resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==}
+ dev: false
+ optional: true
+
+ /meow/3.7.0:
+ resolution: {integrity: sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ camelcase-keys: 2.1.0
+ decamelize: 1.2.0
+ loud-rejection: 1.6.0
+ map-obj: 1.0.1
+ minimist: 1.2.6
+ normalize-package-data: 2.5.0
+ object-assign: 4.1.1
+ read-pkg-up: 1.0.1
+ redent: 1.0.0
+ trim-newlines: 1.0.0
+ dev: false
+ optional: true
+
+ /meow/8.1.2:
+ resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@types/minimist': 1.2.2
+ camelcase-keys: 6.2.2
+ decamelize-keys: 1.1.0
+ hard-rejection: 2.1.0
+ minimist-options: 4.1.0
+ normalize-package-data: 3.0.3
+ read-pkg-up: 7.0.1
+ redent: 3.0.0
+ trim-newlines: 3.0.1
+ type-fest: 0.18.1
+ yargs-parser: 20.2.9
+ dev: true
+
+ /merge-descriptors/1.0.1:
+ resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==}
+ dev: false
+
+ /merge-stream/2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+
+ /merge2/1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+
+ /methods/1.1.2:
+ resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /microevent.ts/0.1.1:
+ resolution: {integrity: sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==}
+ dev: false
+
+ /micromatch/3.1.10:
+ resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-diff: 4.0.0
+ array-unique: 0.3.2
+ braces: 2.3.2
+ define-property: 2.0.2
+ extend-shallow: 3.0.2
+ extglob: 2.0.4
+ fragment-cache: 0.2.1
+ kind-of: 6.0.3
+ nanomatch: 1.2.13
+ object.pick: 1.3.0
+ regex-not: 1.0.2
+ snapdragon: 0.8.2
+ to-regex: 3.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /micromatch/4.0.5:
+ resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
+ engines: {node: '>=8.6'}
+ dependencies:
+ braces: 3.0.2
+ picomatch: 2.3.1
+
+ /miller-rabin/4.0.1:
+ resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==}
+ hasBin: true
+ dependencies:
+ bn.js: 4.12.0
+ brorand: 1.1.0
+ dev: false
+
+ /mime-db/1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ /mime-types/2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ mime-db: 1.52.0
+
+ /mime/1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: false
+
+ /mime/2.6.0:
+ resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==}
+ engines: {node: '>=4.0.0'}
+ hasBin: true
+ dev: false
+
+ /mimic-fn/2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+
+ /mimic-fn/4.0.0:
+ resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /min-document/2.19.0:
+ resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==}
+ dependencies:
+ dom-walk: 0.1.2
+ dev: false
+
+ /min-indent/1.0.1:
+ resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
+ engines: {node: '>=4'}
+
+ /mini-css-extract-plugin/2.6.1_webpack@5.74.0:
+ resolution: {integrity: sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==}
+ engines: {node: '>= 12.13.0'}
+ peerDependencies:
+ webpack: ^5.0.0
+ dependencies:
+ schema-utils: 4.0.0
+ webpack: 5.74.0
+ dev: false
+
+ /minimalistic-assert/1.0.1:
+ resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
+ dev: false
+
+ /minimalistic-crypto-utils/1.0.1:
+ resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==}
+ dev: false
+
+ /minimatch/3.0.4:
+ resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==}
+ dependencies:
+ brace-expansion: 1.1.11
+ dev: false
+
+ /minimatch/3.0.5:
+ resolution: {integrity: sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==}
+ dependencies:
+ brace-expansion: 1.1.11
+ dev: true
+
+ /minimatch/3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ dependencies:
+ brace-expansion: 1.1.11
+
+ /minimatch/5.0.1:
+ resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==}
+ engines: {node: '>=10'}
+ dependencies:
+ brace-expansion: 2.0.1
+ dev: true
+
+ /minimatch/5.1.0:
+ resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==}
+ engines: {node: '>=10'}
+ dependencies:
+ brace-expansion: 2.0.1
+
+ /minimist-options/4.1.0:
+ resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
+ engines: {node: '>= 6'}
+ dependencies:
+ arrify: 1.0.1
+ is-plain-obj: 1.1.0
+ kind-of: 6.0.3
+ dev: true
+
+ /minimist/1.2.6:
+ resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==}
+
+ /minipass-collect/1.0.2:
+ resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==}
+ engines: {node: '>= 8'}
+ dependencies:
+ minipass: 3.3.4
+
+ /minipass-fetch/2.1.2:
+ resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ minipass: 3.3.4
+ minipass-sized: 1.0.3
+ minizlib: 2.1.2
+ optionalDependencies:
+ encoding: 0.1.13
+ dev: true
+
+ /minipass-flush/1.0.5:
+ resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==}
+ engines: {node: '>= 8'}
+ dependencies:
+ minipass: 3.3.4
+
+ /minipass-json-stream/1.0.1:
+ resolution: {integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==}
+ dependencies:
+ jsonparse: 1.3.1
+ minipass: 3.3.4
+ dev: true
+
+ /minipass-pipeline/1.2.4:
+ resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==}
+ engines: {node: '>=8'}
+ dependencies:
+ minipass: 3.3.4
+
+ /minipass-sized/1.0.3:
+ resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==}
+ engines: {node: '>=8'}
+ dependencies:
+ minipass: 3.3.4
+ dev: true
+
+ /minipass/3.3.4:
+ resolution: {integrity: sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==}
+ engines: {node: '>=8'}
+ dependencies:
+ yallist: 4.0.0
+
+ /minizlib/2.1.2:
+ resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
+ engines: {node: '>= 8'}
+ dependencies:
+ minipass: 3.3.4
+ yallist: 4.0.0
+
+ /mississippi/3.0.0:
+ resolution: {integrity: sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==}
+ engines: {node: '>=4.0.0'}
+ dependencies:
+ concat-stream: 1.6.2
+ duplexify: 3.7.1
+ end-of-stream: 1.4.4
+ flush-write-stream: 1.1.1
+ from2: 2.3.0
+ parallel-transform: 1.2.0
+ pump: 3.0.0
+ pumpify: 1.5.1
+ stream-each: 1.2.3
+ through2: 2.0.5
+ dev: false
+
+ /mixin-deep/1.3.2:
+ resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ for-in: 1.0.2
+ is-extendable: 1.0.1
+ dev: false
+
+ /mkdirp-infer-owner/2.0.0:
+ resolution: {integrity: sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==}
+ engines: {node: '>=10'}
+ dependencies:
+ chownr: 2.0.0
+ infer-owner: 1.0.4
+ mkdirp: 1.0.4
+ dev: true
+
+ /mkdirp/0.5.6:
+ resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
+ hasBin: true
+ dependencies:
+ minimist: 1.2.6
+ dev: false
+
+ /mkdirp/1.0.4:
+ resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ /mocha/10.1.0:
+ resolution: {integrity: sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg==}
+ engines: {node: '>= 14.0.0'}
+ hasBin: true
+ dependencies:
+ ansi-colors: 4.1.1
+ browser-stdout: 1.3.1
+ chokidar: 3.5.3
+ debug: 4.3.4_supports-color@8.1.1
+ diff: 5.0.0
+ escape-string-regexp: 4.0.0
+ find-up: 5.0.0
+ glob: 7.2.0
+ he: 1.2.0
+ js-yaml: 4.1.0
+ log-symbols: 4.1.0
+ minimatch: 5.0.1
+ ms: 2.1.3
+ nanoid: 3.3.3
+ serialize-javascript: 6.0.0
+ strip-json-comments: 3.1.1
+ supports-color: 8.1.1
+ workerpool: 6.2.1
+ yargs: 16.2.0
+ yargs-parser: 20.2.4
+ yargs-unparser: 2.0.0
+ dev: true
+
+ /modify-values/1.0.1:
+ resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /mongodb-connection-string-url/2.5.3:
+ resolution: {integrity: sha512-f+/WsED+xF4B74l3k9V/XkTVj5/fxFH2o5ToKXd8Iyi5UhM+sO9u0Ape17Mvl/GkZaFtM0HQnzAG5OTmhKw+tQ==}
+ dependencies:
+ '@types/whatwg-url': 8.2.2
+ whatwg-url: 11.0.0
+ dev: false
+
+ /mongodb/4.9.1:
+ resolution: {integrity: sha512-ZhgI/qBf84fD7sI4waZBoLBNJYPQN5IOC++SBCiPiyhzpNKOxN/fi0tBHvH2dEC42HXtNEbFB0zmNz4+oVtorQ==}
+ engines: {node: '>=12.9.0'}
+ dependencies:
+ bson: 4.7.0
+ denque: 2.1.0
+ mongodb-connection-string-url: 2.5.3
+ socks: 2.7.0
+ optionalDependencies:
+ saslprep: 1.0.3
+ dev: false
+
+ /mongoose/6.6.1:
+ resolution: {integrity: sha512-hPDamnn6quL9TjIrOudqUS5sMilENmP/gfxoCIb+rDmlzawtM7+MVCAWrM9930fzD20N7qAema/zE9QIDuifhQ==}
+ engines: {node: '>=12.0.0'}
+ dependencies:
+ bson: 4.7.0
+ kareem: 2.4.1
+ mongodb: 4.9.1
+ mpath: 0.9.0
+ mquery: 4.0.3
+ ms: 2.1.3
+ sift: 16.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /move-concurrently/1.0.1:
+ resolution: {integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==}
+ dependencies:
+ aproba: 1.2.0
+ copy-concurrently: 1.0.5
+ fs-write-stream-atomic: 1.0.10
+ mkdirp: 0.5.6
+ rimraf: 2.7.1
+ run-queue: 1.0.3
+ dev: false
+
+ /mpath/0.9.0:
+ resolution: {integrity: sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==}
+ engines: {node: '>=4.0.0'}
+ dev: false
+
+ /mquery/4.0.3:
+ resolution: {integrity: sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==}
+ engines: {node: '>=12.0.0'}
+ dependencies:
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /ms/2.0.0:
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+
+ /ms/2.1.1:
+ resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==}
+ dev: false
+
+ /ms/2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+
+ /ms/2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ /multer/1.4.4-lts.1:
+ resolution: {integrity: sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==}
+ engines: {node: '>= 6.0.0'}
+ dependencies:
+ append-field: 1.0.0
+ busboy: 1.6.0
+ concat-stream: 1.6.2
+ mkdirp: 0.5.6
+ object-assign: 4.1.1
+ type-is: 1.6.18
+ xtend: 4.0.2
+ dev: false
+
+ /multicast-dns/7.2.5:
+ resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==}
+ hasBin: true
+ dependencies:
+ dns-packet: 5.4.0
+ thunky: 1.1.0
+ dev: false
+
+ /multimatch/5.0.0:
+ resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@types/minimatch': 3.0.5
+ array-differ: 3.0.0
+ array-union: 2.1.0
+ arrify: 2.0.1
+ minimatch: 3.1.2
+ dev: true
+
+ /mute-stream/0.0.8:
+ resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==}
+ dev: true
+
+ /nan/2.17.0:
+ resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==}
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /nanoid/3.3.3:
+ resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+ dev: true
+
+ /nanoid/3.3.4:
+ resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ /nanomatch/1.2.13:
+ resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-diff: 4.0.0
+ array-unique: 0.3.2
+ define-property: 2.0.2
+ extend-shallow: 3.0.2
+ fragment-cache: 0.2.1
+ is-windows: 1.0.2
+ kind-of: 6.0.3
+ object.pick: 1.3.0
+ regex-not: 1.0.2
+ snapdragon: 0.8.2
+ to-regex: 3.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /natural-compare/1.4.0:
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+
+ /negotiator/0.6.3:
+ resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
+ engines: {node: '>= 0.6'}
+
+ /neo-async/2.6.2:
+ resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
+
+ /nested-error-stacks/2.1.1:
+ resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==}
+ dev: false
+
+ /nice-try/1.0.5:
+ resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
+ dev: false
+
+ /no-case/3.0.4:
+ resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
+ dependencies:
+ lower-case: 2.0.2
+ tslib: 2.4.0
+ dev: false
+
+ /node-abort-controller/3.0.1:
+ resolution: {integrity: sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw==}
+ dev: true
+
+ /node-addon-api/3.2.1:
+ resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==}
+ dev: true
+
+ /node-dir/0.1.17:
+ resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==}
+ engines: {node: '>= 0.10.5'}
+ dependencies:
+ minimatch: 3.1.2
+ dev: false
+
+ /node-emoji/1.11.0:
+ resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==}
+ dependencies:
+ lodash: 4.17.21
+ dev: true
+
+ /node-fetch/2.6.7:
+ resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+ dependencies:
+ whatwg-url: 5.0.0
+
+ /node-forge/1.3.1:
+ resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
+ engines: {node: '>= 6.13.0'}
+ dev: false
+
+ /node-gyp-build/4.5.0:
+ resolution: {integrity: sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==}
+ hasBin: true
+ dev: true
+
+ /node-gyp/9.3.0:
+ resolution: {integrity: sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==}
+ engines: {node: ^12.22 || ^14.13 || >=16}
+ hasBin: true
+ dependencies:
+ env-paths: 2.2.1
+ glob: 7.2.3
+ graceful-fs: 4.2.10
+ make-fetch-happen: 10.2.1
+ nopt: 6.0.0
+ npmlog: 6.0.2
+ rimraf: 3.0.2
+ semver: 7.3.7
+ tar: 6.1.11
+ which: 2.0.2
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+ dev: true
+
+ /node-int64/0.4.0:
+ resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
+
+ /node-libs-browser/2.2.1:
+ resolution: {integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==}
+ dependencies:
+ assert: 1.5.0
+ browserify-zlib: 0.2.0
+ buffer: 4.9.2
+ console-browserify: 1.2.0
+ constants-browserify: 1.0.0
+ crypto-browserify: 3.12.0
+ domain-browser: 1.2.0
+ events: 3.3.0
+ https-browserify: 1.0.0
+ os-browserify: 0.3.0
+ path-browserify: 0.0.1
+ process: 0.11.10
+ punycode: 1.4.1
+ querystring-es3: 0.2.1
+ readable-stream: 2.3.7
+ stream-browserify: 2.0.2
+ stream-http: 2.8.3
+ string_decoder: 1.3.0
+ timers-browserify: 2.0.12
+ tty-browserify: 0.0.0
+ url: 0.11.0
+ util: 0.11.1
+ vm-browserify: 1.1.2
+ dev: false
+
+ /node-machine-id/1.1.12:
+ resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==}
+ dev: true
+
+ /node-releases/2.0.6:
+ resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==}
+
+ /nodemon/2.0.20:
+ resolution: {integrity: sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==}
+ engines: {node: '>=8.10.0'}
+ hasBin: true
+ dependencies:
+ chokidar: 3.5.3
+ debug: 3.2.7_supports-color@5.5.0
+ ignore-by-default: 1.0.1
+ minimatch: 3.1.2
+ pstree.remy: 1.1.8
+ semver: 5.7.1
+ simple-update-notifier: 1.0.7
+ supports-color: 5.5.0
+ touch: 3.1.0
+ undefsafe: 2.0.5
+ dev: true
+
+ /nopt/1.0.10:
+ resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==}
+ hasBin: true
+ dependencies:
+ abbrev: 1.1.1
+ dev: true
+
+ /nopt/5.0.0:
+ resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dependencies:
+ abbrev: 1.1.1
+ dev: true
+
+ /nopt/6.0.0:
+ resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ hasBin: true
+ dependencies:
+ abbrev: 1.1.1
+ dev: true
+
+ /normalize-package-data/2.5.0:
+ resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
+ dependencies:
+ hosted-git-info: 2.8.9
+ resolve: 1.22.1
+ semver: 5.7.1
+ validate-npm-package-license: 3.0.4
+
+ /normalize-package-data/3.0.3:
+ resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==}
+ engines: {node: '>=10'}
+ dependencies:
+ hosted-git-info: 4.1.0
+ is-core-module: 2.10.0
+ semver: 7.3.7
+ validate-npm-package-license: 3.0.4
+ dev: true
+
+ /normalize-package-data/4.0.1:
+ resolution: {integrity: sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ hosted-git-info: 5.2.1
+ is-core-module: 2.10.0
+ semver: 7.3.7
+ validate-npm-package-license: 3.0.4
+ dev: true
+
+ /normalize-path/2.1.1:
+ resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ remove-trailing-separator: 1.1.0
+ dev: false
+
+ /normalize-path/3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+
+ /normalize-range/0.1.2:
+ resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /normalize-url/6.1.0:
+ resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /npm-bundled/1.1.2:
+ resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==}
+ dependencies:
+ npm-normalize-package-bin: 1.0.1
+ dev: true
+
+ /npm-bundled/2.0.1:
+ resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ npm-normalize-package-bin: 2.0.0
+ dev: true
+
+ /npm-install-checks/5.0.0:
+ resolution: {integrity: sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ semver: 7.3.7
+ dev: true
+
+ /npm-normalize-package-bin/1.0.1:
+ resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==}
+ dev: true
+
+ /npm-normalize-package-bin/2.0.0:
+ resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dev: true
+
+ /npm-package-arg/8.1.1:
+ resolution: {integrity: sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==}
+ engines: {node: '>=10'}
+ dependencies:
+ hosted-git-info: 3.0.8
+ semver: 7.3.7
+ validate-npm-package-name: 3.0.0
+ dev: true
+
+ /npm-package-arg/9.1.2:
+ resolution: {integrity: sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ hosted-git-info: 5.2.1
+ proc-log: 2.0.1
+ semver: 7.3.7
+ validate-npm-package-name: 4.0.0
+ dev: true
+
+ /npm-packlist/5.1.3:
+ resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ hasBin: true
+ dependencies:
+ glob: 8.0.3
+ ignore-walk: 5.0.1
+ npm-bundled: 2.0.1
+ npm-normalize-package-bin: 2.0.0
+ dev: true
+
+ /npm-pick-manifest/7.0.2:
+ resolution: {integrity: sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ npm-install-checks: 5.0.0
+ npm-normalize-package-bin: 2.0.0
+ npm-package-arg: 9.1.2
+ semver: 7.3.7
+ dev: true
+
+ /npm-registry-fetch/13.3.1:
+ resolution: {integrity: sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ make-fetch-happen: 10.2.1
+ minipass: 3.3.4
+ minipass-fetch: 2.1.2
+ minipass-json-stream: 1.0.1
+ minizlib: 2.1.2
+ npm-package-arg: 9.1.2
+ proc-log: 2.0.1
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+ dev: true
+
+ /npm-run-path/2.0.2:
+ resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==}
+ engines: {node: '>=4'}
+ dependencies:
+ path-key: 2.0.1
+ dev: false
+
+ /npm-run-path/4.0.1:
+ resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
+ engines: {node: '>=8'}
+ dependencies:
+ path-key: 3.1.1
+
+ /npm-run-path/5.1.0:
+ resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dependencies:
+ path-key: 4.0.0
+ dev: true
+
+ /npmlog/5.0.1:
+ resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==}
+ dependencies:
+ are-we-there-yet: 2.0.0
+ console-control-strings: 1.1.0
+ gauge: 3.0.2
+ set-blocking: 2.0.0
+ dev: false
+
+ /npmlog/6.0.2:
+ resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ are-we-there-yet: 3.0.1
+ console-control-strings: 1.1.0
+ gauge: 4.0.4
+ set-blocking: 2.0.0
+ dev: true
+
+ /nth-check/1.0.2:
+ resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==}
+ dependencies:
+ boolbase: 1.0.0
+ dev: false
+
+ /nth-check/2.1.1:
+ resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
+ dependencies:
+ boolbase: 1.0.0
+ dev: false
+
+ /num2fraction/1.2.2:
+ resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==}
+ dev: false
+
+ /nwsapi/2.2.2:
+ resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==}
+ dev: false
+
+ /nx/14.7.11:
+ resolution: {integrity: sha512-OMHkpReawEsI93b6zVfAs+gl6u2r8X7ebHCGOstvrI3BBP6q+TTCxJmuD99lrHLgXWGfPuQxhIEoBDINU+kNPA==}
+ hasBin: true
+ requiresBuild: true
+ peerDependencies:
+ '@swc-node/register': ^1.4.2
+ '@swc/core': ^1.2.173
+ peerDependenciesMeta:
+ '@swc-node/register':
+ optional: true
+ '@swc/core':
+ optional: true
+ dependencies:
+ '@nrwl/cli': 14.7.11
+ '@nrwl/tao': 14.7.11
+ '@parcel/watcher': 2.0.4
+ '@yarnpkg/lockfile': 1.1.0
+ '@yarnpkg/parsers': 3.0.0-rc.20
+ '@zkochan/js-yaml': 0.0.6
+ chalk: 4.1.0
+ chokidar: 3.5.3
+ cli-cursor: 3.1.0
+ cli-spinners: 2.6.1
+ cliui: 7.0.4
+ dotenv: 10.0.0
+ enquirer: 2.3.6
+ fast-glob: 3.2.7
+ figures: 3.2.0
+ flat: 5.0.2
+ fs-extra: 10.1.0
+ glob: 7.1.4
+ ignore: 5.2.0
+ js-yaml: 4.1.0
+ jsonc-parser: 3.2.0
+ minimatch: 3.0.5
+ npm-run-path: 4.0.1
+ open: 8.4.0
+ semver: 7.3.4
+ string-width: 4.2.3
+ strong-log-transformer: 2.1.0
+ tar-stream: 2.2.0
+ tmp: 0.2.1
+ tsconfig-paths: 3.14.1
+ tslib: 2.4.0
+ v8-compile-cache: 2.3.0
+ yargs: 17.5.1
+ yargs-parser: 21.0.1
+ dev: true
+
+ /nx/15.0.13:
+ resolution: {integrity: sha512-5mJGWz91B9/sxzLjXdD+pmZTel54NeNNxFDis8OhtGDn6eRZ25qWsZNDgzqIDtwKn3c9gThAMHU4XH2OTgWUnA==}
+ hasBin: true
+ requiresBuild: true
+ peerDependencies:
+ '@swc-node/register': ^1.4.2
+ '@swc/core': ^1.2.173
+ peerDependenciesMeta:
+ '@swc-node/register':
+ optional: true
+ '@swc/core':
+ optional: true
+ dependencies:
+ '@nrwl/cli': 15.0.13
+ '@nrwl/tao': 15.0.13
+ '@parcel/watcher': 2.0.4
+ '@yarnpkg/lockfile': 1.1.0
+ '@yarnpkg/parsers': 3.0.0-rc.20
+ '@zkochan/js-yaml': 0.0.6
+ axios: 1.1.3
+ chalk: 4.1.0
+ chokidar: 3.5.3
+ cli-cursor: 3.1.0
+ cli-spinners: 2.6.1
+ cliui: 7.0.4
+ dotenv: 10.0.0
+ enquirer: 2.3.6
+ fast-glob: 3.2.7
+ figures: 3.2.0
+ flat: 5.0.2
+ fs-extra: 10.1.0
+ glob: 7.1.4
+ ignore: 5.2.0
+ js-yaml: 4.1.0
+ jsonc-parser: 3.2.0
+ minimatch: 3.0.5
+ npm-run-path: 4.0.1
+ open: 8.4.0
+ semver: 7.3.4
+ string-width: 4.2.3
+ strong-log-transformer: 2.1.0
+ tar-stream: 2.2.0
+ tmp: 0.2.1
+ tsconfig-paths: 3.14.1
+ tslib: 2.4.0
+ v8-compile-cache: 2.3.0
+ yargs: 17.6.2
+ yargs-parser: 21.1.1
+ transitivePeerDependencies:
+ - debug
+ dev: true
+
+ /object-assign/4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+
+ /object-copy/0.1.0:
+ resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ copy-descriptor: 0.1.1
+ define-property: 0.2.5
+ kind-of: 3.2.2
+ dev: false
+
+ /object-hash/3.0.0:
+ resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
+ engines: {node: '>= 6'}
+ dev: false
+
+ /object-inspect/1.12.2:
+ resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==}
+
+ /object-keys/1.1.1:
+ resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
+ engines: {node: '>= 0.4'}
+
+ /object-visit/1.0.1:
+ resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ isobject: 3.0.1
+ dev: false
+
+ /object.assign/4.1.4:
+ resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.4
+ has-symbols: 1.0.3
+ object-keys: 1.1.1
+
+ /object.entries/1.1.5:
+ resolution: {integrity: sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.4
+ es-abstract: 1.20.3
+
+ /object.fromentries/2.0.5:
+ resolution: {integrity: sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.4
+ es-abstract: 1.20.3
+
+ /object.getownpropertydescriptors/2.1.4:
+ resolution: {integrity: sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ array.prototype.reduce: 1.0.4
+ call-bind: 1.0.2
+ define-properties: 1.1.4
+ es-abstract: 1.20.3
+ dev: false
+
+ /object.hasown/1.1.1:
+ resolution: {integrity: sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==}
+ dependencies:
+ define-properties: 1.1.4
+ es-abstract: 1.20.3
+
+ /object.pick/1.3.0:
+ resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ isobject: 3.0.1
+ dev: false
+
+ /object.values/1.1.5:
+ resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.4
+ es-abstract: 1.20.3
+
+ /objectorarray/1.0.5:
+ resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==}
+ dev: false
+
+ /obuf/1.1.2:
+ resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==}
+ dev: false
+
+ /on-finished/2.4.1:
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ ee-first: 1.1.1
+ dev: false
+
+ /on-headers/1.0.2:
+ resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
+ /once/1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+ dependencies:
+ wrappy: 1.0.2
+
+ /onetime/5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+ dependencies:
+ mimic-fn: 2.1.0
+
+ /onetime/6.0.0:
+ resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ mimic-fn: 4.0.0
+ dev: true
+
+ /open/7.4.2:
+ resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==}
+ engines: {node: '>=8'}
+ dependencies:
+ is-docker: 2.2.1
+ is-wsl: 2.2.0
+ dev: false
+
+ /open/8.4.0:
+ resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==}
+ engines: {node: '>=12'}
+ dependencies:
+ define-lazy-prop: 2.0.0
+ is-docker: 2.2.1
+ is-wsl: 2.2.0
+
+ /opener/1.5.2:
+ resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==}
+ hasBin: true
+ dev: false
+
+ /optionator/0.8.3:
+ resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ deep-is: 0.1.4
+ fast-levenshtein: 2.0.6
+ levn: 0.3.0
+ prelude-ls: 1.1.2
+ type-check: 0.3.2
+ word-wrap: 1.2.3
+ dev: false
+
+ /optionator/0.9.1:
+ resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ deep-is: 0.1.4
+ fast-levenshtein: 2.0.6
+ levn: 0.4.1
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ word-wrap: 1.2.3
+
+ /ora/5.4.1:
+ resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ bl: 4.1.0
+ chalk: 4.1.2
+ cli-cursor: 3.1.0
+ cli-spinners: 2.6.1
+ is-interactive: 1.0.0
+ is-unicode-supported: 0.1.0
+ log-symbols: 4.1.0
+ strip-ansi: 6.0.1
+ wcwidth: 1.0.1
+ dev: true
+
+ /os-browserify/0.3.0:
+ resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==}
+ dev: false
+
+ /os-homedir/1.0.2:
+ resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+ optional: true
+
+ /os-name/4.0.1:
+ resolution: {integrity: sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==}
+ engines: {node: '>=10'}
+ dependencies:
+ macos-release: 2.5.0
+ windows-release: 4.0.0
+ dev: true
+
+ /os-tmpdir/1.0.2:
+ resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /p-all/2.1.0:
+ resolution: {integrity: sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA==}
+ engines: {node: '>=6'}
+ dependencies:
+ p-map: 2.1.0
+ dev: false
+
+ /p-event/4.2.0:
+ resolution: {integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ p-timeout: 3.2.0
+ dev: false
+
+ /p-filter/2.1.0:
+ resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==}
+ engines: {node: '>=8'}
+ dependencies:
+ p-map: 2.1.0
+ dev: false
+
+ /p-finally/1.0.0:
+ resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
+ engines: {node: '>=4'}
+
+ /p-limit/1.3.0:
+ resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==}
+ engines: {node: '>=4'}
+ dependencies:
+ p-try: 1.0.0
+ dev: true
+
+ /p-limit/2.3.0:
+ resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
+ engines: {node: '>=6'}
+ dependencies:
+ p-try: 2.2.0
+
+ /p-limit/3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ yocto-queue: 0.1.0
+
+ /p-locate/2.0.0:
+ resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==}
+ engines: {node: '>=4'}
+ dependencies:
+ p-limit: 1.3.0
+ dev: true
+
+ /p-locate/3.0.0:
+ resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==}
+ engines: {node: '>=6'}
+ dependencies:
+ p-limit: 2.3.0
+ dev: false
+
+ /p-locate/4.1.0:
+ resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
+ engines: {node: '>=8'}
+ dependencies:
+ p-limit: 2.3.0
+
+ /p-locate/5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
+ dependencies:
+ p-limit: 3.1.0
+
+ /p-map-series/2.1.0:
+ resolution: {integrity: sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /p-map/2.1.0:
+ resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /p-map/3.0.0:
+ resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ aggregate-error: 3.1.0
+ dev: false
+
+ /p-map/4.0.0:
+ resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ aggregate-error: 3.1.0
+
+ /p-pipe/3.1.0:
+ resolution: {integrity: sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /p-queue/6.6.2:
+ resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ eventemitter3: 4.0.7
+ p-timeout: 3.2.0
+ dev: true
+
+ /p-reduce/2.1.0:
+ resolution: {integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /p-retry/4.6.2:
+ resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@types/retry': 0.12.0
+ retry: 0.13.1
+ dev: false
+
+ /p-timeout/3.2.0:
+ resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==}
+ engines: {node: '>=8'}
+ dependencies:
+ p-finally: 1.0.0
+
+ /p-try/1.0.0:
+ resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /p-try/2.2.0:
+ resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
+ engines: {node: '>=6'}
+
+ /p-waterfall/2.1.1:
+ resolution: {integrity: sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==}
+ engines: {node: '>=8'}
+ dependencies:
+ p-reduce: 2.1.0
+ dev: true
+
+ /pacote/13.6.2:
+ resolution: {integrity: sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ hasBin: true
+ dependencies:
+ '@npmcli/git': 3.0.2
+ '@npmcli/installed-package-contents': 1.0.7
+ '@npmcli/promise-spawn': 3.0.0
+ '@npmcli/run-script': 4.2.1
+ cacache: 16.1.3
+ chownr: 2.0.0
+ fs-minipass: 2.1.0
+ infer-owner: 1.0.4
+ minipass: 3.3.4
+ mkdirp: 1.0.4
+ npm-package-arg: 9.1.2
+ npm-packlist: 5.1.3
+ npm-pick-manifest: 7.0.2
+ npm-registry-fetch: 13.3.1
+ proc-log: 2.0.1
+ promise-retry: 2.0.1
+ read-package-json: 5.0.2
+ read-package-json-fast: 2.0.3
+ rimraf: 3.0.2
+ ssri: 9.0.1
+ tar: 6.1.11
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+ dev: true
+
+ /pako/1.0.11:
+ resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
+ dev: false
+
+ /parallel-transform/1.2.0:
+ resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==}
+ dependencies:
+ cyclist: 1.0.1
+ inherits: 2.0.4
+ readable-stream: 2.3.7
+ dev: false
+
+ /param-case/3.0.4:
+ resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==}
+ dependencies:
+ dot-case: 3.0.4
+ tslib: 2.4.0
+ dev: false
+
+ /parent-module/1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
+ dependencies:
+ callsites: 3.1.0
+
+ /parse-asn1/5.1.6:
+ resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==}
+ dependencies:
+ asn1.js: 5.4.1
+ browserify-aes: 1.2.0
+ evp_bytestokey: 1.0.3
+ pbkdf2: 3.1.2
+ safe-buffer: 5.2.1
+ dev: false
+
+ /parse-conflict-json/2.0.2:
+ resolution: {integrity: sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ json-parse-even-better-errors: 2.3.1
+ just-diff: 5.1.1
+ just-diff-apply: 5.4.1
+ dev: true
+
+ /parse-entities/2.0.0:
+ resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==}
+ dependencies:
+ character-entities: 1.2.4
+ character-entities-legacy: 1.1.4
+ character-reference-invalid: 1.1.4
+ is-alphanumerical: 1.0.4
+ is-decimal: 1.0.4
+ is-hexadecimal: 1.0.4
+ dev: false
+
+ /parse-json/2.2.0:
+ resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ error-ex: 1.3.2
+ dev: false
+ optional: true
+
+ /parse-json/4.0.0:
+ resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==}
+ engines: {node: '>=4'}
+ dependencies:
+ error-ex: 1.3.2
+ json-parse-better-errors: 1.0.2
+ dev: true
+
+ /parse-json/5.2.0:
+ resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@babel/code-frame': 7.18.6
+ error-ex: 1.3.2
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.2.4
+
+ /parse-path/7.0.0:
+ resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==}
+ dependencies:
+ protocols: 2.0.1
+ dev: true
+
+ /parse-url/8.1.0:
+ resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==}
+ dependencies:
+ parse-path: 7.0.0
+ dev: true
+
+ /parse5/6.0.1:
+ resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
+ dev: false
+
+ /parseurl/1.3.3:
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
+ /pascal-case/3.1.2:
+ resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.4.0
+ dev: false
+
+ /pascalcase/0.1.1:
+ resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /path-browserify/0.0.1:
+ resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==}
+ dev: false
+
+ /path-dirname/1.0.2:
+ resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==}
+ dev: false
+
+ /path-exists/2.1.0:
+ resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ pinkie-promise: 2.0.1
+ dev: false
+ optional: true
+
+ /path-exists/3.0.0:
+ resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}
+ engines: {node: '>=4'}
+
+ /path-exists/4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+
+ /path-is-absolute/1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+
+ /path-key/2.0.1:
+ resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /path-key/3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+
+ /path-key/4.0.0:
+ resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /path-parse/1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+
+ /path-to-regexp/0.1.7:
+ resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
+ dev: false
+
+ /path-to-regexp/3.2.0:
+ resolution: {integrity: sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==}
+ dev: false
+
+ /path-type/1.1.0:
+ resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ graceful-fs: 4.2.10
+ pify: 2.3.0
+ pinkie-promise: 2.0.1
+ dev: false
+ optional: true
+
+ /path-type/3.0.0:
+ resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==}
+ engines: {node: '>=4'}
+ dependencies:
+ pify: 3.0.0
+
+ /path-type/4.0.0:
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
+
+ /pathval/1.1.1:
+ resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
+ dev: true
+
+ /pbkdf2/3.1.2:
+ resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==}
+ engines: {node: '>=0.12'}
+ dependencies:
+ create-hash: 1.2.0
+ create-hmac: 1.1.7
+ ripemd160: 2.0.2
+ safe-buffer: 5.2.1
+ sha.js: 2.4.11
+ dev: false
+
+ /performance-now/2.1.0:
+ resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==}
+ dev: false
+
+ /picocolors/0.2.1:
+ resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==}
+ dev: false
+
+ /picocolors/1.0.0:
+ resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+
+ /picomatch/2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ /pidtree/0.6.0:
+ resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
+ engines: {node: '>=0.10'}
+ hasBin: true
+ dev: true
+
+ /pify/2.3.0:
+ resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
+ engines: {node: '>=0.10.0'}
+
+ /pify/3.0.0:
+ resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
+ engines: {node: '>=4'}
+
+ /pify/4.0.1:
+ resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
+ engines: {node: '>=6'}
+
+ /pify/5.0.0:
+ resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /pinkie-promise/2.0.1:
+ resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ pinkie: 2.0.4
+ dev: false
+ optional: true
+
+ /pinkie/2.0.4:
+ resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+ optional: true
+
+ /pirates/4.0.5:
+ resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==}
+ engines: {node: '>= 6'}
+
+ /pkg-dir/3.0.0:
+ resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==}
+ engines: {node: '>=6'}
+ dependencies:
+ find-up: 3.0.0
+ dev: false
+
+ /pkg-dir/4.2.0:
+ resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ find-up: 4.1.0
+
+ /pkg-dir/5.0.0:
+ resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==}
+ engines: {node: '>=10'}
+ dependencies:
+ find-up: 5.0.0
+ dev: false
+
+ /pkg-up/3.1.0:
+ resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==}
+ engines: {node: '>=8'}
+ dependencies:
+ find-up: 3.0.0
+ dev: false
+
+ /pluralize/8.0.0:
+ resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /pnp-webpack-plugin/1.6.4_typescript@4.8.3:
+ resolution: {integrity: sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==}
+ engines: {node: '>=6'}
+ dependencies:
+ ts-pnp: 1.2.0_typescript@4.8.3
+ transitivePeerDependencies:
+ - typescript
+ dev: false
+
+ /polished/4.2.2:
+ resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@babel/runtime': 7.19.0
+ dev: false
+
+ /portfinder/1.0.32:
+ resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==}
+ engines: {node: '>= 0.12.0'}
+ dependencies:
+ async: 2.6.4
+ debug: 3.2.7
+ mkdirp: 0.5.6
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /posix-character-classes/0.1.1:
+ resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /postcss-attribute-case-insensitive/5.0.2_postcss@8.4.18:
+ resolution: {integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /postcss-browser-comments/4.0.0_ou6qvybldzyudiekdtxolschee:
+ resolution: {integrity: sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==}
+ engines: {node: '>=8'}
+ peerDependencies:
+ browserslist: '>=4'
+ postcss: '>=8'
+ dependencies:
+ browserslist: 4.21.4
+ postcss: 8.4.18
+ dev: false
+
+ /postcss-calc/8.2.4_postcss@8.4.18:
+ resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==}
+ peerDependencies:
+ postcss: ^8.2.2
+ dependencies:
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-clamp/4.1.0_postcss@8.4.18:
+ resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==}
+ engines: {node: '>=7.6.0'}
+ peerDependencies:
+ postcss: ^8.4.6
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-color-functional-notation/4.2.4_postcss@8.4.18:
+ resolution: {integrity: sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-color-hex-alpha/8.0.4_postcss@8.4.18:
+ resolution: {integrity: sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.4
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-color-rebeccapurple/7.1.1_postcss@8.4.18:
+ resolution: {integrity: sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-colormin/5.3.0_postcss@8.4.18:
+ resolution: {integrity: sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ browserslist: 4.21.4
+ caniuse-api: 3.0.0
+ colord: 2.9.3
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-convert-values/5.1.2_postcss@8.4.18:
+ resolution: {integrity: sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ browserslist: 4.21.4
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-custom-media/8.0.2_postcss@8.4.18:
+ resolution: {integrity: sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.3
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-custom-properties/12.1.10_postcss@8.4.18:
+ resolution: {integrity: sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-custom-selectors/6.0.3_postcss@8.4.18:
+ resolution: {integrity: sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.3
+ dependencies:
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /postcss-dir-pseudo-class/6.0.5_postcss@8.4.18:
+ resolution: {integrity: sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /postcss-discard-comments/5.1.2_postcss@8.4.18:
+ resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.18
+ dev: false
+
+ /postcss-discard-duplicates/5.1.0_postcss@8.4.18:
+ resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.18
+ dev: false
+
+ /postcss-discard-empty/5.1.1_postcss@8.4.18:
+ resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.18
+ dev: false
+
+ /postcss-discard-overridden/5.1.0_postcss@8.4.18:
+ resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.18
+ dev: false
+
+ /postcss-double-position-gradients/3.1.2_postcss@8.4.18:
+ resolution: {integrity: sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.18
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-env-function/4.0.6_postcss@8.4.18:
+ resolution: {integrity: sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.4
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-flexbugs-fixes/4.2.1:
+ resolution: {integrity: sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==}
+ dependencies:
+ postcss: 7.0.39
+ dev: false
+
+ /postcss-flexbugs-fixes/5.0.2_postcss@8.4.18:
+ resolution: {integrity: sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==}
+ peerDependencies:
+ postcss: ^8.1.4
+ dependencies:
+ postcss: 8.4.18
+ dev: false
+
+ /postcss-focus-visible/6.0.4_postcss@8.4.18:
+ resolution: {integrity: sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.4
+ dependencies:
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /postcss-focus-within/5.0.4_postcss@8.4.18:
+ resolution: {integrity: sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.4
+ dependencies:
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /postcss-font-variant/5.0.0_postcss@8.4.18:
+ resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==}
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ postcss: 8.4.18
+ dev: false
+
+ /postcss-gap-properties/3.0.5_postcss@8.4.18:
+ resolution: {integrity: sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ postcss: 8.4.18
+ dev: false
+
+ /postcss-image-set-function/4.0.7_postcss@8.4.18:
+ resolution: {integrity: sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-import/14.1.0_postcss@8.4.18:
+ resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ postcss: ^8.0.0
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ read-cache: 1.0.0
+ resolve: 1.22.1
+ dev: false
+
+ /postcss-initial/4.0.1_postcss@8.4.18:
+ resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==}
+ peerDependencies:
+ postcss: ^8.0.0
+ dependencies:
+ postcss: 8.4.18
+ dev: false
+
+ /postcss-js/4.0.0_postcss@8.4.18:
+ resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==}
+ engines: {node: ^12 || ^14 || >= 16}
+ peerDependencies:
+ postcss: ^8.3.3
+ dependencies:
+ camelcase-css: 2.0.1
+ postcss: 8.4.18
+ dev: false
+
+ /postcss-lab-function/4.2.1_postcss@8.4.18:
+ resolution: {integrity: sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.18
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-load-config/3.1.4_postcss@8.4.18:
+ resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
+ engines: {node: '>= 10'}
+ peerDependencies:
+ postcss: '>=8.0.9'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ postcss:
+ optional: true
+ ts-node:
+ optional: true
+ dependencies:
+ lilconfig: 2.0.6
+ postcss: 8.4.18
+ yaml: 1.10.2
+ dev: false
+
+ /postcss-loader/4.3.0_gzaxsinx64nntyd3vmdqwl7coe:
+ resolution: {integrity: sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==}
+ engines: {node: '>= 10.13.0'}
+ peerDependencies:
+ postcss: ^7.0.0 || ^8.0.1
+ webpack: ^4.0.0 || ^5.0.0
+ dependencies:
+ cosmiconfig: 7.0.1
+ klona: 2.0.5
+ loader-utils: 2.0.3
+ postcss: 7.0.39
+ schema-utils: 3.1.1
+ semver: 7.3.7
+ webpack: 4.46.0
+ dev: false
+
+ /postcss-loader/6.2.1_igyeriywjd4lwzfk4socqbj2qi:
+ resolution: {integrity: sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==}
+ engines: {node: '>= 12.13.0'}
+ peerDependencies:
+ postcss: ^7.0.0 || ^8.0.1
+ webpack: ^5.0.0
+ dependencies:
+ cosmiconfig: 7.0.1
+ klona: 2.0.5
+ postcss: 8.4.18
+ semver: 7.3.7
+ webpack: 5.74.0
+ dev: false
+
+ /postcss-logical/5.0.4_postcss@8.4.18:
+ resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.4
+ dependencies:
+ postcss: 8.4.18
+ dev: false
+
+ /postcss-media-minmax/5.0.0_postcss@8.4.18:
+ resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ postcss: 8.4.18
+ dev: false
+
+ /postcss-merge-longhand/5.1.6_postcss@8.4.18:
+ resolution: {integrity: sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ stylehacks: 5.1.0_postcss@8.4.18
+ dev: false
+
+ /postcss-merge-rules/5.1.2_postcss@8.4.18:
+ resolution: {integrity: sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ browserslist: 4.21.4
+ caniuse-api: 3.0.0
+ cssnano-utils: 3.1.0_postcss@8.4.18
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /postcss-minify-font-values/5.1.0_postcss@8.4.18:
+ resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-minify-gradients/5.1.1_postcss@8.4.18:
+ resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ colord: 2.9.3
+ cssnano-utils: 3.1.0_postcss@8.4.18
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-minify-params/5.1.3_postcss@8.4.18:
+ resolution: {integrity: sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ browserslist: 4.21.4
+ cssnano-utils: 3.1.0_postcss@8.4.18
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-minify-selectors/5.2.1_postcss@8.4.18:
+ resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /postcss-modules-extract-imports/2.0.0:
+ resolution: {integrity: sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==}
+ engines: {node: '>= 6'}
+ dependencies:
+ postcss: 7.0.39
+ dev: false
+
+ /postcss-modules-extract-imports/3.0.0_postcss@8.4.18:
+ resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ postcss: 8.4.18
+ dev: false
+
+ /postcss-modules-local-by-default/3.0.3:
+ resolution: {integrity: sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==}
+ engines: {node: '>= 6'}
+ dependencies:
+ icss-utils: 4.1.1
+ postcss: 7.0.39
+ postcss-selector-parser: 6.0.10
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-modules-local-by-default/4.0.0_postcss@8.4.18:
+ resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ icss-utils: 5.1.0_postcss@8.4.18
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-modules-scope/2.2.0:
+ resolution: {integrity: sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==}
+ engines: {node: '>= 6'}
+ dependencies:
+ postcss: 7.0.39
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /postcss-modules-scope/3.0.0_postcss@8.4.18:
+ resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /postcss-modules-values/3.0.0:
+ resolution: {integrity: sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==}
+ dependencies:
+ icss-utils: 4.1.1
+ postcss: 7.0.39
+ dev: false
+
+ /postcss-modules-values/4.0.0_postcss@8.4.18:
+ resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ icss-utils: 5.1.0_postcss@8.4.18
+ postcss: 8.4.18
+ dev: false
+
+ /postcss-nested/6.0.0_postcss@8.4.18:
+ resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==}
+ engines: {node: '>=12.0'}
+ peerDependencies:
+ postcss: ^8.2.14
+ dependencies:
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /postcss-nesting/10.2.0_postcss@8.4.18:
+ resolution: {integrity: sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ '@csstools/selector-specificity': 2.0.2_dvkg4kkb622mvceygg47xxdz3a
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /postcss-normalize-charset/5.1.0_postcss@8.4.18:
+ resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.18
+ dev: false
+
+ /postcss-normalize-display-values/5.1.0_postcss@8.4.18:
+ resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-normalize-positions/5.1.1_postcss@8.4.18:
+ resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-normalize-repeat-style/5.1.1_postcss@8.4.18:
+ resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-normalize-string/5.1.0_postcss@8.4.18:
+ resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-normalize-timing-functions/5.1.0_postcss@8.4.18:
+ resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-normalize-unicode/5.1.0_postcss@8.4.18:
+ resolution: {integrity: sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ browserslist: 4.21.4
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-normalize-url/5.1.0_postcss@8.4.18:
+ resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ normalize-url: 6.1.0
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-normalize-whitespace/5.1.1_postcss@8.4.18:
+ resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-normalize/10.0.1_ou6qvybldzyudiekdtxolschee:
+ resolution: {integrity: sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==}
+ engines: {node: '>= 12'}
+ peerDependencies:
+ browserslist: '>= 4'
+ postcss: '>= 8'
+ dependencies:
+ '@csstools/normalize.css': 10.1.0
+ browserslist: 4.21.4
+ postcss: 8.4.18
+ postcss-browser-comments: 4.0.0_ou6qvybldzyudiekdtxolschee
+ sanitize.css: 10.0.0
+ dev: false
+
+ /postcss-opacity-percentage/1.1.2:
+ resolution: {integrity: sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==}
+ engines: {node: ^12 || ^14 || >=16}
+ dev: false
+
+ /postcss-ordered-values/5.1.3_postcss@8.4.18:
+ resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ cssnano-utils: 3.1.0_postcss@8.4.18
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-overflow-shorthand/3.0.4_postcss@8.4.18:
+ resolution: {integrity: sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-page-break/3.0.4_postcss@8.4.18:
+ resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==}
+ peerDependencies:
+ postcss: ^8
+ dependencies:
+ postcss: 8.4.18
+ dev: false
+
+ /postcss-place/7.0.5_postcss@8.4.18:
+ resolution: {integrity: sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-preset-env/7.8.2_postcss@8.4.18:
+ resolution: {integrity: sha512-rSMUEaOCnovKnwc5LvBDHUDzpGP+nrUeWZGWt9M72fBvckCi45JmnJigUr4QG4zZeOHmOCNCZnd2LKDvP++ZuQ==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ '@csstools/postcss-cascade-layers': 1.1.1_postcss@8.4.18
+ '@csstools/postcss-color-function': 1.1.1_postcss@8.4.18
+ '@csstools/postcss-font-format-keywords': 1.0.1_postcss@8.4.18
+ '@csstools/postcss-hwb-function': 1.0.2_postcss@8.4.18
+ '@csstools/postcss-ic-unit': 1.0.1_postcss@8.4.18
+ '@csstools/postcss-is-pseudo-class': 2.0.7_postcss@8.4.18
+ '@csstools/postcss-nested-calc': 1.0.0_postcss@8.4.18
+ '@csstools/postcss-normalize-display-values': 1.0.1_postcss@8.4.18
+ '@csstools/postcss-oklab-function': 1.1.1_postcss@8.4.18
+ '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.18
+ '@csstools/postcss-stepped-value-functions': 1.0.1_postcss@8.4.18
+ '@csstools/postcss-text-decoration-shorthand': 1.0.0_postcss@8.4.18
+ '@csstools/postcss-trigonometric-functions': 1.0.2_postcss@8.4.18
+ '@csstools/postcss-unset-value': 1.0.2_postcss@8.4.18
+ autoprefixer: 10.4.12_postcss@8.4.18
+ browserslist: 4.21.4
+ css-blank-pseudo: 3.0.3_postcss@8.4.18
+ css-has-pseudo: 3.0.4_postcss@8.4.18
+ css-prefers-color-scheme: 6.0.3_postcss@8.4.18
+ cssdb: 7.0.2
+ postcss: 8.4.18
+ postcss-attribute-case-insensitive: 5.0.2_postcss@8.4.18
+ postcss-clamp: 4.1.0_postcss@8.4.18
+ postcss-color-functional-notation: 4.2.4_postcss@8.4.18
+ postcss-color-hex-alpha: 8.0.4_postcss@8.4.18
+ postcss-color-rebeccapurple: 7.1.1_postcss@8.4.18
+ postcss-custom-media: 8.0.2_postcss@8.4.18
+ postcss-custom-properties: 12.1.10_postcss@8.4.18
+ postcss-custom-selectors: 6.0.3_postcss@8.4.18
+ postcss-dir-pseudo-class: 6.0.5_postcss@8.4.18
+ postcss-double-position-gradients: 3.1.2_postcss@8.4.18
+ postcss-env-function: 4.0.6_postcss@8.4.18
+ postcss-focus-visible: 6.0.4_postcss@8.4.18
+ postcss-focus-within: 5.0.4_postcss@8.4.18
+ postcss-font-variant: 5.0.0_postcss@8.4.18
+ postcss-gap-properties: 3.0.5_postcss@8.4.18
+ postcss-image-set-function: 4.0.7_postcss@8.4.18
+ postcss-initial: 4.0.1_postcss@8.4.18
+ postcss-lab-function: 4.2.1_postcss@8.4.18
+ postcss-logical: 5.0.4_postcss@8.4.18
+ postcss-media-minmax: 5.0.0_postcss@8.4.18
+ postcss-nesting: 10.2.0_postcss@8.4.18
+ postcss-opacity-percentage: 1.1.2
+ postcss-overflow-shorthand: 3.0.4_postcss@8.4.18
+ postcss-page-break: 3.0.4_postcss@8.4.18
+ postcss-place: 7.0.5_postcss@8.4.18
+ postcss-pseudo-class-any-link: 7.1.6_postcss@8.4.18
+ postcss-replace-overflow-wrap: 4.0.0_postcss@8.4.18
+ postcss-selector-not: 6.0.1_postcss@8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-pseudo-class-any-link/7.1.6_postcss@8.4.18:
+ resolution: {integrity: sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /postcss-reduce-initial/5.1.0_postcss@8.4.18:
+ resolution: {integrity: sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ browserslist: 4.21.4
+ caniuse-api: 3.0.0
+ postcss: 8.4.18
+ dev: false
+
+ /postcss-reduce-transforms/5.1.0_postcss@8.4.18:
+ resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /postcss-replace-overflow-wrap/4.0.0_postcss@8.4.18:
+ resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==}
+ peerDependencies:
+ postcss: ^8.0.3
+ dependencies:
+ postcss: 8.4.18
+ dev: false
+
+ /postcss-selector-not/6.0.1_postcss@8.4.18:
+ resolution: {integrity: sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==}
+ engines: {node: ^12 || ^14 || >=16}
+ peerDependencies:
+ postcss: ^8.2
+ dependencies:
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /postcss-selector-parser/6.0.10:
+ resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
+ engines: {node: '>=4'}
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+ dev: false
+
+ /postcss-svgo/5.1.0_postcss@8.4.18:
+ resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.18
+ postcss-value-parser: 4.2.0
+ svgo: 2.8.0
+ dev: false
+
+ /postcss-unique-selectors/5.1.1_postcss@8.4.18:
+ resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /postcss-value-parser/4.2.0:
+ resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+ dev: false
+
+ /postcss/7.0.39:
+ resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ picocolors: 0.2.1
+ source-map: 0.6.1
+ dev: false
+
+ /postcss/8.4.18:
+ resolution: {integrity: sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.4
+ picocolors: 1.0.0
+ source-map-js: 1.0.2
+
+ /prelude-ls/1.1.2:
+ resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==}
+ engines: {node: '>= 0.8.0'}
+ dev: false
+
+ /prelude-ls/1.2.1:
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
+
+ /prettier-linter-helpers/1.0.0:
+ resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ fast-diff: 1.2.0
+ dev: true
+
+ /prettier/2.3.0:
+ resolution: {integrity: sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ dev: false
+
+ /prettier/2.7.1:
+ resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ dev: true
+
+ /pretty-bytes/5.6.0:
+ resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /pretty-error/2.1.2:
+ resolution: {integrity: sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==}
+ dependencies:
+ lodash: 4.17.21
+ renderkid: 2.0.7
+ dev: false
+
+ /pretty-error/4.0.0:
+ resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==}
+ dependencies:
+ lodash: 4.17.21
+ renderkid: 3.0.0
+ dev: false
+
+ /pretty-format/27.5.1:
+ resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ ansi-regex: 5.0.1
+ ansi-styles: 5.2.0
+ react-is: 17.0.2
+ dev: false
+
+ /pretty-format/28.1.3:
+ resolution: {integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==}
+ engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
+ dependencies:
+ '@jest/schemas': 28.1.3
+ ansi-regex: 5.0.1
+ ansi-styles: 5.2.0
+ react-is: 18.2.0
+
+ /pretty-hrtime/1.0.3:
+ resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
+ /proc-log/2.0.1:
+ resolution: {integrity: sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dev: true
+
+ /process-nextick-args/2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
+ /process/0.11.10:
+ resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
+ engines: {node: '>= 0.6.0'}
+ dev: false
+
+ /promise-all-reject-late/1.0.1:
+ resolution: {integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==}
+ dev: true
+
+ /promise-breaker/6.0.0:
+ resolution: {integrity: sha512-BthzO9yTPswGf7etOBiHCVuugs2N01/Q/94dIPls48z2zCmrnDptUUZzfIb+41xq0MnYZ/BzmOd6ikDR4ibNZA==}
+ dev: false
+
+ /promise-call-limit/1.0.1:
+ resolution: {integrity: sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q==}
+ dev: true
+
+ /promise-inflight/1.0.1:
+ resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
+ peerDependencies:
+ bluebird: '*'
+ peerDependenciesMeta:
+ bluebird:
+ optional: true
+
+ /promise-inflight/1.0.1_bluebird@3.7.2:
+ resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
+ peerDependencies:
+ bluebird: '*'
+ peerDependenciesMeta:
+ bluebird:
+ optional: true
+ dependencies:
+ bluebird: 3.7.2
+ dev: false
+
+ /promise-retry/2.0.1:
+ resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==}
+ engines: {node: '>=10'}
+ dependencies:
+ err-code: 2.0.3
+ retry: 0.12.0
+ dev: true
+
+ /promise.allsettled/1.0.5:
+ resolution: {integrity: sha512-tVDqeZPoBC0SlzJHzWGZ2NKAguVq2oiYj7gbggbiTvH2itHohijTp7njOUA0aQ/nl+0lr/r6egmhoYu63UZ/pQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ array.prototype.map: 1.0.4
+ call-bind: 1.0.2
+ define-properties: 1.1.4
+ es-abstract: 1.20.3
+ get-intrinsic: 1.1.3
+ iterate-value: 1.0.2
+ dev: false
+
+ /promise.prototype.finally/3.1.3:
+ resolution: {integrity: sha512-EXRF3fC9/0gz4qkt/f5EP5iW4kj9oFpBICNpCNOb/52+8nlHIX07FPLbi/q4qYBQ1xZqivMzTpNQSnArVASolQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.4
+ es-abstract: 1.20.3
+ dev: false
+
+ /promise/8.2.0:
+ resolution: {integrity: sha512-+CMAlLHqwRYwBMXKCP+o8ns7DN+xHDUiI+0nArsiJ9y+kJVPLFxEaSw6Ha9s9H0tftxg2Yzl25wqj9G7m5wLZg==}
+ dependencies:
+ asap: 2.0.6
+ dev: false
+
+ /prompts/2.4.2:
+ resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
+ engines: {node: '>= 6'}
+ dependencies:
+ kleur: 3.0.3
+ sisteransi: 1.0.5
+ dev: false
+
+ /promzard/0.3.0:
+ resolution: {integrity: sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==}
+ dependencies:
+ read: 1.0.7
+ dev: true
+
+ /prop-types/15.8.1:
+ resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react-is: 16.13.1
+
+ /property-information/5.6.0:
+ resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==}
+ dependencies:
+ xtend: 4.0.2
+ dev: false
+
+ /proto-list/1.2.4:
+ resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
+ dev: true
+
+ /protocols/2.0.1:
+ resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==}
+ dev: true
+
+ /proxy-addr/2.0.7:
+ resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
+ engines: {node: '>= 0.10'}
+ dependencies:
+ forwarded: 0.2.0
+ ipaddr.js: 1.9.1
+ dev: false
+
+ /proxy-from-env/1.1.0:
+ resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
+ dev: true
+
+ /prr/1.0.1:
+ resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
+ dev: false
+
+ /psl/1.9.0:
+ resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
+ dev: false
+
+ /pstree.remy/1.1.8:
+ resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==}
+ dev: true
+
+ /public-encrypt/4.0.3:
+ resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==}
+ dependencies:
+ bn.js: 4.12.0
+ browserify-rsa: 4.1.0
+ create-hash: 1.2.0
+ parse-asn1: 5.1.6
+ randombytes: 2.1.0
+ safe-buffer: 5.2.1
+ dev: false
+
+ /pump/2.0.1:
+ resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==}
+ dependencies:
+ end-of-stream: 1.4.4
+ once: 1.4.0
+ dev: false
+
+ /pump/3.0.0:
+ resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
+ dependencies:
+ end-of-stream: 1.4.4
+ once: 1.4.0
+
+ /pumpify/1.5.1:
+ resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==}
+ dependencies:
+ duplexify: 3.7.1
+ inherits: 2.0.4
+ pump: 2.0.1
+ dev: false
+
+ /punycode/1.3.2:
+ resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==}
+ dev: false
+
+ /punycode/1.4.1:
+ resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==}
+ dev: false
+
+ /punycode/2.1.1:
+ resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
+ engines: {node: '>=6'}
+
+ /q/1.5.1:
+ resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==}
+ engines: {node: '>=0.6.0', teleport: '>=0.2.0'}
+
+ /qs/6.10.3:
+ resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==}
+ engines: {node: '>=0.6'}
+ dependencies:
+ side-channel: 1.0.4
+ dev: false
+
+ /querystring-es3/0.2.1:
+ resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==}
+ engines: {node: '>=0.4.x'}
+ dev: false
+
+ /querystring/0.2.0:
+ resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==}
+ engines: {node: '>=0.4.x'}
+ deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
+ dev: false
+
+ /querystringify/2.2.0:
+ resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
+ dev: false
+
+ /queue-microtask/1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
+ /quick-lru/4.0.1:
+ resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /quick-lru/5.1.1:
+ resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /raf/3.4.1:
+ resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==}
+ dependencies:
+ performance-now: 2.1.0
+ dev: false
+
+ /ramda/0.28.0:
+ resolution: {integrity: sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==}
+ dev: false
+
+ /randombytes/2.1.0:
+ resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
+ dependencies:
+ safe-buffer: 5.2.1
+
+ /randomfill/1.0.4:
+ resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==}
+ dependencies:
+ randombytes: 2.1.0
+ safe-buffer: 5.2.1
+ dev: false
+
+ /range-parser/1.2.1:
+ resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /raw-body/2.5.1:
+ resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ bytes: 3.1.2
+ http-errors: 2.0.0
+ iconv-lite: 0.4.24
+ unpipe: 1.0.0
+ dev: false
+
+ /raw-loader/4.0.2_webpack@4.46.0:
+ resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==}
+ engines: {node: '>= 10.13.0'}
+ peerDependencies:
+ webpack: ^4.0.0 || ^5.0.0
+ dependencies:
+ loader-utils: 2.0.3
+ schema-utils: 3.1.1
+ webpack: 4.46.0
+ dev: false
+
+ /react-app-polyfill/3.0.0:
+ resolution: {integrity: sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==}
+ engines: {node: '>=14'}
+ dependencies:
+ core-js: 3.25.5
+ object-assign: 4.1.1
+ promise: 8.2.0
+ raf: 3.4.1
+ regenerator-runtime: 0.13.9
+ whatwg-fetch: 3.6.2
+ dev: false
+
+ /react-dev-utils/12.0.1_npfwkgbcmgrbevrxnqgustqabe:
+ resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ typescript: '>=2.7'
+ webpack: '>=4'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@babel/code-frame': 7.18.6
+ address: 1.1.2
+ browserslist: 4.21.4
+ chalk: 4.1.2
+ cross-spawn: 7.0.3
+ detect-port-alt: 1.1.6
+ escape-string-regexp: 4.0.0
+ filesize: 8.0.7
+ find-up: 5.0.0
+ fork-ts-checker-webpack-plugin: 6.5.2_npfwkgbcmgrbevrxnqgustqabe
+ global-modules: 2.0.0
+ globby: 11.1.0
+ gzip-size: 6.0.0
+ immer: 9.0.15
+ 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.4
+ strip-ansi: 6.0.1
+ text-table: 0.2.0
+ typescript: 4.8.3
+ webpack: 5.74.0
+ transitivePeerDependencies:
+ - eslint
+ - supports-color
+ - vue-template-compiler
+ dev: false
+
+ /react-docgen-typescript/2.2.2_typescript@4.8.3:
+ resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==}
+ peerDependencies:
+ typescript: '>= 4.3.x'
+ dependencies:
+ typescript: 4.8.3
+ dev: false
+
+ /react-docgen/5.4.3:
+ resolution: {integrity: sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA==}
+ engines: {node: '>=8.10.0'}
+ hasBin: true
+ dependencies:
+ '@babel/core': 7.19.6
+ '@babel/generator': 7.19.6
+ '@babel/runtime': 7.19.0
+ ast-types: 0.14.2
+ commander: 2.20.3
+ doctrine: 3.0.0
+ estree-to-babel: 3.2.1
+ neo-async: 2.6.2
+ node-dir: 0.1.17
+ strip-indent: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /react-dom/18.2.0_react@18.2.0:
+ resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
+ peerDependencies:
+ react: ^18.2.0
+ dependencies:
+ loose-envify: 1.4.0
+ react: 18.2.0
+ scheduler: 0.23.0
+ dev: false
+
+ /react-dropzone/14.2.3_react@18.2.0:
+ resolution: {integrity: sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==}
+ engines: {node: '>= 10.13'}
+ peerDependencies:
+ react: '>= 16.8 || 18.0.0'
+ dependencies:
+ attr-accept: 2.2.2
+ file-selector: 0.6.0
+ prop-types: 15.8.1
+ react: 18.2.0
+ dev: false
+
+ /react-element-to-jsx-string/14.3.4_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-t4ZwvV6vwNxzujDQ+37bspnLwA4JlgUPWhLjBJWsNIDceAf6ZKUTCjdm08cN6WeZ5pTMKiCJkmAYnpmR4Bm+dg==}
+ peerDependencies:
+ react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1
+ react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1
+ dependencies:
+ '@base2/pretty-print-object': 1.0.1
+ is-plain-object: 5.0.0
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ react-is: 17.0.2
+ dev: false
+
+ /react-error-overlay/6.0.11:
+ resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==}
+ dev: false
+
+ /react-hook-form/7.39.1_react@18.2.0:
+ resolution: {integrity: sha512-MiF9PCILN5KulhSGbnjohMiTOrB47GerDTichMNP0y2cPUu1GTRFqbunOxCE9N1499YTLMV/ne4gFzqCp1rxrQ==}
+ engines: {node: '>=12.22.0'}
+ peerDependencies:
+ react: ^16.8.0 || ^17 || ^18
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /react-inspector/5.1.1_react@18.2.0:
+ resolution: {integrity: sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==}
+ peerDependencies:
+ react: ^16.8.4 || ^17.0.0
+ dependencies:
+ '@babel/runtime': 7.19.0
+ is-dom: 1.1.0
+ prop-types: 15.8.1
+ react: 18.2.0
+ dev: false
+
+ /react-is/16.13.1:
+ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+
+ /react-is/17.0.2:
+ resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
+ dev: false
+
+ /react-is/18.2.0:
+ resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
+
+ /react-refresh/0.11.0:
+ resolution: {integrity: sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /react-refresh/0.14.0:
+ resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /react-router-dom/6.4.2_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-yM1kjoTkpfjgczPrcyWrp+OuQMyB1WleICiiGfstnQYo/S8hPEEnVjr/RdmlH6yKK4Tnj1UGXFSa7uwAtmDoLQ==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ react: '>=16.8'
+ react-dom: '>=16.8'
+ dependencies:
+ '@remix-run/router': 1.0.2
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ react-router: 6.4.2_react@18.2.0
+ dev: false
+
+ /react-router/6.4.2_react@18.2.0:
+ resolution: {integrity: sha512-Rb0BAX9KHhVzT1OKhMvCDMw776aTYM0DtkxqUBP8dNBom3mPXlfNs76JNGK8wKJ1IZEY1+WGj+cvZxHVk/GiKw==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ react: '>=16.8'
+ dependencies:
+ '@remix-run/router': 1.0.2
+ react: 18.2.0
+ dev: false
+
+ /react-scripts/5.0.1_vpm4epegb5iztd7yhibv2hqiti:
+ resolution: {integrity: sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==}
+ engines: {node: '>=14.0.0'}
+ hasBin: true
+ peerDependencies:
+ eslint: '*'
+ react: '>= 16'
+ typescript: ^3.2.1 || ^4
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@babel/core': 7.19.6
+ '@pmmmwh/react-refresh-webpack-plugin': 0.5.8_prxwy2zxcolvdag5hfkyuqbcze
+ '@svgr/webpack': 5.5.0
+ babel-jest: 27.5.1_@babel+core@7.19.6
+ babel-loader: 8.2.5_6zc4kxld457avlfyhj3lzsljlm
+ babel-plugin-named-asset-import: 0.3.8_@babel+core@7.19.6
+ babel-preset-react-app: 10.0.1
+ bfj: 7.0.2
+ browserslist: 4.21.4
+ camelcase: 6.3.0
+ case-sensitive-paths-webpack-plugin: 2.4.0
+ css-loader: 6.7.1_webpack@5.74.0
+ css-minimizer-webpack-plugin: 3.4.1_webpack@5.74.0
+ dotenv: 10.0.0
+ dotenv-expand: 5.1.0
+ eslint: 8.23.1
+ eslint-config-react-app: 7.0.1_ep5hkfurrjf46kbnkcej3benz4
+ eslint-webpack-plugin: 3.2.0_cnsurwdbw57xgwxuf5k544xt5e
+ file-loader: 6.2.0_webpack@5.74.0
+ fs-extra: 10.1.0
+ html-webpack-plugin: 5.5.0_webpack@5.74.0
+ identity-obj-proxy: 3.0.0
+ jest: 27.5.1
+ jest-resolve: 27.5.1
+ jest-watch-typeahead: 1.1.0_jest@27.5.1
+ mini-css-extract-plugin: 2.6.1_webpack@5.74.0
+ postcss: 8.4.18
+ postcss-flexbugs-fixes: 5.0.2_postcss@8.4.18
+ postcss-loader: 6.2.1_igyeriywjd4lwzfk4socqbj2qi
+ postcss-normalize: 10.0.1_ou6qvybldzyudiekdtxolschee
+ postcss-preset-env: 7.8.2_postcss@8.4.18
+ prompts: 2.4.2
+ react: 18.2.0
+ react-app-polyfill: 3.0.0
+ react-dev-utils: 12.0.1_npfwkgbcmgrbevrxnqgustqabe
+ react-refresh: 0.11.0
+ resolve: 1.22.1
+ resolve-url-loader: 4.0.0
+ sass-loader: 12.6.0_webpack@5.74.0
+ semver: 7.3.7
+ source-map-loader: 3.0.1_webpack@5.74.0
+ style-loader: 3.3.1_webpack@5.74.0
+ tailwindcss: 3.2.0_postcss@8.4.18
+ terser-webpack-plugin: 5.3.6_webpack@5.74.0
+ typescript: 4.8.3
+ webpack: 5.74.0
+ webpack-dev-server: 4.11.1_webpack@5.74.0
+ webpack-manifest-plugin: 4.1.1_webpack@5.74.0
+ workbox-webpack-plugin: 6.5.4_webpack@5.74.0
+ optionalDependencies:
+ fsevents: 2.3.2
+ transitivePeerDependencies:
+ - '@babel/plugin-syntax-flow'
+ - '@babel/plugin-transform-react-jsx'
+ - '@parcel/css'
+ - '@swc/core'
+ - '@types/babel__core'
+ - '@types/webpack'
+ - bufferutil
+ - canvas
+ - clean-css
+ - csso
+ - debug
+ - esbuild
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - fibers
+ - node-notifier
+ - node-sass
+ - rework
+ - rework-visit
+ - sass
+ - sass-embedded
+ - sockjs-client
+ - supports-color
+ - ts-node
+ - type-fest
+ - uglify-js
+ - utf-8-validate
+ - vue-template-compiler
+ - webpack-cli
+ - webpack-hot-middleware
+ - webpack-plugin-serve
+ dev: false
+
+ /react-textarea-autosize/8.3.4_iapumuv4e6jcjznwuxpf4tt22e:
+ resolution: {integrity: sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@babel/runtime': 7.19.0
+ react: 18.2.0
+ use-composed-ref: 1.3.0_react@18.2.0
+ use-latest: 1.2.1_iapumuv4e6jcjznwuxpf4tt22e
+ transitivePeerDependencies:
+ - '@types/react'
+ dev: false
+
+ /react-transition-group/4.4.2_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==}
+ peerDependencies:
+ react: '>=16.6.0'
+ react-dom: '>=16.6.0'
+ dependencies:
+ '@babel/runtime': 7.19.0
+ dom-helpers: 5.2.1
+ loose-envify: 1.4.0
+ prop-types: 15.8.1
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ dev: false
+
+ /react/18.2.0:
+ resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ loose-envify: 1.4.0
+ dev: false
+
+ /read-cache/1.0.0:
+ resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
+ dependencies:
+ pify: 2.3.0
+ dev: false
+
+ /read-cmd-shim/3.0.1:
+ resolution: {integrity: sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dev: true
+
+ /read-package-json-fast/2.0.3:
+ resolution: {integrity: sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ json-parse-even-better-errors: 2.3.1
+ npm-normalize-package-bin: 1.0.1
+ dev: true
+
+ /read-package-json/5.0.2:
+ resolution: {integrity: sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ glob: 8.0.3
+ json-parse-even-better-errors: 2.3.1
+ normalize-package-data: 4.0.1
+ npm-normalize-package-bin: 2.0.0
+ dev: true
+
+ /read-pkg-up/1.0.1:
+ resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ find-up: 1.1.2
+ read-pkg: 1.1.0
+ dev: false
+ optional: true
+
+ /read-pkg-up/3.0.0:
+ resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==}
+ engines: {node: '>=4'}
+ dependencies:
+ find-up: 2.1.0
+ read-pkg: 3.0.0
+ dev: true
+
+ /read-pkg-up/7.0.1:
+ resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
+ engines: {node: '>=8'}
+ dependencies:
+ find-up: 4.1.0
+ read-pkg: 5.2.0
+ type-fest: 0.8.1
+
+ /read-pkg/1.1.0:
+ resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ load-json-file: 1.1.0
+ normalize-package-data: 2.5.0
+ path-type: 1.1.0
+ dev: false
+ optional: true
+
+ /read-pkg/3.0.0:
+ resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==}
+ engines: {node: '>=4'}
+ dependencies:
+ load-json-file: 4.0.0
+ normalize-package-data: 2.5.0
+ path-type: 3.0.0
+ dev: true
+
+ /read-pkg/5.2.0:
+ resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@types/normalize-package-data': 2.4.1
+ normalize-package-data: 2.5.0
+ parse-json: 5.2.0
+ type-fest: 0.6.0
+
+ /read/1.0.7:
+ resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==}
+ engines: {node: '>=0.8'}
+ dependencies:
+ mute-stream: 0.0.8
+ dev: true
+
+ /readable-stream/1.1.14:
+ resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==}
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 0.0.1
+ string_decoder: 0.10.31
+ dev: false
+
+ /readable-stream/2.3.7:
+ resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==}
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+
+ /readable-stream/3.6.0:
+ resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==}
+ engines: {node: '>= 6'}
+ dependencies:
+ inherits: 2.0.4
+ string_decoder: 1.3.0
+ util-deprecate: 1.0.2
+
+ /readdir-scoped-modules/1.1.0:
+ resolution: {integrity: sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==}
+ deprecated: This functionality has been moved to @npmcli/fs
+ dependencies:
+ debuglog: 1.0.1
+ dezalgo: 1.0.4
+ graceful-fs: 4.2.10
+ once: 1.4.0
+ dev: true
+
+ /readdirp/2.2.1:
+ resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==}
+ engines: {node: '>=0.10'}
+ dependencies:
+ graceful-fs: 4.2.10
+ micromatch: 3.1.10
+ readable-stream: 2.3.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+ optional: true
+
+ /readdirp/3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+ dependencies:
+ picomatch: 2.3.1
+
+ /rechoir/0.6.2:
+ resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==}
+ engines: {node: '>= 0.10'}
+ dependencies:
+ resolve: 1.22.1
+ dev: true
+
+ /recursive-readdir/2.2.2:
+ resolution: {integrity: sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ minimatch: 3.0.4
+ dev: false
+
+ /redent/1.0.0:
+ resolution: {integrity: sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ indent-string: 2.1.0
+ strip-indent: 1.0.1
+ dev: false
+ optional: true
+
+ /redent/3.0.0:
+ resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
+ engines: {node: '>=8'}
+ dependencies:
+ indent-string: 4.0.0
+ strip-indent: 3.0.0
+ dev: true
+
+ /reflect-metadata/0.1.13:
+ resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==}
+ dev: false
+
+ /regenerate-unicode-properties/10.1.0:
+ resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ regenerate: 1.4.2
+ dev: false
+
+ /regenerate/1.4.2:
+ resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==}
+ dev: false
+
+ /regenerator-runtime/0.13.9:
+ resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==}
+
+ /regenerator-transform/0.15.0:
+ resolution: {integrity: sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==}
+ dependencies:
+ '@babel/runtime': 7.19.0
+ dev: false
+
+ /regex-not/1.0.2:
+ resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ extend-shallow: 3.0.2
+ safe-regex: 1.1.0
+ dev: false
+
+ /regex-parser/2.2.11:
+ resolution: {integrity: sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==}
+ dev: false
+
+ /regexp.prototype.flags/1.4.3:
+ resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.4
+ functions-have-names: 1.2.3
+
+ /regexpp/3.2.0:
+ resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
+ engines: {node: '>=8'}
+
+ /regexpu-core/5.2.1:
+ resolution: {integrity: sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ regenerate: 1.4.2
+ regenerate-unicode-properties: 10.1.0
+ regjsgen: 0.7.1
+ regjsparser: 0.9.1
+ unicode-match-property-ecmascript: 2.0.0
+ unicode-match-property-value-ecmascript: 2.0.0
+ dev: false
+
+ /regjsgen/0.7.1:
+ resolution: {integrity: sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==}
+ dev: false
+
+ /regjsparser/0.9.1:
+ resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==}
+ hasBin: true
+ dependencies:
+ jsesc: 0.5.0
+ dev: false
+
+ /relateurl/0.2.7:
+ resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==}
+ engines: {node: '>= 0.10'}
+ dev: false
+
+ /remark-external-links/8.0.0:
+ resolution: {integrity: sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA==}
+ dependencies:
+ extend: 3.0.2
+ is-absolute-url: 3.0.3
+ mdast-util-definitions: 4.0.0
+ space-separated-tokens: 1.1.5
+ unist-util-visit: 2.0.3
+ dev: false
+
+ /remark-footnotes/2.0.0:
+ resolution: {integrity: sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==}
+ dev: false
+
+ /remark-mdx/1.6.22:
+ resolution: {integrity: sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==}
+ dependencies:
+ '@babel/core': 7.12.9
+ '@babel/helper-plugin-utils': 7.10.4
+ '@babel/plugin-proposal-object-rest-spread': 7.12.1_@babel+core@7.12.9
+ '@babel/plugin-syntax-jsx': 7.12.1_@babel+core@7.12.9
+ '@mdx-js/util': 1.6.22
+ is-alphabetical: 1.0.4
+ remark-parse: 8.0.3
+ unified: 9.2.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /remark-parse/8.0.3:
+ resolution: {integrity: sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==}
+ dependencies:
+ ccount: 1.1.0
+ collapse-white-space: 1.0.6
+ is-alphabetical: 1.0.4
+ is-decimal: 1.0.4
+ is-whitespace-character: 1.0.4
+ is-word-character: 1.0.4
+ markdown-escapes: 1.0.4
+ parse-entities: 2.0.0
+ repeat-string: 1.6.1
+ state-toggle: 1.0.3
+ trim: 0.0.1
+ trim-trailing-lines: 1.1.4
+ unherit: 1.1.3
+ unist-util-remove-position: 2.0.1
+ vfile-location: 3.2.0
+ xtend: 4.0.2
+ dev: false
+
+ /remark-slug/6.1.0:
+ resolution: {integrity: sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ==}
+ dependencies:
+ github-slugger: 1.5.0
+ mdast-util-to-string: 1.1.0
+ unist-util-visit: 2.0.3
+ dev: false
+
+ /remark-squeeze-paragraphs/4.0.0:
+ resolution: {integrity: sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==}
+ dependencies:
+ mdast-squeeze-paragraphs: 4.0.0
+ dev: false
+
+ /remove-trailing-separator/1.1.0:
+ resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==}
+ dev: false
+
+ /renderkid/2.0.7:
+ resolution: {integrity: sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==}
+ dependencies:
+ css-select: 4.3.0
+ dom-converter: 0.2.0
+ htmlparser2: 6.1.0
+ lodash: 4.17.21
+ strip-ansi: 3.0.1
+ dev: false
+
+ /renderkid/3.0.0:
+ resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==}
+ dependencies:
+ css-select: 4.3.0
+ dom-converter: 0.2.0
+ htmlparser2: 6.1.0
+ lodash: 4.17.21
+ strip-ansi: 6.0.1
+ dev: false
+
+ /repeat-element/1.1.4:
+ resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /repeat-string/1.6.1:
+ resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
+ engines: {node: '>=0.10'}
+ dev: false
+
+ /repeating/2.0.1:
+ resolution: {integrity: sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-finite: 1.1.0
+ dev: false
+ optional: true
+
+ /require-directory/2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+
+ /require-from-string/2.0.2:
+ resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+ engines: {node: '>=0.10.0'}
+
+ /requires-port/1.0.0:
+ resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
+ dev: false
+
+ /resolve-cwd/3.0.0:
+ resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
+ engines: {node: '>=8'}
+ dependencies:
+ resolve-from: 5.0.0
+
+ /resolve-from/4.0.0:
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
+
+ /resolve-from/5.0.0:
+ resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
+ engines: {node: '>=8'}
+
+ /resolve-global/1.0.0:
+ resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==}
+ engines: {node: '>=8'}
+ dependencies:
+ global-dirs: 0.1.1
+ dev: true
+
+ /resolve-url-loader/4.0.0:
+ resolution: {integrity: sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==}
+ engines: {node: '>=8.9'}
+ peerDependencies:
+ rework: 1.0.1
+ rework-visit: 1.0.0
+ peerDependenciesMeta:
+ rework:
+ optional: true
+ rework-visit:
+ optional: true
+ dependencies:
+ adjust-sourcemap-loader: 4.0.0
+ convert-source-map: 1.8.0
+ loader-utils: 2.0.3
+ postcss: 7.0.39
+ source-map: 0.6.1
+ dev: false
+
+ /resolve-url/0.2.1:
+ resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==}
+ deprecated: https://github.com/lydell/resolve-url#deprecated
+ dev: false
+
+ /resolve.exports/1.1.0:
+ resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==}
+ engines: {node: '>=10'}
+
+ /resolve/1.22.1:
+ resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
+ hasBin: true
+ dependencies:
+ is-core-module: 2.10.0
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ /resolve/2.0.0-next.4:
+ resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==}
+ hasBin: true
+ dependencies:
+ is-core-module: 2.10.0
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ /restore-cursor/3.1.0:
+ resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
+ engines: {node: '>=8'}
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ dev: true
+
+ /ret/0.1.15:
+ resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==}
+ engines: {node: '>=0.12'}
+ dev: false
+
+ /retry/0.12.0:
+ resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
+ engines: {node: '>= 4'}
+ dev: true
+
+ /retry/0.13.1:
+ resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==}
+ engines: {node: '>= 4'}
+ dev: false
+
+ /reusify/1.0.4:
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+
+ /rfdc/1.3.0:
+ resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==}
+ dev: true
+
+ /rimraf/2.7.1:
+ resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
+ hasBin: true
+ dependencies:
+ glob: 7.2.3
+ dev: false
+
+ /rimraf/3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ hasBin: true
+ dependencies:
+ glob: 7.2.3
+
+ /ripemd160/2.0.2:
+ resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==}
+ dependencies:
+ hash-base: 3.1.0
+ inherits: 2.0.4
+ dev: false
+
+ /rollup-plugin-dts/5.0.0_723547pa73ldc3ok456m7rj5ky:
+ resolution: {integrity: sha512-OO8ayCvuJCKaQSShyVTARxGurVVk4ulzbuvz+0zFd1f93vlnWFU5pBMT7HFeS6uj7MvvZLx4kUAarGATSU1+Ng==}
+ engines: {node: '>=v14'}
+ peerDependencies:
+ rollup: ^3.0.0
+ typescript: ^4.1
+ dependencies:
+ magic-string: 0.26.7
+ rollup: 3.2.3
+ typescript: 4.8.3
+ optionalDependencies:
+ '@babel/code-frame': 7.18.6
+ dev: true
+
+ /rollup-plugin-node-externals/5.0.1_rollup@3.2.3:
+ resolution: {integrity: sha512-x2ooOmSR1zZpUUxRuQ2nuwZP6BncrJAUmr8t5tgB8NOID0HqL0JxEnvoC/uhahyPxp2VqEr/YFvy29zK0Zq1bA==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^2.60.0 || ^3.0.0
+ dependencies:
+ rollup: 3.2.3
+ dev: true
+
+ /rollup-plugin-peer-deps-external/2.2.4_rollup@3.2.3:
+ resolution: {integrity: sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g==}
+ peerDependencies:
+ rollup: '*'
+ dependencies:
+ rollup: 3.2.3
+ dev: true
+
+ /rollup-plugin-terser/7.0.2_rollup@2.79.1:
+ resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==}
+ peerDependencies:
+ rollup: ^2.0.0
+ dependencies:
+ '@babel/code-frame': 7.18.6
+ jest-worker: 26.6.2
+ rollup: 2.79.1
+ serialize-javascript: 4.0.0
+ terser: 5.15.0
+ dev: false
+
+ /rollup-plugin-terser/7.0.2_rollup@3.2.3:
+ resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==}
+ peerDependencies:
+ rollup: ^2.0.0
+ dependencies:
+ '@babel/code-frame': 7.18.6
+ jest-worker: 26.6.2
+ rollup: 3.2.3
+ serialize-javascript: 4.0.0
+ terser: 5.15.0
+ dev: true
+
+ /rollup-plugin-typescript2/0.34.1_723547pa73ldc3ok456m7rj5ky:
+ resolution: {integrity: sha512-P4cHLtGikESmqi1CA+tdMDUv8WbQV48mzPYt77TSTOPJpERyZ9TXdDgjSDix8Fkqce6soYz3+fa4lrC93IEkcw==}
+ peerDependencies:
+ rollup: '>=1.26.3'
+ typescript: '>=2.4.0'
+ dependencies:
+ '@rollup/pluginutils': 4.2.1
+ find-cache-dir: 3.3.2
+ fs-extra: 10.1.0
+ rollup: 3.2.3
+ semver: 7.3.7
+ tslib: 2.4.0
+ typescript: 4.8.3
+ dev: true
+
+ /rollup/2.79.1:
+ resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==}
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+ optionalDependencies:
+ fsevents: 2.3.2
+
+ /rollup/3.2.3:
+ resolution: {integrity: sha512-qfadtkY5kl0F5e4dXVdj2D+GtOdifasXHFMiL1SMf9ADQDv5Eti6xReef9FKj+iQPR2pvtqWna57s/PjARY4fg==}
+ engines: {node: '>=14.18.0', npm: '>=8.0.0'}
+ hasBin: true
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /rsvp/4.8.5:
+ resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==}
+ engines: {node: 6.* || >= 7.*}
+ dev: false
+
+ /run-async/2.4.1:
+ resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==}
+ engines: {node: '>=0.12.0'}
+ dev: true
+
+ /run-parallel/1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+ dependencies:
+ queue-microtask: 1.2.3
+
+ /run-queue/1.0.3:
+ resolution: {integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==}
+ dependencies:
+ aproba: 1.2.0
+ dev: false
+
+ /rxjs/6.6.7:
+ resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==}
+ engines: {npm: '>=2.0.0'}
+ dependencies:
+ tslib: 1.14.1
+ dev: true
+
+ /rxjs/7.5.6:
+ resolution: {integrity: sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==}
+ dependencies:
+ tslib: 2.4.1
+
+ /safe-buffer/5.1.1:
+ resolution: {integrity: sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==}
+ dev: false
+
+ /safe-buffer/5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
+ /safe-buffer/5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
+ /safe-regex-test/1.0.0:
+ resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
+ dependencies:
+ call-bind: 1.0.2
+ get-intrinsic: 1.1.3
+ is-regex: 1.1.4
+
+ /safe-regex/1.1.0:
+ resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==}
+ dependencies:
+ ret: 0.1.15
+ dev: false
+
+ /safer-buffer/2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+
+ /sane/4.1.0:
+ resolution: {integrity: sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+ deprecated: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added
+ hasBin: true
+ dependencies:
+ '@cnakazawa/watch': 1.0.4
+ anymatch: 2.0.0
+ capture-exit: 2.0.0
+ exec-sh: 0.3.6
+ execa: 1.0.0
+ fb-watchman: 2.0.2
+ micromatch: 3.1.10
+ minimist: 1.2.6
+ walker: 1.0.8
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /sanitize.css/10.0.0:
+ resolution: {integrity: sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg==}
+ dev: false
+
+ /saslprep/1.0.3:
+ resolution: {integrity: sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==}
+ engines: {node: '>=6'}
+ requiresBuild: true
+ dependencies:
+ sparse-bitfield: 3.0.3
+ dev: false
+ optional: true
+
+ /sass-loader/12.6.0_webpack@5.74.0:
+ resolution: {integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==}
+ engines: {node: '>= 12.13.0'}
+ 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
+ dependencies:
+ klona: 2.0.5
+ neo-async: 2.6.2
+ webpack: 5.74.0
+ dev: false
+
+ /sax/1.2.4:
+ resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
+ dev: false
+
+ /saxes/5.0.1:
+ resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==}
+ engines: {node: '>=10'}
+ dependencies:
+ xmlchars: 2.2.0
+ dev: false
+
+ /scheduler/0.23.0:
+ resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
+ dependencies:
+ loose-envify: 1.4.0
+ dev: false
+
+ /schema-utils/1.0.0:
+ resolution: {integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==}
+ engines: {node: '>= 4'}
+ dependencies:
+ ajv: 6.12.6
+ ajv-errors: 1.0.1_ajv@6.12.6
+ ajv-keywords: 3.5.2_ajv@6.12.6
+ dev: false
+
+ /schema-utils/2.7.0:
+ resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==}
+ engines: {node: '>= 8.9.0'}
+ dependencies:
+ '@types/json-schema': 7.0.11
+ ajv: 6.12.6
+ ajv-keywords: 3.5.2_ajv@6.12.6
+ dev: false
+
+ /schema-utils/2.7.1:
+ resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==}
+ engines: {node: '>= 8.9.0'}
+ dependencies:
+ '@types/json-schema': 7.0.11
+ ajv: 6.12.6
+ ajv-keywords: 3.5.2_ajv@6.12.6
+
+ /schema-utils/3.1.1:
+ resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==}
+ engines: {node: '>= 10.13.0'}
+ dependencies:
+ '@types/json-schema': 7.0.11
+ ajv: 6.12.6
+ ajv-keywords: 3.5.2_ajv@6.12.6
+
+ /schema-utils/4.0.0:
+ resolution: {integrity: sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==}
+ engines: {node: '>= 12.13.0'}
+ dependencies:
+ '@types/json-schema': 7.0.11
+ ajv: 8.11.0
+ ajv-formats: 2.1.1_ajv@8.11.0
+ ajv-keywords: 5.1.0_ajv@8.11.0
+ dev: false
+
+ /secure-compare/3.0.1:
+ resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==}
+ dev: false
+
+ /select-hose/2.0.0:
+ resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==}
+ dev: false
+
+ /selfsigned/2.1.1:
+ resolution: {integrity: sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ node-forge: 1.3.1
+ dev: false
+
+ /semver/5.7.1:
+ resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
+ hasBin: true
+
+ /semver/6.3.0:
+ resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
+ hasBin: true
+
+ /semver/7.0.0:
+ resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==}
+ hasBin: true
+ dev: true
+
+ /semver/7.3.4:
+ resolution: {integrity: sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ lru-cache: 6.0.0
+ dev: true
+
+ /semver/7.3.7:
+ resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ lru-cache: 6.0.0
+
+ /send/0.18.0:
+ resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ mime: 1.6.0
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /serialize-javascript/4.0.0:
+ resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==}
+ dependencies:
+ randombytes: 2.1.0
+
+ /serialize-javascript/5.0.1:
+ resolution: {integrity: sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==}
+ dependencies:
+ randombytes: 2.1.0
+ dev: false
+
+ /serialize-javascript/6.0.0:
+ resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==}
+ dependencies:
+ randombytes: 2.1.0
+
+ /serve-favicon/2.5.0:
+ resolution: {integrity: sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ etag: 1.8.1
+ fresh: 0.5.2
+ ms: 2.1.1
+ parseurl: 1.3.3
+ safe-buffer: 5.1.1
+ dev: false
+
+ /serve-index/1.9.1:
+ resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ accepts: 1.3.8
+ batch: 0.6.1
+ debug: 2.6.9
+ escape-html: 1.0.3
+ http-errors: 1.6.3
+ mime-types: 2.1.35
+ parseurl: 1.3.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /serve-static/1.15.0:
+ resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 0.18.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /set-blocking/2.0.0:
+ resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
+
+ /set-value/2.0.1:
+ resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ extend-shallow: 2.0.1
+ is-extendable: 0.1.1
+ is-plain-object: 2.0.4
+ split-string: 3.1.0
+ dev: false
+
+ /setimmediate/1.0.5:
+ resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
+ dev: false
+
+ /setprototypeof/1.1.0:
+ resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==}
+ dev: false
+
+ /setprototypeof/1.2.0:
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+ dev: false
+
+ /sha.js/2.4.11:
+ resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==}
+ hasBin: true
+ dependencies:
+ inherits: 2.0.4
+ safe-buffer: 5.2.1
+ dev: false
+
+ /shallow-clone/3.0.1:
+ resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==}
+ engines: {node: '>=8'}
+ dependencies:
+ kind-of: 6.0.3
+
+ /shallowequal/1.1.0:
+ resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==}
+ dev: false
+
+ /shebang-command/1.2.0:
+ resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ shebang-regex: 1.0.0
+ dev: false
+
+ /shebang-command/2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+ dependencies:
+ shebang-regex: 3.0.0
+
+ /shebang-regex/1.0.0:
+ resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /shebang-regex/3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ /shell-quote/1.7.4:
+ resolution: {integrity: sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==}
+
+ /shelljs/0.8.5:
+ resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dependencies:
+ glob: 7.2.3
+ interpret: 1.4.0
+ rechoir: 0.6.2
+ dev: true
+
+ /shiki/0.11.1:
+ resolution: {integrity: sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==}
+ dependencies:
+ jsonc-parser: 3.2.0
+ vscode-oniguruma: 1.6.2
+ vscode-textmate: 6.0.0
+ dev: true
+
+ /side-channel/1.0.4:
+ resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
+ dependencies:
+ call-bind: 1.0.2
+ get-intrinsic: 1.1.3
+ object-inspect: 1.12.2
+
+ /sift/16.0.0:
+ resolution: {integrity: sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ==}
+ dev: false
+
+ /signal-exit/3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+
+ /simple-update-notifier/1.0.7:
+ resolution: {integrity: sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==}
+ engines: {node: '>=8.10.0'}
+ dependencies:
+ semver: 7.0.0
+ dev: true
+
+ /sisteransi/1.0.5:
+ resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
+ dev: false
+
+ /slash/2.0.0:
+ resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /slash/3.0.0:
+ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
+ engines: {node: '>=8'}
+
+ /slash/4.0.0:
+ resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /slice-ansi/3.0.0:
+ resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: 4.3.0
+ astral-regex: 2.0.0
+ is-fullwidth-code-point: 3.0.0
+ dev: true
+
+ /slice-ansi/4.0.0:
+ resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ astral-regex: 2.0.0
+ is-fullwidth-code-point: 3.0.0
+ dev: true
+
+ /slice-ansi/5.0.0:
+ resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ ansi-styles: 6.1.1
+ is-fullwidth-code-point: 4.0.0
+ dev: true
+
+ /smart-buffer/4.2.0:
+ resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
+ engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
+
+ /snapdragon-node/2.1.1:
+ resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ define-property: 1.0.0
+ isobject: 3.0.1
+ snapdragon-util: 3.0.1
+ dev: false
+
+ /snapdragon-util/3.0.1:
+ resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 3.2.2
+ dev: false
+
+ /snapdragon/0.8.2:
+ resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ base: 0.11.2
+ debug: 2.6.9
+ define-property: 0.2.5
+ extend-shallow: 2.0.1
+ map-cache: 0.2.2
+ source-map: 0.5.7
+ source-map-resolve: 0.5.3
+ use: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /sockjs/0.3.24:
+ resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==}
+ dependencies:
+ faye-websocket: 0.11.4
+ uuid: 8.3.2
+ websocket-driver: 0.7.4
+ dev: false
+
+ /socks-proxy-agent/7.0.0:
+ resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==}
+ engines: {node: '>= 10'}
+ dependencies:
+ agent-base: 6.0.2
+ debug: 4.3.4
+ socks: 2.7.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /socks/2.7.0:
+ resolution: {integrity: sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==}
+ engines: {node: '>= 10.13.0', npm: '>= 3.0.0'}
+ dependencies:
+ ip: 2.0.0
+ smart-buffer: 4.2.0
+
+ /sort-keys/2.0.0:
+ resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==}
+ engines: {node: '>=4'}
+ dependencies:
+ is-plain-obj: 1.1.0
+ dev: true
+
+ /sort-keys/4.2.0:
+ resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==}
+ engines: {node: '>=8'}
+ dependencies:
+ is-plain-obj: 2.1.0
+ dev: true
+
+ /source-list-map/2.0.1:
+ resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==}
+ dev: false
+
+ /source-map-js/1.0.2:
+ resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
+ engines: {node: '>=0.10.0'}
+
+ /source-map-loader/3.0.1_webpack@5.74.0:
+ resolution: {integrity: sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA==}
+ engines: {node: '>= 12.13.0'}
+ peerDependencies:
+ webpack: ^5.0.0
+ dependencies:
+ abab: 2.0.6
+ iconv-lite: 0.6.3
+ source-map-js: 1.0.2
+ webpack: 5.74.0
+ dev: false
+
+ /source-map-resolve/0.5.3:
+ resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==}
+ deprecated: See https://github.com/lydell/source-map-resolve#deprecated
+ dependencies:
+ atob: 2.1.2
+ decode-uri-component: 0.2.0
+ resolve-url: 0.2.1
+ source-map-url: 0.4.1
+ urix: 0.1.0
+ dev: false
+
+ /source-map-support/0.5.13:
+ resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==}
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+ dev: true
+
+ /source-map-support/0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ /source-map-url/0.4.1:
+ resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==}
+ deprecated: See https://github.com/lydell/source-map-url#deprecated
+ dev: false
+
+ /source-map/0.5.7:
+ resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /source-map/0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ /source-map/0.7.4:
+ resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
+ engines: {node: '>= 8'}
+
+ /source-map/0.8.0-beta.0:
+ resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
+ engines: {node: '>= 8'}
+ dependencies:
+ whatwg-url: 7.1.0
+ dev: false
+
+ /sourcemap-codec/1.4.8:
+ resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
+
+ /space-separated-tokens/1.1.5:
+ resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==}
+ dev: false
+
+ /sparse-bitfield/3.0.3:
+ resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==}
+ dependencies:
+ memory-pager: 1.5.0
+ dev: false
+ optional: true
+
+ /spawn-command/0.0.2-1:
+ resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==}
+ dev: true
+
+ /spdx-correct/3.1.1:
+ resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==}
+ dependencies:
+ spdx-expression-parse: 3.0.1
+ spdx-license-ids: 3.0.12
+
+ /spdx-exceptions/2.3.0:
+ resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==}
+
+ /spdx-expression-parse/3.0.1:
+ resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
+ dependencies:
+ spdx-exceptions: 2.3.0
+ spdx-license-ids: 3.0.12
+
+ /spdx-license-ids/3.0.12:
+ resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==}
+
+ /spdy-transport/3.0.0:
+ resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==}
+ dependencies:
+ debug: 4.3.4
+ detect-node: 2.1.0
+ hpack.js: 2.1.6
+ obuf: 1.1.2
+ readable-stream: 3.6.0
+ wbuf: 1.7.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /spdy/4.0.2:
+ resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ debug: 4.3.4
+ handle-thing: 2.0.1
+ http-deceiver: 1.2.7
+ select-hose: 2.0.0
+ spdy-transport: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /split-string/3.1.0:
+ resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ extend-shallow: 3.0.2
+ dev: false
+
+ /split/1.0.1:
+ resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==}
+ dependencies:
+ through: 2.3.8
+ dev: true
+
+ /split2/3.2.2:
+ resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==}
+ dependencies:
+ readable-stream: 3.6.0
+ dev: true
+
+ /sprintf-js/1.0.3:
+ resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+
+ /ssf/0.11.2:
+ resolution: {integrity: sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==}
+ engines: {node: '>=0.8'}
+ dependencies:
+ frac: 1.1.2
+ dev: false
+
+ /ssri/6.0.2:
+ resolution: {integrity: sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==}
+ dependencies:
+ figgy-pudding: 3.5.2
+ dev: false
+
+ /ssri/8.0.1:
+ resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==}
+ engines: {node: '>= 8'}
+ dependencies:
+ minipass: 3.3.4
+ dev: false
+
+ /ssri/9.0.1:
+ resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ minipass: 3.3.4
+ dev: true
+
+ /stable/0.1.8:
+ resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
+ deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
+ dev: false
+
+ /stack-utils/2.0.5:
+ resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==}
+ engines: {node: '>=10'}
+ dependencies:
+ escape-string-regexp: 2.0.0
+
+ /stackframe/1.3.4:
+ resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==}
+ dev: false
+
+ /state-toggle/1.0.3:
+ resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==}
+ dev: false
+
+ /static-extend/0.1.2:
+ resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ define-property: 0.2.5
+ object-copy: 0.1.0
+ dev: false
+
+ /statuses/1.5.0:
+ resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /statuses/2.0.1:
+ resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
+ /store2/2.14.2:
+ resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==}
+ dev: false
+
+ /stream-browserify/2.0.2:
+ resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==}
+ dependencies:
+ inherits: 2.0.4
+ readable-stream: 2.3.7
+ dev: false
+
+ /stream-each/1.2.3:
+ resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==}
+ dependencies:
+ end-of-stream: 1.4.4
+ stream-shift: 1.0.1
+ dev: false
+
+ /stream-http/2.8.3:
+ resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==}
+ dependencies:
+ builtin-status-codes: 3.0.0
+ inherits: 2.0.4
+ readable-stream: 2.3.7
+ to-arraybuffer: 1.0.1
+ xtend: 4.0.2
+ dev: false
+
+ /stream-shift/1.0.1:
+ resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==}
+ dev: false
+
+ /streamsearch/1.1.0:
+ resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
+ engines: {node: '>=10.0.0'}
+ dev: false
+
+ /string-argv/0.3.1:
+ resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==}
+ engines: {node: '>=0.6.19'}
+ dev: true
+
+ /string-length/4.0.2:
+ resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ char-regex: 1.0.2
+ strip-ansi: 6.0.1
+
+ /string-length/5.0.1:
+ resolution: {integrity: sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==}
+ engines: {node: '>=12.20'}
+ dependencies:
+ char-regex: 2.0.1
+ strip-ansi: 7.0.1
+ dev: false
+
+ /string-natural-compare/3.0.1:
+ resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==}
+ dev: false
+
+ /string-width/4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ /string-width/5.1.2:
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+ engines: {node: '>=12'}
+ dependencies:
+ eastasianwidth: 0.2.0
+ emoji-regex: 9.2.2
+ strip-ansi: 7.0.1
+ dev: true
+
+ /string.prototype.matchall/4.0.7:
+ resolution: {integrity: sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.4
+ es-abstract: 1.20.3
+ get-intrinsic: 1.1.3
+ has-symbols: 1.0.3
+ internal-slot: 1.0.3
+ regexp.prototype.flags: 1.4.3
+ side-channel: 1.0.4
+
+ /string.prototype.padend/3.1.3:
+ resolution: {integrity: sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.4
+ es-abstract: 1.20.3
+ dev: false
+
+ /string.prototype.padstart/3.1.3:
+ resolution: {integrity: sha512-NZydyOMtYxpTjGqp0VN5PYUF/tsU15yDMZnUdj16qRUIUiMJkHHSDElYyQFrMu+/WloTpA7MQSiADhBicDfaoA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.4
+ es-abstract: 1.20.3
+ dev: false
+
+ /string.prototype.trimend/1.0.5:
+ resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.4
+ es-abstract: 1.20.3
+
+ /string.prototype.trimstart/1.0.5:
+ resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.4
+ es-abstract: 1.20.3
+
+ /string_decoder/0.10.31:
+ resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==}
+ dev: false
+
+ /string_decoder/1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+ dependencies:
+ safe-buffer: 5.1.2
+
+ /string_decoder/1.3.0:
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+ dependencies:
+ safe-buffer: 5.2.1
+
+ /stringify-object/3.3.0:
+ resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==}
+ engines: {node: '>=4'}
+ dependencies:
+ get-own-enumerable-property-symbols: 3.0.2
+ is-obj: 1.0.1
+ is-regexp: 1.0.0
+ dev: false
+
+ /strip-ansi/3.0.1:
+ resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ ansi-regex: 2.1.1
+ dev: false
+
+ /strip-ansi/6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-regex: 5.0.1
+
+ /strip-ansi/7.0.1:
+ resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==}
+ engines: {node: '>=12'}
+ dependencies:
+ ansi-regex: 6.0.1
+
+ /strip-bom/2.0.0:
+ resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-utf8: 0.2.1
+ dev: false
+ optional: true
+
+ /strip-bom/3.0.0:
+ resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
+ engines: {node: '>=4'}
+
+ /strip-bom/4.0.0:
+ resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==}
+ engines: {node: '>=8'}
+
+ /strip-comments/2.0.1:
+ resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /strip-eof/1.0.0:
+ resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /strip-final-newline/2.0.0:
+ resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
+ engines: {node: '>=6'}
+
+ /strip-final-newline/3.0.0:
+ resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /strip-indent/1.0.1:
+ resolution: {integrity: sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+ dependencies:
+ get-stdin: 4.0.1
+ dev: false
+ optional: true
+
+ /strip-indent/3.0.0:
+ resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ min-indent: 1.0.1
+
+ /strip-json-comments/3.1.1:
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
+
+ /strong-log-transformer/2.1.0:
+ resolution: {integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dependencies:
+ duplexer: 0.1.2
+ minimist: 1.2.6
+ through: 2.3.8
+ dev: true
+
+ /style-loader/1.3.0_webpack@4.46.0:
+ resolution: {integrity: sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==}
+ engines: {node: '>= 8.9.0'}
+ peerDependencies:
+ webpack: ^4.0.0 || ^5.0.0
+ dependencies:
+ loader-utils: 2.0.3
+ schema-utils: 2.7.1
+ webpack: 4.46.0
+ dev: false
+
+ /style-loader/3.3.1_webpack@5.74.0:
+ resolution: {integrity: sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==}
+ engines: {node: '>= 12.13.0'}
+ peerDependencies:
+ webpack: ^5.0.0
+ dependencies:
+ webpack: 5.74.0
+ dev: false
+
+ /style-to-object/0.3.0:
+ resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==}
+ dependencies:
+ inline-style-parser: 0.1.1
+ dev: false
+
+ /styled-components/5.3.6_7i5myeigehqah43i5u7wbekgba:
+ resolution: {integrity: sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg==}
+ engines: {node: '>=10'}
+ requiresBuild: true
+ peerDependencies:
+ react: '>= 16.8.0'
+ react-dom: '>= 16.8.0'
+ react-is: '>= 16.8.0'
+ dependencies:
+ '@babel/helper-module-imports': 7.18.6
+ '@babel/traverse': 7.19.6_supports-color@5.5.0
+ '@emotion/is-prop-valid': 1.2.0
+ '@emotion/stylis': 0.8.5
+ '@emotion/unitless': 0.7.5
+ babel-plugin-styled-components: 2.0.7_styled-components@5.3.6
+ css-to-react-native: 3.0.0
+ hoist-non-react-statics: 3.3.2
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ react-is: 18.2.0
+ shallowequal: 1.1.0
+ supports-color: 5.5.0
+ dev: false
+
+ /stylehacks/5.1.0_postcss@8.4.18:
+ resolution: {integrity: sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ browserslist: 4.21.4
+ postcss: 8.4.18
+ postcss-selector-parser: 6.0.10
+ dev: false
+
+ /stylis/4.1.3:
+ resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==}
+ dev: false
+
+ /supports-color/5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
+ dependencies:
+ has-flag: 3.0.0
+
+ /supports-color/7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+ dependencies:
+ has-flag: 4.0.0
+
+ /supports-color/8.1.1:
+ resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
+ engines: {node: '>=10'}
+ dependencies:
+ has-flag: 4.0.0
+
+ /supports-hyperlinks/2.3.0:
+ resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==}
+ engines: {node: '>=8'}
+ dependencies:
+ has-flag: 4.0.0
+ supports-color: 7.2.0
+
+ /supports-preserve-symlinks-flag/1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+
+ /svg-parser/2.0.4:
+ resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==}
+ dev: false
+
+ /svgo/1.3.2:
+ resolution: {integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==}
+ engines: {node: '>=4.0.0'}
+ deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x.
+ hasBin: true
+ dependencies:
+ chalk: 2.4.2
+ coa: 2.0.2
+ css-select: 2.1.0
+ css-select-base-adapter: 0.1.1
+ css-tree: 1.0.0-alpha.37
+ csso: 4.2.0
+ js-yaml: 3.14.1
+ mkdirp: 0.5.6
+ object.values: 1.1.5
+ sax: 1.2.4
+ stable: 0.1.8
+ unquote: 1.1.1
+ util.promisify: 1.0.1
+ dev: false
+
+ /svgo/2.8.0:
+ resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ dependencies:
+ '@trysound/sax': 0.2.0
+ commander: 7.2.0
+ css-select: 4.3.0
+ css-tree: 1.1.3
+ csso: 4.2.0
+ picocolors: 1.0.0
+ stable: 0.1.8
+ dev: false
+
+ /swagger-ui-dist/4.14.0:
+ resolution: {integrity: sha512-TBzhheU15s+o54Cgk9qxuYcZMiqSm/SkvKnapoGHOF66kz0Y5aGjpzj5BT/vpBbn6rTPJ9tUYXQxuDWfsjiGMw==}
+ dev: false
+
+ /symbol-observable/4.0.0:
+ resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==}
+ engines: {node: '>=0.10'}
+ dev: true
+
+ /symbol-tree/3.2.4:
+ resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
+ dev: false
+
+ /symbol.prototype.description/1.0.5:
+ resolution: {integrity: sha512-x738iXRYsrAt9WBhRCVG5BtIC3B7CUkFwbHW2zOvGtwM33s7JjrCDyq8V0zgMYVb5ymsL8+qkzzpANH63CPQaQ==}
+ engines: {node: '>= 0.11.15'}
+ dependencies:
+ call-bind: 1.0.2
+ get-symbol-description: 1.0.0
+ has-symbols: 1.0.3
+ object.getownpropertydescriptors: 2.1.4
+ dev: false
+
+ /synchronous-promise/2.0.16:
+ resolution: {integrity: sha512-qImOD23aDfnIDNqlG1NOehdB9IYsn1V9oByPjKY1nakv2MQYCEMyX033/q+aEtYCpmYK1cv2+NTmlH+ra6GA5A==}
+ dev: false
+
+ /tailwindcss/3.2.0_postcss@8.4.18:
+ resolution: {integrity: sha512-ARh/W0uH5UlWIC2nn02V0+5fyF0k6qZliyt4QYic2upOhPUE/Spu1EURNc9txJ3+4j8OEmdigqfDpw4d2tA4vA==}
+ engines: {node: '>=12.13.0'}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.0.9
+ dependencies:
+ arg: 5.0.2
+ chokidar: 3.5.3
+ color-name: 1.1.4
+ detective: 5.2.1
+ didyoumean: 1.2.2
+ dlv: 1.1.3
+ fast-glob: 3.2.12
+ glob-parent: 6.0.2
+ is-glob: 4.0.3
+ lilconfig: 2.0.6
+ normalize-path: 3.0.0
+ object-hash: 3.0.0
+ picocolors: 1.0.0
+ postcss: 8.4.18
+ postcss-import: 14.1.0_postcss@8.4.18
+ postcss-js: 4.0.0_postcss@8.4.18
+ postcss-load-config: 3.1.4_postcss@8.4.18
+ postcss-nested: 6.0.0_postcss@8.4.18
+ postcss-selector-parser: 6.0.10
+ postcss-value-parser: 4.2.0
+ quick-lru: 5.1.1
+ resolve: 1.22.1
+ transitivePeerDependencies:
+ - ts-node
+ dev: false
+
+ /tapable/1.1.3:
+ resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /tapable/2.2.1:
+ resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
+ engines: {node: '>=6'}
+
+ /tar-stream/2.2.0:
+ resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
+ engines: {node: '>=6'}
+ dependencies:
+ bl: 4.1.0
+ end-of-stream: 1.4.4
+ fs-constants: 1.0.0
+ inherits: 2.0.4
+ readable-stream: 3.6.0
+ dev: true
+
+ /tar/6.1.11:
+ resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==}
+ engines: {node: '>= 10'}
+ dependencies:
+ chownr: 2.0.0
+ fs-minipass: 2.1.0
+ minipass: 3.3.4
+ minizlib: 2.1.2
+ mkdirp: 1.0.4
+ yallist: 4.0.0
+
+ /telejson/6.0.8:
+ resolution: {integrity: sha512-nerNXi+j8NK1QEfBHtZUN/aLdDcyupA//9kAboYLrtzZlPLpUfqbVGWb9zz91f/mIjRbAYhbgtnJHY8I1b5MBg==}
+ dependencies:
+ '@types/is-function': 1.0.1
+ global: 4.4.0
+ is-function: 1.0.2
+ is-regex: 1.1.4
+ is-symbol: 1.0.4
+ isobject: 4.0.0
+ lodash: 4.17.21
+ memoizerific: 1.11.3
+ dev: false
+
+ /temp-dir/1.0.0:
+ resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /temp-dir/2.0.0:
+ resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /tempy/0.6.0:
+ resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==}
+ engines: {node: '>=10'}
+ dependencies:
+ is-stream: 2.0.1
+ temp-dir: 2.0.0
+ type-fest: 0.16.0
+ unique-string: 2.0.0
+ dev: false
+
+ /terminal-link/2.1.1:
+ resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-escapes: 4.3.2
+ supports-hyperlinks: 2.3.0
+
+ /terser-webpack-plugin/1.4.5_webpack@4.46.0:
+ resolution: {integrity: sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==}
+ engines: {node: '>= 6.9.0'}
+ peerDependencies:
+ webpack: ^4.0.0
+ dependencies:
+ cacache: 12.0.4
+ find-cache-dir: 2.1.0
+ is-wsl: 1.1.0
+ schema-utils: 1.0.0
+ serialize-javascript: 4.0.0
+ source-map: 0.6.1
+ terser: 4.8.1
+ webpack: 4.46.0
+ webpack-sources: 1.4.3
+ worker-farm: 1.7.0
+ dev: false
+
+ /terser-webpack-plugin/4.2.3_webpack@4.46.0:
+ resolution: {integrity: sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==}
+ engines: {node: '>= 10.13.0'}
+ peerDependencies:
+ webpack: ^4.0.0 || ^5.0.0
+ dependencies:
+ cacache: 15.3.0
+ find-cache-dir: 3.3.2
+ jest-worker: 26.6.2
+ p-limit: 3.1.0
+ schema-utils: 3.1.1
+ serialize-javascript: 5.0.1
+ source-map: 0.6.1
+ terser: 5.15.0
+ webpack: 4.46.0
+ webpack-sources: 1.4.3
+ transitivePeerDependencies:
+ - bluebird
+ dev: false
+
+ /terser-webpack-plugin/5.3.6_webpack@5.74.0:
+ resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==}
+ engines: {node: '>= 10.13.0'}
+ peerDependencies:
+ '@swc/core': '*'
+ esbuild: '*'
+ uglify-js: '*'
+ webpack: ^5.1.0
+ peerDependenciesMeta:
+ '@swc/core':
+ optional: true
+ esbuild:
+ optional: true
+ uglify-js:
+ optional: true
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.15
+ jest-worker: 27.5.1
+ schema-utils: 3.1.1
+ serialize-javascript: 6.0.0
+ terser: 5.15.0
+ webpack: 5.74.0
+
+ /terser/4.8.1:
+ resolution: {integrity: sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dependencies:
+ acorn: 8.8.0
+ commander: 2.20.3
+ source-map: 0.6.1
+ source-map-support: 0.5.21
+ dev: false
+
+ /terser/5.15.0:
+ resolution: {integrity: sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ '@jridgewell/source-map': 0.3.2
+ acorn: 8.8.0
+ commander: 2.20.3
+ source-map-support: 0.5.21
+
+ /test-exclude/6.0.0:
+ resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@istanbuljs/schema': 0.1.3
+ glob: 7.2.3
+ minimatch: 3.1.2
+
+ /text-extensions/1.9.0:
+ resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==}
+ engines: {node: '>=0.10'}
+ dev: true
+
+ /text-table/0.2.0:
+ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+
+ /throat/6.0.1:
+ resolution: {integrity: sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==}
+ dev: false
+
+ /through/2.3.8:
+ resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
+ dev: true
+
+ /through2/2.0.5:
+ resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==}
+ dependencies:
+ readable-stream: 2.3.7
+ xtend: 4.0.2
+
+ /through2/4.0.2:
+ resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==}
+ dependencies:
+ readable-stream: 3.6.0
+ dev: true
+
+ /thunky/1.1.0:
+ resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==}
+ dev: false
+
+ /timers-browserify/2.0.12:
+ resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==}
+ engines: {node: '>=0.6.0'}
+ dependencies:
+ setimmediate: 1.0.5
+ dev: false
+
+ /tmp/0.0.33:
+ resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
+ engines: {node: '>=0.6.0'}
+ dependencies:
+ os-tmpdir: 1.0.2
+ dev: true
+
+ /tmp/0.2.1:
+ resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==}
+ engines: {node: '>=8.17.0'}
+ dependencies:
+ rimraf: 3.0.2
+ dev: true
+
+ /tmpl/1.0.5:
+ resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==}
+
+ /to-arraybuffer/1.0.1:
+ resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==}
+ dev: false
+
+ /to-fast-properties/2.0.0:
+ resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
+ engines: {node: '>=4'}
+
+ /to-object-path/0.3.0:
+ resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 3.2.2
+ dev: false
+
+ /to-regex-range/2.1.1:
+ resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-number: 3.0.0
+ repeat-string: 1.6.1
+ dev: false
+
+ /to-regex-range/5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+ dependencies:
+ is-number: 7.0.0
+
+ /to-regex/3.0.2:
+ resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ define-property: 2.0.2
+ extend-shallow: 3.0.2
+ regex-not: 1.0.2
+ safe-regex: 1.1.0
+ dev: false
+
+ /toidentifier/1.0.1:
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
+ dev: false
+
+ /touch/3.1.0:
+ resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==}
+ hasBin: true
+ dependencies:
+ nopt: 1.0.10
+ dev: true
+
+ /tough-cookie/4.1.2:
+ resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==}
+ engines: {node: '>=6'}
+ dependencies:
+ psl: 1.9.0
+ punycode: 2.1.1
+ universalify: 0.2.0
+ url-parse: 1.5.10
+ dev: false
+
+ /tr46/0.0.3:
+ resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+
+ /tr46/1.0.1:
+ resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
+ dependencies:
+ punycode: 2.1.1
+ dev: false
+
+ /tr46/2.1.0:
+ resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==}
+ engines: {node: '>=8'}
+ dependencies:
+ punycode: 2.1.1
+ dev: false
+
+ /tr46/3.0.0:
+ resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==}
+ engines: {node: '>=12'}
+ dependencies:
+ punycode: 2.1.1
+ dev: false
+
+ /tree-kill/1.2.2:
+ resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
+ hasBin: true
+ dev: true
+
+ /treeverse/2.0.0:
+ resolution: {integrity: sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dev: true
+
+ /trim-newlines/1.0.0:
+ resolution: {integrity: sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+ optional: true
+
+ /trim-newlines/3.0.1:
+ resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /trim-trailing-lines/1.1.4:
+ resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==}
+ dev: false
+
+ /trim/0.0.1:
+ resolution: {integrity: sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==}
+ dev: false
+
+ /trough/1.0.5:
+ resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==}
+ dev: false
+
+ /tryer/1.0.1:
+ resolution: {integrity: sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==}
+ dev: false
+
+ /ts-dedent/2.2.0:
+ resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==}
+ engines: {node: '>=6.10'}
+ dev: false
+
+ /ts-loader/9.4.1_kb3egcnme7w23lfa5xodfjfhge:
+ resolution: {integrity: sha512-384TYAqGs70rn9F0VBnh6BPTfhga7yFNdC5gXbQpDrBj9/KsT4iRkGqKXhziofHOlE2j6YEaiTYVGKKvPhGWvw==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ typescript: '*'
+ webpack: ^5.0.0
+ dependencies:
+ chalk: 4.1.2
+ enhanced-resolve: 5.10.0
+ micromatch: 4.0.5
+ semver: 7.3.7
+ typescript: 4.8.3
+ webpack: 5.74.0
+ dev: true
+
+ /ts-node/10.9.1_bidgzm5cq2du6gnjtweqqjrrn4:
+ resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
+ hasBin: true
+ peerDependencies:
+ '@swc/core': '>=1.2.50'
+ '@swc/wasm': '>=1.2.50'
+ '@types/node': '*'
+ typescript: '>=2.7'
+ peerDependenciesMeta:
+ '@swc/core':
+ optional: true
+ '@swc/wasm':
+ optional: true
+ dependencies:
+ '@cspotcode/source-map-support': 0.8.1
+ '@tsconfig/node10': 1.0.9
+ '@tsconfig/node12': 1.0.11
+ '@tsconfig/node14': 1.0.3
+ '@tsconfig/node16': 1.0.3
+ '@types/node': 18.7.18
+ acorn: 8.8.0
+ acorn-walk: 8.2.0
+ arg: 4.1.3
+ create-require: 1.1.1
+ diff: 4.0.2
+ make-error: 1.3.6
+ typescript: 4.8.3
+ v8-compile-cache-lib: 3.0.1
+ yn: 3.1.1
+ dev: true
+
+ /ts-node/10.9.1_ck2axrxkiif44rdbzjywaqjysa:
+ resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
+ hasBin: true
+ peerDependencies:
+ '@swc/core': '>=1.2.50'
+ '@swc/wasm': '>=1.2.50'
+ '@types/node': '*'
+ typescript: '>=2.7'
+ peerDependenciesMeta:
+ '@swc/core':
+ optional: true
+ '@swc/wasm':
+ optional: true
+ dependencies:
+ '@cspotcode/source-map-support': 0.8.1
+ '@tsconfig/node10': 1.0.9
+ '@tsconfig/node12': 1.0.11
+ '@tsconfig/node14': 1.0.3
+ '@tsconfig/node16': 1.0.3
+ '@types/node': 14.18.29
+ acorn: 8.8.0
+ acorn-walk: 8.2.0
+ arg: 4.1.3
+ create-require: 1.1.1
+ diff: 4.0.2
+ make-error: 1.3.6
+ typescript: 4.8.3
+ v8-compile-cache-lib: 3.0.1
+ yn: 3.1.1
+ dev: true
+
+ /ts-node/10.9.1_h6wsvvmh4l7tb54yk3ecr4mgtm:
+ resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
+ hasBin: true
+ peerDependencies:
+ '@swc/core': '>=1.2.50'
+ '@swc/wasm': '>=1.2.50'
+ '@types/node': '*'
+ typescript: '>=2.7'
+ peerDependenciesMeta:
+ '@swc/core':
+ optional: true
+ '@swc/wasm':
+ optional: true
+ dependencies:
+ '@cspotcode/source-map-support': 0.8.1
+ '@tsconfig/node10': 1.0.9
+ '@tsconfig/node12': 1.0.11
+ '@tsconfig/node14': 1.0.3
+ '@tsconfig/node16': 1.0.3
+ '@types/node': 18.11.9
+ acorn: 8.8.0
+ acorn-walk: 8.2.0
+ arg: 4.1.3
+ create-require: 1.1.1
+ diff: 4.0.2
+ make-error: 1.3.6
+ typescript: 4.8.3
+ v8-compile-cache-lib: 3.0.1
+ yn: 3.1.1
+ dev: false
+
+ /ts-pnp/1.2.0_typescript@4.8.3:
+ resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==}
+ engines: {node: '>=6'}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ typescript: 4.8.3
+ dev: false
+
+ /tsconfig-paths-webpack-plugin/4.0.0:
+ resolution: {integrity: sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ==}
+ engines: {node: '>=10.13.0'}
+ dependencies:
+ chalk: 4.1.2
+ enhanced-resolve: 5.10.0
+ tsconfig-paths: 4.1.0
+ dev: true
+
+ /tsconfig-paths/3.14.1:
+ resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==}
+ dependencies:
+ '@types/json5': 0.0.29
+ json5: 1.0.1
+ minimist: 1.2.6
+ strip-bom: 3.0.0
+
+ /tsconfig-paths/4.1.0:
+ resolution: {integrity: sha512-AHx4Euop/dXFC+Vx589alFba8QItjF+8hf8LtmuiCwHyI4rHXQtOOENaM8kvYf5fR0dRChy3wzWIZ9WbB7FWow==}
+ engines: {node: '>=6'}
+ dependencies:
+ json5: 2.2.1
+ minimist: 1.2.6
+ strip-bom: 3.0.0
+ dev: true
+
+ /tslib/1.14.1:
+ resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
+
+ /tslib/2.3.1:
+ resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==}
+ dev: false
+
+ /tslib/2.4.0:
+ resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==}
+
+ /tslib/2.4.1:
+ resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==}
+
+ /tsutils/3.21.0_typescript@4.8.3:
+ resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
+ 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'
+ dependencies:
+ tslib: 1.14.1
+ typescript: 4.8.3
+ dev: false
+
+ /tsutils/3.21.0_typescript@4.8.4:
+ resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
+ 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'
+ dependencies:
+ tslib: 1.14.1
+ typescript: 4.8.4
+
+ /tty-browserify/0.0.0:
+ resolution: {integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==}
+ dev: false
+
+ /type-check/0.3.2:
+ resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.1.2
+ dev: false
+
+ /type-check/0.4.0:
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.2.1
+
+ /type-detect/4.0.8:
+ resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
+ engines: {node: '>=4'}
+
+ /type-fest/0.16.0:
+ resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /type-fest/0.18.1:
+ resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /type-fest/0.20.2:
+ resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
+ engines: {node: '>=10'}
+
+ /type-fest/0.21.3:
+ resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
+ engines: {node: '>=10'}
+
+ /type-fest/0.4.1:
+ resolution: {integrity: sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /type-fest/0.6.0:
+ resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
+ engines: {node: '>=8'}
+
+ /type-fest/0.8.1:
+ resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
+ engines: {node: '>=8'}
+
+ /type-is/1.6.18:
+ resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ media-typer: 0.3.0
+ mime-types: 2.1.35
+ dev: false
+
+ /typedarray-to-buffer/3.1.5:
+ resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
+ dependencies:
+ is-typedarray: 1.0.0
+
+ /typedarray/0.0.6:
+ resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
+
+ /typedoc/0.23.20_typescript@4.8.4:
+ resolution: {integrity: sha512-nfb4Mx05ZZZXux3zPcLuc7+3TVePDW3jTdEBqXdQzJUyEILxoprgPIiTChbvci9crkqNJG9YESmfCptuh9Gn3g==}
+ engines: {node: '>= 14.14'}
+ hasBin: true
+ peerDependencies:
+ typescript: 4.6.x || 4.7.x || 4.8.x
+ dependencies:
+ lunr: 2.3.9
+ marked: 4.2.2
+ minimatch: 5.1.0
+ shiki: 0.11.1
+ typescript: 4.8.4
+ dev: true
+
+ /typescript/4.8.3:
+ resolution: {integrity: sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==}
+ engines: {node: '>=4.2.0'}
+ hasBin: true
+
+ /typescript/4.8.4:
+ resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==}
+ engines: {node: '>=4.2.0'}
+ hasBin: true
+
+ /uglify-js/3.17.4:
+ resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==}
+ engines: {node: '>=0.8.0'}
+ hasBin: true
+ requiresBuild: true
+ optional: true
+
+ /unbox-primitive/1.0.2:
+ resolution: {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
+
+ /undefsafe/2.0.5:
+ resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==}
+ dev: true
+
+ /unfetch/4.2.0:
+ resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==}
+ dev: false
+
+ /unherit/1.1.3:
+ resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==}
+ dependencies:
+ inherits: 2.0.4
+ xtend: 4.0.2
+ dev: false
+
+ /unicode-canonical-property-names-ecmascript/2.0.0:
+ resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /unicode-match-property-ecmascript/2.0.0:
+ resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==}
+ engines: {node: '>=4'}
+ dependencies:
+ unicode-canonical-property-names-ecmascript: 2.0.0
+ unicode-property-aliases-ecmascript: 2.1.0
+ dev: false
+
+ /unicode-match-property-value-ecmascript/2.0.0:
+ resolution: {integrity: sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /unicode-property-aliases-ecmascript/2.1.0:
+ resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /unified/9.2.0:
+ resolution: {integrity: sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==}
+ dependencies:
+ '@types/unist': 2.0.6
+ bail: 1.0.5
+ extend: 3.0.2
+ is-buffer: 2.0.5
+ is-plain-obj: 2.1.0
+ trough: 1.0.5
+ vfile: 4.2.1
+ dev: false
+
+ /union-value/1.0.1:
+ resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-union: 3.1.0
+ get-value: 2.0.6
+ is-extendable: 0.1.1
+ set-value: 2.0.1
+ dev: false
+
+ /union/0.5.0:
+ resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ qs: 6.10.3
+ dev: false
+
+ /unique-filename/1.1.1:
+ resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==}
+ dependencies:
+ unique-slug: 2.0.2
+ dev: false
+
+ /unique-filename/2.0.1:
+ resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ unique-slug: 3.0.0
+ dev: true
+
+ /unique-slug/2.0.2:
+ resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==}
+ dependencies:
+ imurmurhash: 0.1.4
+ dev: false
+
+ /unique-slug/3.0.0:
+ resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ imurmurhash: 0.1.4
+ dev: true
+
+ /unique-string/2.0.0:
+ resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==}
+ engines: {node: '>=8'}
+ dependencies:
+ crypto-random-string: 2.0.0
+ dev: false
+
+ /unist-builder/2.0.3:
+ resolution: {integrity: sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==}
+ dev: false
+
+ /unist-util-generated/1.1.6:
+ resolution: {integrity: sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==}
+ dev: false
+
+ /unist-util-is/4.1.0:
+ resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==}
+ dev: false
+
+ /unist-util-position/3.1.0:
+ resolution: {integrity: sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==}
+ dev: false
+
+ /unist-util-remove-position/2.0.1:
+ resolution: {integrity: sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==}
+ dependencies:
+ unist-util-visit: 2.0.3
+ dev: false
+
+ /unist-util-remove/2.1.0:
+ resolution: {integrity: sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==}
+ dependencies:
+ unist-util-is: 4.1.0
+ dev: false
+
+ /unist-util-stringify-position/2.0.3:
+ resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==}
+ dependencies:
+ '@types/unist': 2.0.6
+ dev: false
+
+ /unist-util-visit-parents/3.1.1:
+ resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==}
+ dependencies:
+ '@types/unist': 2.0.6
+ unist-util-is: 4.1.0
+ dev: false
+
+ /unist-util-visit/2.0.3:
+ resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==}
+ dependencies:
+ '@types/unist': 2.0.6
+ unist-util-is: 4.1.0
+ unist-util-visit-parents: 3.1.1
+ dev: false
+
+ /universal-user-agent/6.0.0:
+ resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==}
+ dev: true
+
+ /universalify/0.2.0:
+ resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
+ engines: {node: '>= 4.0.0'}
+ dev: false
+
+ /universalify/2.0.0:
+ resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
+ engines: {node: '>= 10.0.0'}
+
+ /unpipe/1.0.0:
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
+ /unquote/1.1.1:
+ resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==}
+ dev: false
+
+ /unset-value/1.0.0:
+ resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ has-value: 0.3.1
+ isobject: 3.0.1
+ dev: false
+
+ /untildify/2.1.0:
+ resolution: {integrity: sha512-sJjbDp2GodvkB0FZZcn7k6afVisqX5BZD7Yq3xp4nN2O15BBK0cLm3Vwn2vQaF7UDS0UUsrQMkkplmDI5fskig==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ os-homedir: 1.0.2
+ dev: false
+ optional: true
+
+ /upath/1.2.0:
+ resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /upath/2.0.1:
+ resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /update-browserslist-db/1.0.9_browserslist@4.21.4:
+ resolution: {integrity: sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+ dependencies:
+ browserslist: 4.21.4
+ escalade: 3.1.1
+ picocolors: 1.0.0
+
+ /uri-js/4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+ dependencies:
+ punycode: 2.1.1
+
+ /urix/0.1.0:
+ resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==}
+ deprecated: Please see https://github.com/lydell/urix#deprecated
+ dev: false
+
+ /url-join/4.0.1:
+ resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==}
+ dev: false
+
+ /url-loader/4.1.1_lit45vopotvaqup7lrvlnvtxwy:
+ resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==}
+ engines: {node: '>= 10.13.0'}
+ peerDependencies:
+ file-loader: '*'
+ webpack: ^4.0.0 || ^5.0.0
+ peerDependenciesMeta:
+ file-loader:
+ optional: true
+ dependencies:
+ file-loader: 6.2.0_webpack@4.46.0
+ loader-utils: 2.0.3
+ mime-types: 2.1.35
+ schema-utils: 3.1.1
+ webpack: 4.46.0
+ dev: false
+
+ /url-parse/1.5.10:
+ resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
+ dependencies:
+ querystringify: 2.2.0
+ requires-port: 1.0.0
+ dev: false
+
+ /url/0.11.0:
+ resolution: {integrity: sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==}
+ dependencies:
+ punycode: 1.3.2
+ querystring: 0.2.0
+ dev: false
+
+ /use-composed-ref/1.3.0_react@18.2.0:
+ resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /use-isomorphic-layout-effect/1.1.2_iapumuv4e6jcjznwuxpf4tt22e:
+ resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.0.21
+ react: 18.2.0
+ dev: false
+
+ /use-latest/1.2.1_iapumuv4e6jcjznwuxpf4tt22e:
+ resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.0.21
+ react: 18.2.0
+ use-isomorphic-layout-effect: 1.1.2_iapumuv4e6jcjznwuxpf4tt22e
+ dev: false
+
+ /use-sync-external-store/1.2.0_react@18.2.0:
+ resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /use/3.1.1:
+ resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /util-deprecate/1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ /util.promisify/1.0.0:
+ resolution: {integrity: sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==}
+ dependencies:
+ define-properties: 1.1.4
+ object.getownpropertydescriptors: 2.1.4
+ dev: false
+
+ /util.promisify/1.0.1:
+ resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==}
+ dependencies:
+ define-properties: 1.1.4
+ es-abstract: 1.20.3
+ has-symbols: 1.0.3
+ object.getownpropertydescriptors: 2.1.4
+ dev: false
+
+ /util/0.10.3:
+ resolution: {integrity: sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==}
+ dependencies:
+ inherits: 2.0.1
+ dev: false
+
+ /util/0.11.1:
+ resolution: {integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==}
+ dependencies:
+ inherits: 2.0.3
+ dev: false
+
+ /utila/0.4.0:
+ resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==}
+ dev: false
+
+ /utils-merge/1.0.1:
+ resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
+ engines: {node: '>= 0.4.0'}
+ dev: false
+
+ /uuid-browser/3.1.0:
+ resolution: {integrity: sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg==}
+ dev: false
+
+ /uuid/3.4.0:
+ resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==}
+ deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
+ hasBin: true
+ dev: false
+
+ /uuid/8.3.2:
+ resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
+ hasBin: true
+
+ /uuid/9.0.0:
+ resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==}
+ hasBin: true
+ dev: false
+
+ /v8-compile-cache-lib/3.0.1:
+ resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
+
+ /v8-compile-cache/2.3.0:
+ resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==}
+ dev: true
+
+ /v8-to-istanbul/8.1.1:
+ resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==}
+ engines: {node: '>=10.12.0'}
+ dependencies:
+ '@types/istanbul-lib-coverage': 2.0.4
+ convert-source-map: 1.8.0
+ source-map: 0.7.4
+ dev: false
+
+ /v8-to-istanbul/9.0.1:
+ resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==}
+ engines: {node: '>=10.12.0'}
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.15
+ '@types/istanbul-lib-coverage': 2.0.4
+ convert-source-map: 1.8.0
+
+ /validate-npm-package-license/3.0.4:
+ resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
+ dependencies:
+ spdx-correct: 3.1.1
+ spdx-expression-parse: 3.0.1
+
+ /validate-npm-package-name/3.0.0:
+ resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==}
+ dependencies:
+ builtins: 1.0.3
+ dev: true
+
+ /validate-npm-package-name/4.0.0:
+ resolution: {integrity: sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ builtins: 5.0.1
+ dev: true
+
+ /validator/13.7.0:
+ resolution: {integrity: sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==}
+ engines: {node: '>= 0.10'}
+ dev: false
+
+ /vary/1.1.2:
+ resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
+ /vfile-location/3.2.0:
+ resolution: {integrity: sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==}
+ dev: false
+
+ /vfile-message/2.0.4:
+ resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==}
+ dependencies:
+ '@types/unist': 2.0.6
+ unist-util-stringify-position: 2.0.3
+ dev: false
+
+ /vfile/4.2.1:
+ resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==}
+ dependencies:
+ '@types/unist': 2.0.6
+ is-buffer: 2.0.5
+ unist-util-stringify-position: 2.0.3
+ vfile-message: 2.0.4
+ dev: false
+
+ /vite/3.2.3:
+ resolution: {integrity: sha512-h8jl1TZ76eGs3o2dIBSsvXDLb1m/Ec1iej8ZMdz+PsaFUsftZeWe2CZOI3qogEsMNaywc17gu0q6cQDzh/weCQ==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': '>= 14'
+ less: '*'
+ sass: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ dependencies:
+ esbuild: 0.15.13
+ postcss: 8.4.18
+ resolve: 1.22.1
+ rollup: 2.79.1
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /vm-browserify/1.1.2:
+ resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==}
+ dev: false
+
+ /vscode-oniguruma/1.6.2:
+ resolution: {integrity: sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==}
+ dev: true
+
+ /vscode-textmate/6.0.0:
+ resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==}
+ dev: true
+
+ /w3c-hr-time/1.0.2:
+ resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==}
+ deprecated: Use your platform's native performance.now() and performance.timeOrigin.
+ dependencies:
+ browser-process-hrtime: 1.0.0
+ dev: false
+
+ /w3c-xmlserializer/2.0.0:
+ resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==}
+ engines: {node: '>=10'}
+ dependencies:
+ xml-name-validator: 3.0.0
+ dev: false
+
+ /walk-up-path/1.0.0:
+ resolution: {integrity: sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==}
+ dev: true
+
+ /walker/1.0.8:
+ resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
+ dependencies:
+ makeerror: 1.0.12
+
+ /watchpack-chokidar2/2.0.1:
+ resolution: {integrity: sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==}
+ requiresBuild: true
+ dependencies:
+ chokidar: 2.1.8
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+ optional: true
+
+ /watchpack/1.7.5:
+ resolution: {integrity: sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==}
+ dependencies:
+ graceful-fs: 4.2.10
+ neo-async: 2.6.2
+ optionalDependencies:
+ chokidar: 3.5.3
+ watchpack-chokidar2: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /watchpack/2.4.0:
+ resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==}
+ engines: {node: '>=10.13.0'}
+ dependencies:
+ glob-to-regexp: 0.4.1
+ graceful-fs: 4.2.10
+
+ /wbuf/1.7.3:
+ resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==}
+ dependencies:
+ minimalistic-assert: 1.0.1
+ dev: false
+
+ /wcwidth/1.0.1:
+ resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
+ dependencies:
+ defaults: 1.0.4
+ dev: true
+
+ /web-namespaces/1.1.4:
+ resolution: {integrity: sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==}
+ dev: false
+
+ /web-vitals/3.0.4:
+ resolution: {integrity: sha512-Yau8qf1AJ/dm6MY180Bi0qpCIuWmAfKAnOqmxLecGfIHn0+ND3H4JOhXeY73Pyi9zjSF5J4SNUewHLNUzU7mmA==}
+ dev: false
+
+ /webfontloader/1.6.28:
+ resolution: {integrity: sha512-Egb0oFEga6f+nSgasH3E0M405Pzn6y3/9tOVanv/DLfa1YBIgcv90L18YyWnvXkRbIM17v5Kv6IT2N6g1x5tvQ==}
+ dev: false
+
+ /webidl-conversions/3.0.1:
+ resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+
+ /webidl-conversions/4.0.2:
+ resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
+ dev: false
+
+ /webidl-conversions/5.0.0:
+ resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /webidl-conversions/6.1.0:
+ resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==}
+ engines: {node: '>=10.4'}
+ dev: false
+
+ /webidl-conversions/7.0.0:
+ resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /webpack-dev-middleware/3.7.3_webpack@4.46.0:
+ resolution: {integrity: sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==}
+ engines: {node: '>= 6'}
+ peerDependencies:
+ webpack: ^4.0.0 || ^5.0.0
+ dependencies:
+ memory-fs: 0.4.1
+ mime: 2.6.0
+ mkdirp: 0.5.6
+ range-parser: 1.2.1
+ webpack: 4.46.0
+ webpack-log: 2.0.0
+ dev: false
+
+ /webpack-dev-middleware/5.3.3_webpack@5.74.0:
+ resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==}
+ engines: {node: '>= 12.13.0'}
+ peerDependencies:
+ webpack: ^4.0.0 || ^5.0.0
+ dependencies:
+ colorette: 2.0.19
+ memfs: 3.4.7
+ mime-types: 2.1.35
+ range-parser: 1.2.1
+ schema-utils: 4.0.0
+ webpack: 5.74.0
+ dev: false
+
+ /webpack-dev-server/4.11.1_webpack@5.74.0:
+ resolution: {integrity: sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==}
+ engines: {node: '>= 12.13.0'}
+ hasBin: true
+ peerDependencies:
+ webpack: ^4.37.0 || ^5.0.0
+ webpack-cli: '*'
+ peerDependenciesMeta:
+ webpack-cli:
+ optional: true
+ dependencies:
+ '@types/bonjour': 3.5.10
+ '@types/connect-history-api-fallback': 1.3.5
+ '@types/express': 4.17.14
+ '@types/serve-index': 1.9.1
+ '@types/serve-static': 1.15.0
+ '@types/sockjs': 0.3.33
+ '@types/ws': 8.5.3
+ ansi-html-community: 0.0.8
+ bonjour-service: 1.0.14
+ chokidar: 3.5.3
+ colorette: 2.0.19
+ compression: 1.7.4
+ connect-history-api-fallback: 2.0.0
+ default-gateway: 6.0.3
+ express: 4.18.1
+ graceful-fs: 4.2.10
+ html-entities: 2.3.3
+ http-proxy-middleware: 2.0.6_@types+express@4.17.14
+ ipaddr.js: 2.0.1
+ open: 8.4.0
+ p-retry: 4.6.2
+ 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: 5.74.0
+ webpack-dev-middleware: 5.3.3_webpack@5.74.0
+ ws: 8.9.0
+ transitivePeerDependencies:
+ - bufferutil
+ - debug
+ - supports-color
+ - utf-8-validate
+ dev: false
+
+ /webpack-filter-warnings-plugin/1.2.1_webpack@4.46.0:
+ resolution: {integrity: sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg==}
+ engines: {node: '>= 4.3 < 5.0.0 || >= 5.10'}
+ peerDependencies:
+ webpack: ^2.0.0 || ^3.0.0 || ^4.0.0
+ dependencies:
+ webpack: 4.46.0
+ dev: false
+
+ /webpack-hot-middleware/2.25.2:
+ resolution: {integrity: sha512-CVgm3NAQyfdIonRvXisRwPTUYuSbyZ6BY7782tMeUzWOO7RmVI2NaBYuCp41qyD4gYCkJyTneAJdK69A13B0+A==}
+ dependencies:
+ ansi-html-community: 0.0.8
+ html-entities: 2.3.3
+ strip-ansi: 6.0.1
+ dev: false
+
+ /webpack-log/2.0.0:
+ resolution: {integrity: sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==}
+ engines: {node: '>= 6'}
+ dependencies:
+ ansi-colors: 3.2.4
+ uuid: 3.4.0
+ dev: false
+
+ /webpack-manifest-plugin/4.1.1_webpack@5.74.0:
+ resolution: {integrity: sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==}
+ engines: {node: '>=12.22.0'}
+ peerDependencies:
+ webpack: ^4.44.2 || ^5.47.0
+ dependencies:
+ tapable: 2.2.1
+ webpack: 5.74.0
+ webpack-sources: 2.3.1
+ dev: false
+
+ /webpack-merge/4.2.2:
+ resolution: {integrity: sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==}
+ dependencies:
+ lodash: 4.17.21
+ dev: false
+
+ /webpack-node-externals/3.0.0:
+ resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /webpack-sources/1.4.3:
+ resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==}
+ dependencies:
+ source-list-map: 2.0.1
+ source-map: 0.6.1
+ dev: false
+
+ /webpack-sources/2.3.1:
+ resolution: {integrity: sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==}
+ engines: {node: '>=10.13.0'}
+ dependencies:
+ source-list-map: 2.0.1
+ source-map: 0.6.1
+ dev: false
+
+ /webpack-sources/3.2.3:
+ resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
+ engines: {node: '>=10.13.0'}
+
+ /webpack-virtual-modules/0.2.2:
+ resolution: {integrity: sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA==}
+ dependencies:
+ debug: 3.2.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /webpack/4.46.0:
+ resolution: {integrity: sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==}
+ engines: {node: '>=6.11.5'}
+ hasBin: true
+ peerDependencies:
+ webpack-cli: '*'
+ webpack-command: '*'
+ peerDependenciesMeta:
+ webpack-cli:
+ optional: true
+ webpack-command:
+ optional: true
+ dependencies:
+ '@webassemblyjs/ast': 1.9.0
+ '@webassemblyjs/helper-module-context': 1.9.0
+ '@webassemblyjs/wasm-edit': 1.9.0
+ '@webassemblyjs/wasm-parser': 1.9.0
+ acorn: 6.4.2
+ ajv: 6.12.6
+ ajv-keywords: 3.5.2_ajv@6.12.6
+ chrome-trace-event: 1.0.3
+ enhanced-resolve: 4.5.0
+ eslint-scope: 4.0.3
+ json-parse-better-errors: 1.0.2
+ loader-runner: 2.4.0
+ loader-utils: 1.4.0
+ memory-fs: 0.4.1
+ micromatch: 3.1.10
+ mkdirp: 0.5.6
+ neo-async: 2.6.2
+ node-libs-browser: 2.2.1
+ schema-utils: 1.0.0
+ tapable: 1.1.3
+ terser-webpack-plugin: 1.4.5_webpack@4.46.0
+ watchpack: 1.7.5
+ webpack-sources: 1.4.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /webpack/5.74.0:
+ resolution: {integrity: sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ peerDependencies:
+ webpack-cli: '*'
+ peerDependenciesMeta:
+ webpack-cli:
+ optional: true
+ dependencies:
+ '@types/eslint-scope': 3.7.4
+ '@types/estree': 0.0.51
+ '@webassemblyjs/ast': 1.11.1
+ '@webassemblyjs/wasm-edit': 1.11.1
+ '@webassemblyjs/wasm-parser': 1.11.1
+ acorn: 8.8.0
+ acorn-import-assertions: 1.8.0_acorn@8.8.0
+ browserslist: 4.21.4
+ chrome-trace-event: 1.0.3
+ enhanced-resolve: 5.10.0
+ es-module-lexer: 0.9.3
+ eslint-scope: 5.1.1
+ events: 3.3.0
+ glob-to-regexp: 0.4.1
+ graceful-fs: 4.2.10
+ json-parse-even-better-errors: 2.3.1
+ loader-runner: 4.3.0
+ mime-types: 2.1.35
+ neo-async: 2.6.2
+ schema-utils: 3.1.1
+ tapable: 2.2.1
+ terser-webpack-plugin: 5.3.6_webpack@5.74.0
+ watchpack: 2.4.0
+ webpack-sources: 3.2.3
+ transitivePeerDependencies:
+ - '@swc/core'
+ - esbuild
+ - uglify-js
+
+ /websocket-driver/0.7.4:
+ resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==}
+ engines: {node: '>=0.8.0'}
+ dependencies:
+ http-parser-js: 0.5.8
+ safe-buffer: 5.2.1
+ websocket-extensions: 0.1.4
+ dev: false
+
+ /websocket-extensions/0.1.4:
+ resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==}
+ engines: {node: '>=0.8.0'}
+ dev: false
+
+ /whatwg-encoding/1.0.5:
+ resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==}
+ dependencies:
+ iconv-lite: 0.4.24
+ dev: false
+
+ /whatwg-encoding/2.0.0:
+ resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==}
+ engines: {node: '>=12'}
+ dependencies:
+ iconv-lite: 0.6.3
+ dev: false
+
+ /whatwg-fetch/3.6.2:
+ resolution: {integrity: sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==}
+ dev: false
+
+ /whatwg-mimetype/2.3.0:
+ resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==}
+ dev: false
+
+ /whatwg-url/11.0.0:
+ resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ tr46: 3.0.0
+ webidl-conversions: 7.0.0
+ dev: false
+
+ /whatwg-url/5.0.0:
+ resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+ dependencies:
+ tr46: 0.0.3
+ webidl-conversions: 3.0.1
+
+ /whatwg-url/7.1.0:
+ resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
+ dependencies:
+ lodash.sortby: 4.7.0
+ tr46: 1.0.1
+ webidl-conversions: 4.0.2
+ dev: false
+
+ /whatwg-url/8.7.0:
+ resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==}
+ engines: {node: '>=10'}
+ dependencies:
+ lodash: 4.17.21
+ tr46: 2.1.0
+ webidl-conversions: 6.1.0
+ dev: false
+
+ /which-boxed-primitive/1.0.2:
+ resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
+ dependencies:
+ is-bigint: 1.0.4
+ is-boolean-object: 1.1.2
+ is-number-object: 1.0.7
+ is-string: 1.0.7
+ is-symbol: 1.0.4
+
+ /which/1.3.1:
+ resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
+ hasBin: true
+ dependencies:
+ isexe: 2.0.0
+ dev: false
+
+ /which/2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+ dependencies:
+ isexe: 2.0.0
+
+ /wide-align/1.1.5:
+ resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
+ dependencies:
+ string-width: 4.2.3
+
+ /widest-line/3.1.0:
+ resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==}
+ engines: {node: '>=8'}
+ dependencies:
+ string-width: 4.2.3
+ dev: false
+
+ /windows-release/4.0.0:
+ resolution: {integrity: sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==}
+ engines: {node: '>=10'}
+ dependencies:
+ execa: 4.1.0
+ dev: true
+
+ /wmf/1.0.2:
+ resolution: {integrity: sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==}
+ engines: {node: '>=0.8'}
+ dev: false
+
+ /word-wrap/1.2.3:
+ resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
+ engines: {node: '>=0.10.0'}
+
+ /word/0.3.0:
+ resolution: {integrity: sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==}
+ engines: {node: '>=0.8'}
+ dev: false
+
+ /wordwrap/1.0.0:
+ resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
+
+ /workbox-background-sync/6.5.4:
+ resolution: {integrity: sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==}
+ dependencies:
+ idb: 7.1.0
+ workbox-core: 6.5.4
+ dev: false
+
+ /workbox-broadcast-update/6.5.4:
+ resolution: {integrity: sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==}
+ dependencies:
+ workbox-core: 6.5.4
+ dev: false
+
+ /workbox-build/6.5.4:
+ resolution: {integrity: sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==}
+ engines: {node: '>=10.0.0'}
+ dependencies:
+ '@apideck/better-ajv-errors': 0.3.6_ajv@8.11.0
+ '@babel/core': 7.19.6
+ '@babel/preset-env': 7.19.4_@babel+core@7.19.6
+ '@babel/runtime': 7.19.0
+ '@rollup/plugin-babel': 5.3.1_vyv4jbhmcriklval33ak5sngky
+ '@rollup/plugin-node-resolve': 11.2.1_rollup@2.79.1
+ '@rollup/plugin-replace': 2.4.2_rollup@2.79.1
+ '@surma/rollup-plugin-off-main-thread': 2.2.3
+ ajv: 8.11.0
+ common-tags: 1.8.2
+ fast-json-stable-stringify: 2.1.0
+ fs-extra: 9.1.0
+ glob: 7.2.3
+ lodash: 4.17.21
+ pretty-bytes: 5.6.0
+ rollup: 2.79.1
+ rollup-plugin-terser: 7.0.2_rollup@2.79.1
+ 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.5.4
+ workbox-broadcast-update: 6.5.4
+ workbox-cacheable-response: 6.5.4
+ workbox-core: 6.5.4
+ workbox-expiration: 6.5.4
+ workbox-google-analytics: 6.5.4
+ workbox-navigation-preload: 6.5.4
+ workbox-precaching: 6.5.4
+ workbox-range-requests: 6.5.4
+ workbox-recipes: 6.5.4
+ workbox-routing: 6.5.4
+ workbox-strategies: 6.5.4
+ workbox-streams: 6.5.4
+ workbox-sw: 6.5.4
+ workbox-window: 6.5.4
+ transitivePeerDependencies:
+ - '@types/babel__core'
+ - supports-color
+ dev: false
+
+ /workbox-cacheable-response/6.5.4:
+ resolution: {integrity: sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==}
+ dependencies:
+ workbox-core: 6.5.4
+ dev: false
+
+ /workbox-core/6.5.4:
+ resolution: {integrity: sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==}
+ dev: false
+
+ /workbox-expiration/6.5.4:
+ resolution: {integrity: sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==}
+ dependencies:
+ idb: 7.1.0
+ workbox-core: 6.5.4
+ dev: false
+
+ /workbox-google-analytics/6.5.4:
+ resolution: {integrity: sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==}
+ dependencies:
+ workbox-background-sync: 6.5.4
+ workbox-core: 6.5.4
+ workbox-routing: 6.5.4
+ workbox-strategies: 6.5.4
+ dev: false
+
+ /workbox-navigation-preload/6.5.4:
+ resolution: {integrity: sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==}
+ dependencies:
+ workbox-core: 6.5.4
+ dev: false
+
+ /workbox-precaching/6.5.4:
+ resolution: {integrity: sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==}
+ dependencies:
+ workbox-core: 6.5.4
+ workbox-routing: 6.5.4
+ workbox-strategies: 6.5.4
+ dev: false
+
+ /workbox-range-requests/6.5.4:
+ resolution: {integrity: sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==}
+ dependencies:
+ workbox-core: 6.5.4
+ dev: false
+
+ /workbox-recipes/6.5.4:
+ resolution: {integrity: sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==}
+ dependencies:
+ workbox-cacheable-response: 6.5.4
+ workbox-core: 6.5.4
+ workbox-expiration: 6.5.4
+ workbox-precaching: 6.5.4
+ workbox-routing: 6.5.4
+ workbox-strategies: 6.5.4
+ dev: false
+
+ /workbox-routing/6.5.4:
+ resolution: {integrity: sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==}
+ dependencies:
+ workbox-core: 6.5.4
+ dev: false
+
+ /workbox-strategies/6.5.4:
+ resolution: {integrity: sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==}
+ dependencies:
+ workbox-core: 6.5.4
+ dev: false
+
+ /workbox-streams/6.5.4:
+ resolution: {integrity: sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==}
+ dependencies:
+ workbox-core: 6.5.4
+ workbox-routing: 6.5.4
+ dev: false
+
+ /workbox-sw/6.5.4:
+ resolution: {integrity: sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==}
+ dev: false
+
+ /workbox-webpack-plugin/6.5.4_webpack@5.74.0:
+ resolution: {integrity: sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ webpack: ^4.4.0 || ^5.9.0
+ dependencies:
+ fast-json-stable-stringify: 2.1.0
+ pretty-bytes: 5.6.0
+ upath: 1.2.0
+ webpack: 5.74.0
+ webpack-sources: 1.4.3
+ workbox-build: 6.5.4
+ transitivePeerDependencies:
+ - '@types/babel__core'
+ - supports-color
+ dev: false
+
+ /workbox-window/6.5.4:
+ resolution: {integrity: sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==}
+ dependencies:
+ '@types/trusted-types': 2.0.2
+ workbox-core: 6.5.4
+ dev: false
+
+ /worker-farm/1.7.0:
+ resolution: {integrity: sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==}
+ dependencies:
+ errno: 0.1.8
+ dev: false
+
+ /worker-rpc/0.1.1:
+ resolution: {integrity: sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==}
+ dependencies:
+ microevent.ts: 0.1.1
+ dev: false
+
+ /workerpool/6.2.1:
+ resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==}
+ dev: true
+
+ /wrap-ansi/6.2.0:
+ resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ dev: true
+
+ /wrap-ansi/7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ /wrappy/1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+
+ /write-file-atomic/2.4.3:
+ resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==}
+ dependencies:
+ graceful-fs: 4.2.10
+ imurmurhash: 0.1.4
+ signal-exit: 3.0.7
+ dev: true
+
+ /write-file-atomic/3.0.3:
+ resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==}
+ dependencies:
+ imurmurhash: 0.1.4
+ is-typedarray: 1.0.0
+ signal-exit: 3.0.7
+ typedarray-to-buffer: 3.1.5
+
+ /write-file-atomic/4.0.2:
+ resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ imurmurhash: 0.1.4
+ signal-exit: 3.0.7
+ dev: true
+
+ /write-json-file/3.2.0:
+ resolution: {integrity: sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==}
+ engines: {node: '>=6'}
+ dependencies:
+ detect-indent: 5.0.0
+ graceful-fs: 4.2.10
+ make-dir: 2.1.0
+ pify: 4.0.1
+ sort-keys: 2.0.0
+ write-file-atomic: 2.4.3
+ dev: true
+
+ /write-json-file/4.3.0:
+ resolution: {integrity: sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==}
+ engines: {node: '>=8.3'}
+ dependencies:
+ detect-indent: 6.1.0
+ graceful-fs: 4.2.10
+ is-plain-obj: 2.1.0
+ make-dir: 3.1.0
+ sort-keys: 4.2.0
+ write-file-atomic: 3.0.3
+ dev: true
+
+ /write-pkg/4.0.0:
+ resolution: {integrity: sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==}
+ engines: {node: '>=8'}
+ dependencies:
+ sort-keys: 2.0.0
+ type-fest: 0.4.1
+ write-json-file: 3.2.0
+ dev: true
+
+ /ws/7.5.9:
+ resolution: {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
+ dev: false
+
+ /ws/8.9.0:
+ resolution: {integrity: sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+ dev: false
+
+ /x-default-browser/0.4.0:
+ resolution: {integrity: sha512-7LKo7RtWfoFN/rHx1UELv/2zHGMx8MkZKDq1xENmOCTkfIqZJ0zZ26NEJX8czhnPXVcqS0ARjjfJB+eJ0/5Cvw==}
+ hasBin: true
+ optionalDependencies:
+ default-browser-id: 1.0.4
+ dev: false
+
+ /xlsx/0.18.5:
+ resolution: {integrity: sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==}
+ engines: {node: '>=0.8'}
+ hasBin: true
+ dependencies:
+ adler-32: 1.3.1
+ cfb: 1.2.2
+ codepage: 1.15.0
+ crc-32: 1.2.2
+ ssf: 0.11.2
+ wmf: 1.0.2
+ word: 0.3.0
+ dev: false
+
+ /xml-name-validator/3.0.0:
+ resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==}
+ dev: false
+
+ /xmlchars/2.2.0:
+ resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
+ dev: false
+
+ /xtend/4.0.2:
+ resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
+ engines: {node: '>=0.4'}
+
+ /y18n/4.0.3:
+ resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
+ dev: false
+
+ /y18n/5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+
+ /yallist/3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+ dev: false
+
+ /yallist/4.0.0:
+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+
+ /yaml/1.10.2:
+ resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
+ engines: {node: '>= 6'}
+
+ /yaml/2.1.1:
+ resolution: {integrity: sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw==}
+ engines: {node: '>= 14'}
+ dev: true
+
+ /yargs-parser/20.2.4:
+ resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /yargs-parser/20.2.9:
+ resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
+ engines: {node: '>=10'}
+
+ /yargs-parser/21.0.1:
+ resolution: {integrity: sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /yargs-parser/21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /yargs-unparser/2.0.0:
+ resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==}
+ engines: {node: '>=10'}
+ dependencies:
+ camelcase: 6.3.0
+ decamelize: 4.0.0
+ flat: 5.0.2
+ is-plain-obj: 2.1.0
+ dev: true
+
+ /yargs/16.2.0:
+ resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
+ engines: {node: '>=10'}
+ dependencies:
+ cliui: 7.0.4
+ escalade: 3.1.1
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 20.2.9
+
+ /yargs/17.5.1:
+ resolution: {integrity: sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==}
+ engines: {node: '>=12'}
+ dependencies:
+ cliui: 7.0.4
+ escalade: 3.1.1
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
+ dev: true
+
+ /yargs/17.6.2:
+ resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==}
+ engines: {node: '>=12'}
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.1.1
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
+ dev: true
+
+ /yn/3.1.1:
+ resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
+ engines: {node: '>=6'}
+
+ /yocto-queue/0.1.0:
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
+
+ /zwitch/1.0.5:
+ resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==}
+ dev: false
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
new file mode 100644
index 000000000..87fba25c7
--- /dev/null
+++ b/pnpm-workspace.yaml
@@ -0,0 +1,4 @@
+packages:
+ - "apps/*"
+ - "packages/*"
+ - "libs/*"
diff --git a/scripts/setup-env-files.js b/scripts/setup-env-files.js
new file mode 100644
index 000000000..908a6e6d9
--- /dev/null
+++ b/scripts/setup-env-files.js
@@ -0,0 +1,31 @@
+/* eslint-disable no-console */
+const fs = require('fs');
+
+(async () => {
+ const appsEnvInSrc = ['api', 'queue-manager'];
+ const appsEnvInRoot = ['widget-demo', 'widget'];
+
+ console.log('----------------------------------------');
+ console.log('Pre-populating .env files from .example.env');
+
+ for (const app of appsEnvInSrc) {
+ const exists = fs.existsSync(`${__dirname}/../apps/${app}/src/.env`);
+
+ if (!exists) {
+ console.log(`Populating ${app} with .env file`);
+ fs.copyFileSync(`${__dirname}/../apps/${app}/src/.example.env`, `${__dirname}/../apps/${app}/src/.env`);
+ }
+ }
+
+ for (const app of appsEnvInRoot) {
+ const exists = fs.existsSync(`${__dirname}/../apps/${app}/.env`);
+
+ if (!exists) {
+ console.log(`Populating ${app} with .env file`);
+ fs.copyFileSync(`${__dirname}/../apps/${app}/.example.env`, `${__dirname}/../apps/${app}/.env`);
+ }
+ }
+
+ console.log('Finished populating .env files');
+ console.log('----------------------------------------');
+})();
diff --git a/tsconfig.base.json b/tsconfig.base.json
new file mode 100644
index 000000000..6f67ed625
--- /dev/null
+++ b/tsconfig.base.json
@@ -0,0 +1,22 @@
+{
+ "compilerOptions": {
+ "strictNullChecks": false,
+ "declaration": true,
+ "noImplicitAny": false,
+ "esModuleInterop": true,
+ "downlevelIteration": true,
+ "removeComments": true,
+ "allowSyntheticDefaultImports": true,
+ "emitDecoratorMetadata": true,
+ "experimentalDecorators": true,
+ "suppressImplicitAnyIndexErrors": true,
+ "lib": ["es2015", "dom"],
+ "target": "es5",
+ "typeRoots": ["./node_modules/@types"],
+ "moduleResolution": "node",
+ "strictPropertyInitialization": false,
+ "resolveJsonModule": true,
+ "declarationMap": true,
+ "skipLibCheck": true
+ }
+}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 000000000..3fa98b0d1
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "./tsconfig.base.json",
+ "compilerOptions": {
+ "moduleResolution": "node",
+ "baseUrl": ".",
+ "paths": {
+ }
+ },
+ "types": [
+ "node"
+ ]
+}